Skip to content

Commit

Permalink
refactor: tracker core service only needs the core config
Browse files Browse the repository at this point in the history
  • Loading branch information
josecelano committed May 10, 2024
1 parent 014ca38 commit ae77ebc
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 31 deletions.
21 changes: 11 additions & 10 deletions src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,8 @@ use derive_more::Constructor;
use log::debug;
use tokio::sync::mpsc::error::SendError;
use torrust_tracker_clock::clock::Time;
use torrust_tracker_configuration::{AnnouncePolicy, Configuration, TrackerPolicy, TORRENT_PEERS_LIMIT};
use torrust_tracker_configuration::v1::core::Core;
use torrust_tracker_configuration::{AnnouncePolicy, TrackerPolicy, TORRENT_PEERS_LIMIT};
use torrust_tracker_primitives::info_hash::InfoHash;
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
use torrust_tracker_primitives::torrent_metrics::TorrentsMetrics;
Expand Down Expand Up @@ -540,31 +541,31 @@ impl Tracker {
///
/// Will return a `databases::error::Error` if unable to connect to database. The `Tracker` is responsible for the persistence.
pub fn new(
config: &Configuration,
config: &Core,
stats_event_sender: Option<Box<dyn statistics::EventSender>>,
stats_repository: statistics::Repo,
) -> Result<Tracker, databases::error::Error> {
let database = Arc::new(databases::driver::build(&config.core.db_driver, &config.core.db_path)?);
let database = Arc::new(databases::driver::build(&config.db_driver, &config.db_path)?);

let mode = config.core.mode;
let mode = config.mode;

Ok(Tracker {
//config,
announce_policy: AnnouncePolicy::new(config.core.announce_interval, config.core.min_announce_interval),
announce_policy: AnnouncePolicy::new(config.announce_interval, config.min_announce_interval),
mode,
keys: tokio::sync::RwLock::new(std::collections::HashMap::new()),
whitelist: tokio::sync::RwLock::new(std::collections::HashSet::new()),
torrents: Arc::default(),
stats_event_sender,
stats_repository,
database,
external_ip: config.get_ext_ip(),
external_ip: config.external_ip,
policy: TrackerPolicy::new(
config.core.remove_peerless_torrents,
config.core.max_peer_timeout,
config.core.persistent_torrent_completed_stat,
config.remove_peerless_torrents,
config.max_peer_timeout,
config.persistent_torrent_completed_stat,
),
on_reverse_proxy: config.core.on_reverse_proxy,
on_reverse_proxy: config.on_reverse_proxy,
})
}

Expand Down
2 changes: 1 addition & 1 deletion src/core/services/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ pub fn tracker_factory(config: &Configuration) -> Tracker {
let (stats_event_sender, stats_repository) = statistics::setup::factory(config.core.tracker_usage_statistics);

// Initialize Torrust tracker
match Tracker::new(&Arc::new(config), stats_event_sender, stats_repository) {
match Tracker::new(&Arc::new(config).core, stats_event_sender, stats_repository) {
Ok(tracker) => tracker,
Err(error) => {
panic!("{}", error)
Expand Down
22 changes: 17 additions & 5 deletions src/servers/http/v1/services/announce.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let mut peer = sample_peer_using_ipv4();

Expand All @@ -149,7 +155,7 @@ mod tests {
0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969,
)));

Tracker::new(&configuration, Some(stats_event_sender), statistics::Repo::new()).unwrap()
Tracker::new(&configuration.core, Some(stats_event_sender), statistics::Repo::new()).unwrap()
}

fn peer_with_the_ipv4_loopback_ip() -> peer::Peer {
Expand Down Expand Up @@ -194,8 +200,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let mut peer = sample_peer_using_ipv6();

Expand Down
40 changes: 32 additions & 8 deletions src/servers/http/v1/services/scrape.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let peer_ip = IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1));

Expand All @@ -164,8 +170,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let peer_ip = IpAddr::V6(Ipv6Addr::new(0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969));

Expand Down Expand Up @@ -217,8 +229,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let peer_ip = IpAddr::V4(Ipv4Addr::new(126, 0, 0, 1));

Expand All @@ -235,8 +253,14 @@ mod tests {
.returning(|_| Box::pin(future::ready(Some(Ok(())))));
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker =
Arc::new(Tracker::new(&configuration::ephemeral(), Some(stats_event_sender), statistics::Repo::new()).unwrap());
let tracker = Arc::new(
Tracker::new(
&configuration::ephemeral().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let peer_ip = IpAddr::V6(Ipv6Addr::new(0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969, 0x6969));

Expand Down
44 changes: 37 additions & 7 deletions src/servers/udp/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,12 @@ mod tests {
let client_socket_address = sample_ipv4_socket_address();

let torrent_tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);
handle_connect(client_socket_address, &sample_connect_request(), &torrent_tracker)
.await
Expand All @@ -524,7 +529,12 @@ mod tests {
let stats_event_sender = Box::new(stats_event_sender_mock);

let torrent_tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);
handle_connect(sample_ipv6_remote_addr(), &sample_connect_request(), &torrent_tracker)
.await
Expand Down Expand Up @@ -768,7 +778,12 @@ mod tests {
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

handle_announce(
Expand Down Expand Up @@ -997,7 +1012,12 @@ mod tests {
let stats_event_sender = Box::new(stats_event_sender_mock);

let tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

let remote_addr = sample_ipv6_remote_addr();
Expand Down Expand Up @@ -1027,7 +1047,7 @@ mod tests {
let configuration = Arc::new(TrackerConfigurationBuilder::default().with_external_ip("::126.0.0.1").into());
let (stats_event_sender, stats_repository) = Keeper::new_active_instance();
let tracker =
Arc::new(core::Tracker::new(&configuration, Some(stats_event_sender), stats_repository).unwrap());
Arc::new(core::Tracker::new(&configuration.core, Some(stats_event_sender), stats_repository).unwrap());

let loopback_ipv4 = Ipv4Addr::new(127, 0, 0, 1);
let loopback_ipv6 = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1);
Expand Down Expand Up @@ -1305,7 +1325,12 @@ mod tests {

let remote_addr = sample_ipv4_remote_addr();
let tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

handle_scrape(remote_addr, &sample_scrape_request(&remote_addr), &tracker)
Expand Down Expand Up @@ -1337,7 +1362,12 @@ mod tests {

let remote_addr = sample_ipv6_remote_addr();
let tracker = Arc::new(
core::Tracker::new(&tracker_configuration(), Some(stats_event_sender), statistics::Repo::new()).unwrap(),
core::Tracker::new(
&tracker_configuration().core,
Some(stats_event_sender),
statistics::Repo::new(),
)
.unwrap(),
);

handle_scrape(remote_addr, &sample_scrape_request(&remote_addr), &tracker)
Expand Down

0 comments on commit ae77ebc

Please sign in to comment.