Skip to content

Commit

Permalink
refactor: [#1182] remove duplicate code
Browse files Browse the repository at this point in the history
  • Loading branch information
josecelano committed Jan 15, 2025
1 parent 658d2be commit 882af33
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 74 deletions.
12 changes: 10 additions & 2 deletions src/bootstrap/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ use tracing::instrument;

use super::config::initialize_configuration;
use crate::bootstrap;
use crate::core::databases::Database;
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::core::whitelist::WhiteListManager;
use crate::core::Tracker;
use crate::servers::udp::server::banning::BanService;
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
Expand Down Expand Up @@ -105,11 +107,17 @@ pub fn initialize_static() {
#[must_use]
#[instrument(skip(config))]
pub fn initialize_tracker(config: &Configuration) -> Tracker {
let database = initialize_database(config);
let (database, whitelist_manager) = initialize_tracker_dependencies(config);

tracker_factory(config, &database, &whitelist_manager)
}

#[must_use]
pub fn initialize_tracker_dependencies(config: &Configuration) -> (Arc<Box<dyn Database>>, Arc<WhiteListManager>) {
let database = initialize_database(config);
let whitelist_manager = initialize_whitelist(database.clone());

tracker_factory(config, &database, &whitelist_manager)
(database, whitelist_manager)
}

/// It initializes the log threshold, format and channel.
Expand Down
15 changes: 6 additions & 9 deletions src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1153,36 +1153,33 @@ mod tests {
use torrust_tracker_primitives::DurationSinceUnixEpoch;
use torrust_tracker_test_helpers::configuration;

use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::peer::Peer;
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::core::services::tracker_factory;
use crate::core::{TorrentsMetrics, Tracker};

fn public_tracker() -> Tracker {
let config = configuration::ephemeral_public();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn private_tracker() -> Tracker {
let config = configuration::ephemeral_private();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn whitelisted_tracker() -> Tracker {
let config = configuration::ephemeral_listed();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

pub fn tracker_persisting_torrents_in_database() -> Tracker {
let mut config = configuration::ephemeral_listed();
config.core.tracker_policy.persistent_torrent_completed_stat = true;
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

Expand Down
6 changes: 3 additions & 3 deletions src/core/services/statistics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,10 @@ mod tests {
use torrust_tracker_primitives::torrent_metrics::TorrentsMetrics;
use torrust_tracker_test_helpers::configuration;

use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core;
use crate::core::services::statistics::{get_metrics, TrackerMetrics};
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::core::services::tracker_factory;
use crate::servers::udp::server::banning::BanService;
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;

Expand All @@ -125,8 +126,7 @@ mod tests {
#[tokio::test]
async fn the_statistics_service_should_return_the_tracker_metrics() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&tracker_configuration(), &database, &whitelist_manager));
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));

Expand Down
27 changes: 11 additions & 16 deletions src/core/services/torrent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,10 @@ mod tests {
use torrust_tracker_configuration::Configuration;
use torrust_tracker_test_helpers::configuration;

use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::torrent::tests::sample_peer;
use crate::core::services::torrent::{get_torrent_info, Info};
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::core::services::tracker_factory;

pub fn tracker_configuration() -> Configuration {
configuration::ephemeral()
Expand All @@ -140,8 +141,7 @@ mod tests {
#[tokio::test]
async fn should_return_none_if_the_tracker_does_not_have_the_torrent() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let torrent_info = get_torrent_info(
Expand All @@ -156,8 +156,7 @@ mod tests {
#[tokio::test]
async fn should_return_the_torrent_info_if_the_tracker_has_the_torrent() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let hash = "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d".to_owned();
Expand Down Expand Up @@ -188,9 +187,10 @@ mod tests {
use torrust_tracker_configuration::Configuration;
use torrust_tracker_test_helpers::configuration;

use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::torrent::tests::sample_peer;
use crate::core::services::torrent::{get_torrents_page, BasicInfo, Pagination};
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::core::services::tracker_factory;

pub fn tracker_configuration() -> Configuration {
configuration::ephemeral()
Expand All @@ -199,8 +199,7 @@ mod tests {
#[tokio::test]
async fn should_return_an_empty_result_if_the_tracker_does_not_have_any_torrent() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let torrents = get_torrents_page(tracker.clone(), Some(&Pagination::default())).await;
Expand All @@ -211,8 +210,7 @@ mod tests {
#[tokio::test]
async fn should_return_a_summarized_info_for_all_torrents() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let hash = "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d".to_owned();
Expand All @@ -236,8 +234,7 @@ mod tests {
#[tokio::test]
async fn should_allow_limiting_the_number_of_torrents_in_the_result() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let hash1 = "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d".to_owned();
Expand All @@ -259,8 +256,7 @@ mod tests {
#[tokio::test]
async fn should_allow_using_pagination_in_the_result() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let hash1 = "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d".to_owned();
Expand Down Expand Up @@ -291,8 +287,7 @@ mod tests {
#[tokio::test]
async fn should_return_torrents_ordered_by_info_hash() {
let config = tracker_configuration();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let tracker = Arc::new(tracker_factory(&config, &database, &whitelist_manager));

let hash1 = "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d".to_owned();
Expand Down
15 changes: 6 additions & 9 deletions src/servers/http/v1/handlers/announce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,34 +185,31 @@ mod tests {
use bittorrent_primitives::info_hash::InfoHash;
use torrust_tracker_test_helpers::configuration;

use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::tracker_factory;
use crate::core::Tracker;

fn private_tracker() -> Tracker {
let config = configuration::ephemeral_private();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn whitelisted_tracker() -> Tracker {
let config = configuration::ephemeral_listed();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn tracker_on_reverse_proxy() -> Tracker {
let config = configuration::ephemeral_with_reverse_proxy();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn tracker_not_on_reverse_proxy() -> Tracker {
let config = configuration::ephemeral_without_reverse_proxy();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

Expand Down
15 changes: 6 additions & 9 deletions src/servers/http/v1/handlers/scrape.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,34 +121,31 @@ mod tests {
use bittorrent_primitives::info_hash::InfoHash;
use torrust_tracker_test_helpers::configuration;

use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::tracker_factory;
use crate::core::Tracker;

fn private_tracker() -> Tracker {
let config = configuration::ephemeral_private();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn whitelisted_tracker() -> Tracker {
let config = configuration::ephemeral_listed();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn tracker_on_reverse_proxy() -> Tracker {
let config = configuration::ephemeral_with_reverse_proxy();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

fn tracker_not_on_reverse_proxy() -> Tracker {
let config = configuration::ephemeral_without_reverse_proxy();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

Expand Down
12 changes: 5 additions & 7 deletions src/servers/http/v1/services/announce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ mod tests {
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use torrust_tracker_test_helpers::configuration;

use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::tracker_factory;
use crate::core::Tracker;

fn public_tracker() -> Tracker {
let config = configuration::ephemeral_public();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

Expand Down Expand Up @@ -110,17 +110,15 @@ mod tests {
use torrust_tracker_test_helpers::configuration;

use super::{sample_peer_using_ipv4, sample_peer_using_ipv6};
use crate::core::services::{initialize_database, initialize_whitelist};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::{statistics, PeersWanted, Tracker};
use crate::servers::http::v1::services::announce::invoke;
use crate::servers::http::v1::services::announce::tests::{public_tracker, sample_info_hash, sample_peer};

fn test_tracker_factory(stats_event_sender: Option<Box<dyn statistics::event::sender::Sender>>) -> Tracker {
let config = configuration::ephemeral();

let database = initialize_database(&config);

let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);

Tracker::new(
&config.core,
Expand Down
10 changes: 4 additions & 6 deletions src/servers/http/v1/services/scrape.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ mod tests {
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
use torrust_tracker_test_helpers::configuration;

use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::tracker_factory;
use crate::core::{statistics, Tracker};

fn public_tracker() -> Tracker {
let config = configuration::ephemeral_public();
let database = initialize_database(&config);
let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
tracker_factory(&config, &database, &whitelist_manager)
}

Expand All @@ -100,9 +100,7 @@ mod tests {
fn test_tracker_factory(stats_event_sender: Option<Box<dyn statistics::event::sender::Sender>>) -> Tracker {
let config = configuration::ephemeral();

let database = initialize_database(&config);

let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);

Tracker::new(
&config.core,
Expand Down
23 changes: 10 additions & 13 deletions src/servers/udp/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,8 @@ mod tests {
use torrust_tracker_test_helpers::configuration;

use super::gen_remote_fingerprint;
use crate::core::services::{initialize_database, initialize_whitelist, tracker_factory};
use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core::services::tracker_factory;
use crate::core::{statistics, Tracker};
use crate::CurrentClock;

Expand All @@ -455,10 +456,9 @@ mod tests {
initialized_tracker(&configuration::ephemeral_listed())
}

fn initialized_tracker(configuration: &Configuration) -> Arc<Tracker> {
let database = initialize_database(configuration);
let whitelist_manager = initialize_whitelist(database.clone());
tracker_factory(configuration, &database, &whitelist_manager).into()
fn initialized_tracker(config: &Configuration) -> Arc<Tracker> {
let (database, whitelist_manager) = initialize_tracker_dependencies(config);
tracker_factory(config, &database, &whitelist_manager).into()
}

fn sample_ipv4_remote_addr() -> SocketAddr {
Expand Down Expand Up @@ -558,9 +558,7 @@ mod tests {
fn test_tracker_factory(stats_event_sender: Option<Box<dyn statistics::event::sender::Sender>>) -> Tracker {
let config = tracker_configuration();

let database = initialize_database(&config);

let whitelist_manager = initialize_whitelist(database.clone());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);

Tracker::new(
&config.core,
Expand Down Expand Up @@ -1190,8 +1188,8 @@ mod tests {

use aquatic_udp_protocol::{InfoHash as AquaticInfoHash, PeerId as AquaticPeerId};

use crate::bootstrap::app::initialize_tracker_dependencies;
use crate::core;
use crate::core::services::{initialize_database, initialize_whitelist};
use crate::core::statistics::keeper::Keeper;
use crate::servers::udp::connection_cookie::make;
use crate::servers::udp::handlers::handle_announce;
Expand All @@ -1202,14 +1200,13 @@ mod tests {

#[tokio::test]
async fn the_peer_ip_should_be_changed_to_the_external_ip_in_the_tracker_configuration() {
let configuration = Arc::new(TrackerConfigurationBuilder::default().with_external_ip("::126.0.0.1").into());
let database = initialize_database(&configuration);
let whitelist_manager = initialize_whitelist(database.clone());
let config = Arc::new(TrackerConfigurationBuilder::default().with_external_ip("::126.0.0.1").into());
let (database, whitelist_manager) = initialize_tracker_dependencies(&config);
let (stats_event_sender, stats_repository) = Keeper::new_active_instance();

let tracker = Arc::new(
core::Tracker::new(
&configuration.core,
&config.core,
&database,
&whitelist_manager,
Some(stats_event_sender),
Expand Down

0 comments on commit 882af33

Please sign in to comment.