Skip to content

Commit a4d8da0

Browse files
committed
refactor: [torrust#1187] inline fn initialize_tracker
1 parent 36db088 commit a4d8da0

File tree

9 files changed

+53
-45
lines changed

9 files changed

+53
-45
lines changed

src/bootstrap/app.rs

+3-16
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ use crate::container::AppContainer;
2525
use crate::core::databases::Database;
2626
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
2727
use crate::core::whitelist::WhiteListManager;
28-
use crate::core::Tracker;
2928
use crate::servers::udp::server::banning::BanService;
3029
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
3130
use crate::shared::crypto::ephemeral_instance_keys;
@@ -82,10 +81,10 @@ pub fn initialize_app_container(configuration: &Configuration) -> AppContainer {
8281
let (stats_event_sender, stats_repository) = statistics::setup::factory(configuration.core.tracker_usage_statistics);
8382
let stats_event_sender = Arc::new(stats_event_sender);
8483
let stats_repository = Arc::new(stats_repository);
85-
8684
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
87-
88-
let tracker = Arc::new(initialize_tracker(configuration));
85+
let database = initialize_database(configuration);
86+
let whitelist_manager = initialize_whitelist(database.clone());
87+
let tracker = Arc::new(tracker_factory(configuration, &database, &whitelist_manager));
8988

9089
AppContainer {
9190
tracker,
@@ -116,18 +115,6 @@ pub fn initialize_static() {
116115
lazy_static::initialize(&ephemeral_instance_keys::ZEROED_TEST_CIPHER_BLOWFISH);
117116
}
118117

119-
/// It builds the domain tracker
120-
///
121-
/// The tracker is the domain layer service. It's the entrypoint to make requests to the domain layer.
122-
/// It's used by other higher-level components like the UDP and HTTP trackers or the tracker API.
123-
#[must_use]
124-
#[instrument(skip(config))]
125-
pub fn initialize_tracker(config: &Configuration) -> Tracker {
126-
let (database, whitelist_manager) = initialize_tracker_dependencies(config);
127-
128-
tracker_factory(config, &database, &whitelist_manager)
129-
}
130-
131118
#[allow(clippy::type_complexity)]
132119
#[must_use]
133120
pub fn initialize_tracker_dependencies(config: &Configuration) -> (Arc<Box<dyn Database>>, Arc<WhiteListManager>) {

src/bootstrap/jobs/http_tracker.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ mod tests {
8686

8787
use torrust_tracker_test_helpers::configuration::ephemeral_public;
8888

89-
use crate::bootstrap::app::{initialize_global_services, initialize_tracker};
89+
use crate::bootstrap::app::initialize_global_services;
9090
use crate::bootstrap::jobs::http_tracker::start_job;
91-
use crate::core::services::statistics;
91+
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
9292
use crate::servers::http::Version;
9393
use crate::servers::registar::Registar;
9494

@@ -102,7 +102,10 @@ mod tests {
102102
let stats_event_sender = Arc::new(stats_event_sender);
103103

104104
initialize_global_services(&cfg);
105-
let tracker = Arc::new(initialize_tracker(&cfg));
105+
106+
let database = initialize_database(&cfg);
107+
let whitelist_manager = initialize_whitelist(database.clone());
108+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
106109

107110
let version = Version::V1;
108111

src/bootstrap/jobs/tracker_apis.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ mod tests {
140140
use tokio::sync::RwLock;
141141
use torrust_tracker_test_helpers::configuration::ephemeral_public;
142142

143-
use crate::bootstrap::app::{initialize_global_services, initialize_tracker};
143+
use crate::bootstrap::app::initialize_global_services;
144144
use crate::bootstrap::jobs::tracker_apis::start_job;
145-
use crate::core::services::statistics;
145+
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
146146
use crate::servers::apis::Version;
147147
use crate::servers::registar::Registar;
148148
use crate::servers::udp::server::banning::BanService;
@@ -159,7 +159,10 @@ mod tests {
159159
let stats_repository = Arc::new(stats_repository);
160160

161161
initialize_global_services(&cfg);
162-
let tracker = Arc::new(initialize_tracker(&cfg));
162+
163+
let database = initialize_database(&cfg);
164+
let whitelist_manager = initialize_whitelist(database.clone());
165+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
163166

164167
let version = Version::V1;
165168

src/servers/apis/server.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,9 @@ mod tests {
333333
use tokio::sync::RwLock;
334334
use torrust_tracker_test_helpers::configuration::ephemeral_public;
335335

336-
use crate::bootstrap::app::{initialize_global_services, initialize_tracker};
336+
use crate::bootstrap::app::initialize_global_services;
337337
use crate::bootstrap::jobs::make_rust_tls;
338-
use crate::core::services::statistics;
338+
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
339339
use crate::servers::apis::server::{ApiServer, Launcher};
340340
use crate::servers::registar::Registar;
341341
use crate::servers::udp::server::banning::BanService;
@@ -352,7 +352,10 @@ mod tests {
352352
let stats_repository = Arc::new(stats_repository);
353353

354354
initialize_global_services(&cfg);
355-
let tracker = Arc::new(initialize_tracker(&cfg));
355+
356+
let database = initialize_database(&cfg);
357+
let whitelist_manager = initialize_whitelist(database.clone());
358+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
356359

357360
let bind_to = config.bind_address;
358361

src/servers/http/server.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,9 @@ mod tests {
242242

243243
use torrust_tracker_test_helpers::configuration::ephemeral_public;
244244

245-
use crate::bootstrap::app::{initialize_global_services, initialize_tracker};
245+
use crate::bootstrap::app::initialize_global_services;
246246
use crate::bootstrap::jobs::make_rust_tls;
247-
use crate::core::services::statistics;
247+
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
248248
use crate::servers::http::server::{HttpServer, Launcher};
249249
use crate::servers::registar::Registar;
250250

@@ -256,7 +256,10 @@ mod tests {
256256
let stats_event_sender = Arc::new(stats_event_sender);
257257

258258
initialize_global_services(&cfg);
259-
let tracker = Arc::new(initialize_tracker(&cfg));
259+
260+
let database = initialize_database(&cfg);
261+
let whitelist_manager = initialize_whitelist(database.clone());
262+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
260263

261264
let http_trackers = cfg.http_trackers.clone().expect("missing HTTP trackers configuration");
262265
let config = &http_trackers[0];

src/servers/udp/server/mod.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ mod tests {
6363

6464
use super::spawner::Spawner;
6565
use super::Server;
66-
use crate::bootstrap::app::{initialize_global_services, initialize_tracker};
67-
use crate::core::services::statistics;
66+
use crate::bootstrap::app::initialize_global_services;
67+
use crate::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
6868
use crate::servers::registar::Registar;
6969
use crate::servers::udp::server::banning::BanService;
7070
use crate::servers::udp::server::launcher::MAX_CONNECTION_ID_ERRORS_PER_IP;
@@ -78,7 +78,10 @@ mod tests {
7878
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
7979

8080
initialize_global_services(&cfg);
81-
let tracker = Arc::new(initialize_tracker(&cfg));
81+
82+
let database = initialize_database(&cfg);
83+
let whitelist_manager = initialize_whitelist(database.clone());
84+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
8285

8386
let udp_trackers = cfg.udp_trackers.clone().expect("missing UDP trackers configuration");
8487
let config = &udp_trackers[0];
@@ -114,7 +117,10 @@ mod tests {
114117
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
115118

116119
initialize_global_services(&cfg);
117-
let tracker = Arc::new(initialize_tracker(&cfg));
120+
121+
let database = initialize_database(&cfg);
122+
let whitelist_manager = initialize_whitelist(database.clone());
123+
let tracker = Arc::new(tracker_factory(&cfg, &database, &whitelist_manager));
118124

119125
let config = &cfg.udp_trackers.as_ref().unwrap().first().unwrap();
120126
let bind_to = config.bind_address;

tests/servers/api/environment.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ use futures::executor::block_on;
66
use tokio::sync::RwLock;
77
use torrust_tracker_api_client::connection_info::{ConnectionInfo, Origin};
88
use torrust_tracker_configuration::{Configuration, HttpApi};
9-
use torrust_tracker_lib::bootstrap::app::{initialize_global_services, initialize_tracker};
9+
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
1010
use torrust_tracker_lib::bootstrap::jobs::make_rust_tls;
11-
use torrust_tracker_lib::core::services::statistics;
11+
use torrust_tracker_lib::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
1212
use torrust_tracker_lib::core::statistics::event::sender::Sender;
1313
use torrust_tracker_lib::core::statistics::repository::Repository;
1414
use torrust_tracker_lib::core::whitelist::WhiteListManager;
@@ -51,10 +51,10 @@ impl Environment<Stopped> {
5151
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
5252

5353
initialize_global_services(configuration);
54-
let tracker = Arc::new(initialize_tracker(configuration));
5554

56-
// todo: instantiate outside of `initialize_tracker_dependencies`
57-
let whitelist_manager = tracker.whitelist_manager.clone();
55+
let database = initialize_database(configuration);
56+
let whitelist_manager = initialize_whitelist(database.clone());
57+
let tracker = Arc::new(tracker_factory(configuration, &database, &whitelist_manager));
5858

5959
let config = Arc::new(configuration.http_api.clone().expect("missing API configuration"));
6060

tests/servers/http/environment.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use std::sync::Arc;
33
use bittorrent_primitives::info_hash::InfoHash;
44
use futures::executor::block_on;
55
use torrust_tracker_configuration::{Configuration, HttpTracker};
6-
use torrust_tracker_lib::bootstrap::app::{initialize_global_services, initialize_tracker};
6+
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
77
use torrust_tracker_lib::bootstrap::jobs::make_rust_tls;
8-
use torrust_tracker_lib::core::services::statistics;
8+
use torrust_tracker_lib::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
99
use torrust_tracker_lib::core::statistics::event::sender::Sender;
1010
use torrust_tracker_lib::core::statistics::repository::Repository;
1111
use torrust_tracker_lib::core::whitelist::WhiteListManager;
@@ -39,10 +39,10 @@ impl Environment<Stopped> {
3939
let stats_repository = Arc::new(stats_repository);
4040

4141
initialize_global_services(configuration);
42-
let tracker = Arc::new(initialize_tracker(configuration));
4342

44-
// todo: instantiate outside of `initialize_tracker_dependencies`
45-
let whitelist_manager = tracker.whitelist_manager.clone();
43+
let database = initialize_database(configuration);
44+
let whitelist_manager = initialize_whitelist(database.clone());
45+
let tracker = Arc::new(tracker_factory(configuration, &database, &whitelist_manager));
4646

4747
let http_tracker = configuration
4848
.http_trackers

tests/servers/udp/environment.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use std::sync::Arc;
44
use bittorrent_primitives::info_hash::InfoHash;
55
use tokio::sync::RwLock;
66
use torrust_tracker_configuration::{Configuration, UdpTracker, DEFAULT_TIMEOUT};
7-
use torrust_tracker_lib::bootstrap::app::{initialize_global_services, initialize_tracker};
8-
use torrust_tracker_lib::core::services::statistics;
7+
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
8+
use torrust_tracker_lib::core::services::{initialize_database, initialize_whitelist, statistics, tracker_factory};
99
use torrust_tracker_lib::core::statistics::event::sender::Sender;
1010
use torrust_tracker_lib::core::statistics::repository::Repository;
1111
use torrust_tracker_lib::core::Tracker;
@@ -50,7 +50,10 @@ impl Environment<Stopped> {
5050
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
5151

5252
initialize_global_services(configuration);
53-
let tracker = Arc::new(initialize_tracker(configuration));
53+
54+
let database = initialize_database(configuration);
55+
let whitelist_manager = initialize_whitelist(database.clone());
56+
let tracker = Arc::new(tracker_factory(configuration, &database, &whitelist_manager));
5457

5558
let udp_tracker = configuration.udp_trackers.clone().expect("missing UDP tracker configuration");
5659

0 commit comments

Comments
 (0)