Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhaul core Tracker: extract IoC Container #1188

Prev Previous commit
Next Next commit
refactor: [#1187] extract one function and rename another one
josecelano committed Jan 17, 2025

Verified

This commit was signed with the committer’s verified signature.
badai-nguyen badai nguyen
commit 747b58d88c7496c7eafbd135d07b524079aa65ec
12 changes: 9 additions & 3 deletions src/bootstrap/app.rs
Original file line number Diff line number Diff line change
@@ -56,7 +56,7 @@ pub fn setup() -> (Configuration, AppContainer) {

let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));

let tracker = initialize_with_configuration(&configuration);
let tracker = initialize_globals_and_tracker(&configuration);

tracing::info!("Configuration:\n{}", configuration.clone().mask_secrets().to_json());

@@ -88,10 +88,16 @@ pub fn check_seed() {
/// The configuration may be obtained from the environment (via config file or env vars).
#[must_use]
#[instrument(skip())]
pub fn initialize_with_configuration(configuration: &Configuration) -> Arc<Tracker> {
pub fn initialize_globals_and_tracker(configuration: &Configuration) -> Arc<Tracker> {
initialize_global_services(configuration);
Arc::new(initialize_tracker(configuration))
}

/// It initializes the global services.
#[instrument(skip())]
pub fn initialize_global_services(configuration: &Configuration) {
initialize_static();
initialize_logging(configuration);
Arc::new(initialize_tracker(configuration))
}

/// It initializes the application static values.
4 changes: 2 additions & 2 deletions src/bootstrap/jobs/http_tracker.rs
Original file line number Diff line number Diff line change
@@ -86,7 +86,7 @@ mod tests {

use torrust_tracker_test_helpers::configuration::ephemeral_public;

use crate::bootstrap::app::initialize_with_configuration;
use crate::bootstrap::app::initialize_globals_and_tracker;
use crate::bootstrap::jobs::http_tracker::start_job;
use crate::core::services::statistics;
use crate::servers::http::Version;
@@ -99,7 +99,7 @@ mod tests {
let config = &http_tracker[0];
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
let stats_event_sender = Arc::new(stats_event_sender);
let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);
let version = Version::V1;

start_job(config, tracker, stats_event_sender, Registar::default().give_form(), version)
4 changes: 2 additions & 2 deletions src/bootstrap/jobs/tracker_apis.rs
Original file line number Diff line number Diff line change
@@ -140,7 +140,7 @@ mod tests {
use tokio::sync::RwLock;
use torrust_tracker_test_helpers::configuration::ephemeral_public;

use crate::bootstrap::app::initialize_with_configuration;
use crate::bootstrap::app::initialize_globals_and_tracker;
use crate::bootstrap::jobs::tracker_apis::start_job;
use crate::core::services::statistics;
use crate::servers::apis::Version;
@@ -158,7 +158,7 @@ mod tests {
let stats_event_sender = Arc::new(stats_event_sender);
let stats_repository = Arc::new(stats_repository);

let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);

let version = Version::V1;

4 changes: 2 additions & 2 deletions src/servers/apis/server.rs
Original file line number Diff line number Diff line change
@@ -333,7 +333,7 @@ mod tests {
use tokio::sync::RwLock;
use torrust_tracker_test_helpers::configuration::ephemeral_public;

use crate::bootstrap::app::initialize_with_configuration;
use crate::bootstrap::app::initialize_globals_and_tracker;
use crate::bootstrap::jobs::make_rust_tls;
use crate::core::services::statistics;
use crate::servers::apis::server::{ApiServer, Launcher};
@@ -350,7 +350,7 @@ mod tests {
let (stats_event_sender, stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
let stats_event_sender = Arc::new(stats_event_sender);
let stats_repository = Arc::new(stats_repository);
let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);

let bind_to = config.bind_address;

4 changes: 2 additions & 2 deletions src/servers/http/server.rs
Original file line number Diff line number Diff line change
@@ -242,7 +242,7 @@ mod tests {

use torrust_tracker_test_helpers::configuration::ephemeral_public;

use crate::bootstrap::app::initialize_with_configuration;
use crate::bootstrap::app::initialize_globals_and_tracker;
use crate::bootstrap::jobs::make_rust_tls;
use crate::core::services::statistics;
use crate::servers::http::server::{HttpServer, Launcher};
@@ -254,7 +254,7 @@ mod tests {

let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
let stats_event_sender = Arc::new(stats_event_sender);
let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);

let http_trackers = cfg.http_trackers.clone().expect("missing HTTP trackers configuration");
let config = &http_trackers[0];
6 changes: 3 additions & 3 deletions src/servers/udp/server/mod.rs
Original file line number Diff line number Diff line change
@@ -63,7 +63,7 @@ mod tests {

use super::spawner::Spawner;
use super::Server;
use crate::bootstrap::app::initialize_with_configuration;
use crate::bootstrap::app::initialize_globals_and_tracker;
use crate::core::services::statistics;
use crate::servers::registar::Registar;
use crate::servers::udp::server::banning::BanService;
@@ -76,7 +76,7 @@ mod tests {
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
let stats_event_sender = Arc::new(stats_event_sender);
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);

let udp_trackers = cfg.udp_trackers.clone().expect("missing UDP trackers configuration");
let config = &udp_trackers[0];
@@ -110,7 +110,7 @@ mod tests {
let (stats_event_sender, _stats_repository) = statistics::setup::factory(cfg.core.tracker_usage_statistics);
let stats_event_sender = Arc::new(stats_event_sender);
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
let tracker = initialize_with_configuration(&cfg);
let tracker = initialize_globals_and_tracker(&cfg);

let config = &cfg.udp_trackers.as_ref().unwrap().first().unwrap();
let bind_to = config.bind_address;
6 changes: 3 additions & 3 deletions tests/servers/api/environment.rs
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ use futures::executor::block_on;
use tokio::sync::RwLock;
use torrust_tracker_api_client::connection_info::{ConnectionInfo, Origin};
use torrust_tracker_configuration::{Configuration, HttpApi};
use torrust_tracker_lib::bootstrap::app::initialize_with_configuration;
use torrust_tracker_lib::bootstrap::app::initialize_globals_and_tracker;
use torrust_tracker_lib::bootstrap::jobs::make_rust_tls;
use torrust_tracker_lib::core::services::statistics;
use torrust_tracker_lib::core::statistics::event::sender::Sender;
@@ -50,9 +50,9 @@ impl Environment<Stopped> {
let stats_repository = Arc::new(stats_repository);
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));

let tracker = initialize_with_configuration(configuration);
let tracker = initialize_globals_and_tracker(configuration);

// todo: instantiate outside of `initialize_with_configuration`
// todo: instantiate outside of `initialize_globals_and_tracker`
let whitelist_manager = tracker.whitelist_manager.clone();

let config = Arc::new(configuration.http_api.clone().expect("missing API configuration"));
6 changes: 3 additions & 3 deletions tests/servers/http/environment.rs
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ use std::sync::Arc;
use bittorrent_primitives::info_hash::InfoHash;
use futures::executor::block_on;
use torrust_tracker_configuration::{Configuration, HttpTracker};
use torrust_tracker_lib::bootstrap::app::initialize_with_configuration;
use torrust_tracker_lib::bootstrap::app::initialize_globals_and_tracker;
use torrust_tracker_lib::bootstrap::jobs::make_rust_tls;
use torrust_tracker_lib::core::services::statistics;
use torrust_tracker_lib::core::statistics::event::sender::Sender;
@@ -38,9 +38,9 @@ impl Environment<Stopped> {
let stats_event_sender = Arc::new(stats_event_sender);
let stats_repository = Arc::new(stats_repository);

let tracker = initialize_with_configuration(configuration);
let tracker = initialize_globals_and_tracker(configuration);

// todo: instantiate outside of `initialize_with_configuration`
// todo: instantiate outside of `initialize_globals_and_tracker`
let whitelist_manager = tracker.whitelist_manager.clone();

let http_tracker = configuration
4 changes: 2 additions & 2 deletions tests/servers/udp/environment.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use std::sync::Arc;
use bittorrent_primitives::info_hash::InfoHash;
use tokio::sync::RwLock;
use torrust_tracker_configuration::{Configuration, UdpTracker, DEFAULT_TIMEOUT};
use torrust_tracker_lib::bootstrap::app::initialize_with_configuration;
use torrust_tracker_lib::bootstrap::app::initialize_globals_and_tracker;
use torrust_tracker_lib::core::services::statistics;
use torrust_tracker_lib::core::statistics::event::sender::Sender;
use torrust_tracker_lib::core::statistics::repository::Repository;
@@ -49,7 +49,7 @@ impl Environment<Stopped> {
let stats_repository = Arc::new(stats_repository);
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));

let tracker = initialize_with_configuration(configuration);
let tracker = initialize_globals_and_tracker(configuration);

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