Skip to content

Commit 8a682aa

Browse files
committed
Merge #1313: Refactor packages: changes needed to extract new packages (part 2)
d6e7a92 refactor: [#1311] initialize statics in each package (Jose Celano) 025f100 refactor: [#1311] move static initialization to the module where the static values are used (Jose Celano) Pull request description: Refactor packages: changes needed to extract new packages (part 2). ACKs for top commit: josecelano: ACK d6e7a92 Tree-SHA512: 02f7bfe0a54681a194843ac7195ae8ab054bbd0aa6ada3651bf8045a018f86dbbbbe1be04c56216bd7c371cc33cd59c21df31baaaec451dd8cc8936f5dcc161e
2 parents df4a59e + d6e7a92 commit 8a682aa

File tree

13 files changed

+104
-27
lines changed

13 files changed

+104
-27
lines changed

Cargo.lock

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ figment = "0"
5252
futures = "0"
5353
futures-util = "0"
5454
hyper = "1"
55-
lazy_static = "1"
5655
parking_lot = "0"
5756
percent-encoding = "2"
5857
r2d2 = "0"

packages/axum-http-tracker-server/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@ tower-http = { version = "0", features = ["compression-full", "cors", "propagate
3838
tracing = "0"
3939

4040
[dev-dependencies]
41+
torrust-tracker-clock = { version = "3.0.0-develop", path = "../clock" }
4142
torrust-tracker-test-helpers = { version = "3.0.0-develop", path = "../test-helpers" }

packages/axum-http-tracker-server/src/server.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ mod tests {
250250
use bittorrent_tracker_core::whitelist::repository::in_memory::InMemoryWhitelist;
251251
use torrust_axum_server::tsl::make_rust_tls;
252252
use torrust_server_lib::registar::Registar;
253-
use torrust_tracker_configuration::Configuration;
253+
use torrust_tracker_configuration::{logging, Configuration};
254254
use torrust_tracker_test_helpers::configuration::ephemeral_public;
255255

256256
use crate::server::{HttpServer, Launcher};
@@ -306,6 +306,15 @@ mod tests {
306306
}
307307
}
308308

309+
fn initialize_global_services(configuration: &Configuration) {
310+
initialize_static();
311+
logging::setup(&configuration.logging);
312+
}
313+
314+
fn initialize_static() {
315+
torrust_tracker_clock::initialize_static();
316+
}
317+
309318
#[tokio::test]
310319
async fn it_should_be_able_to_start_and_stop() {
311320
let configuration = Arc::new(ephemeral_public());
@@ -317,7 +326,7 @@ mod tests {
317326

318327
let http_tracker_config = &http_trackers[0];
319328

320-
//initialize_global_services(&cfg); // not needed for this test
329+
initialize_global_services(&configuration);
321330

322331
let http_tracker_container = Arc::new(initialize_container(&configuration));
323332

packages/clock/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ version.workspace = true
1818
[dependencies]
1919
chrono = { version = "0", default-features = false, features = ["clock"] }
2020
lazy_static = "1"
21+
tracing = "0"
2122

2223
torrust-tracker-primitives = { version = "3.0.0-develop", path = "../primitives" }
2324

packages/clock/src/lib.rs

+15-1
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,15 @@
2222
//! > **NOTICE**: the timestamp does not depend on the time zone. That gives you
2323
//! > the ability to use the clock regardless of the underlying system time zone
2424
//! > configuration. See [Unix time Wikipedia entry](https://en.wikipedia.org/wiki/Unix_time).
25-
2625
pub mod clock;
2726
pub mod conv;
2827
pub mod static_time;
2928

3029
#[macro_use]
3130
extern crate lazy_static;
3231

32+
use tracing::instrument;
33+
3334
/// This code needs to be copied into each crate.
3435
/// Working version, for production.
3536
#[cfg(not(test))]
@@ -40,3 +41,16 @@ pub(crate) type CurrentClock = clock::Working;
4041
#[cfg(test)]
4142
#[allow(dead_code)]
4243
pub(crate) type CurrentClock = clock::Stopped;
44+
45+
/// It initializes the application static values.
46+
///
47+
/// These values are accessible throughout the entire application:
48+
///
49+
/// - The time when the application started.
50+
/// - An ephemeral instance random seed. This seed is used for encryption and
51+
/// it's changed when the main application process is restarted.
52+
#[instrument(skip())]
53+
pub fn initialize_static() {
54+
// Set the time of Torrust app starting
55+
lazy_static::initialize(&static_time::TIME_AT_APP_START);
56+
}

packages/udp-tracker-core/src/lib.rs

+16
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ pub mod crypto;
44
pub mod services;
55
pub mod statistics;
66

7+
use crypto::ephemeral_instance_keys;
8+
use tracing::instrument;
9+
710
#[macro_use]
811
extern crate lazy_static;
912

@@ -12,3 +15,16 @@ extern crate lazy_static;
1215
pub const MAX_CONNECTION_ID_ERRORS_PER_IP: u32 = 10;
1316

1417
pub const UDP_TRACKER_LOG_TARGET: &str = "UDP TRACKER";
18+
19+
/// It initializes the static values.
20+
#[instrument(skip())]
21+
pub fn initialize_static() {
22+
// Initialize the Ephemeral Instance Random Seed
23+
lazy_static::initialize(&ephemeral_instance_keys::RANDOM_SEED);
24+
25+
// Initialize the Ephemeral Instance Random Cipher
26+
lazy_static::initialize(&ephemeral_instance_keys::RANDOM_CIPHER_BLOWFISH);
27+
28+
// Initialize the Zeroed Cipher
29+
lazy_static::initialize(&ephemeral_instance_keys::ZEROED_TEST_CIPHER_BLOWFISH);
30+
}

src/bootstrap/app.rs

+4-14
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
//! 2. Initialize static variables.
1212
//! 3. Initialize logging.
1313
//! 4. Initialize the domain tracker.
14-
use bittorrent_udp_tracker_core::crypto::ephemeral_instance_keys;
1514
use bittorrent_udp_tracker_core::crypto::keys::{self, Keeper as _};
16-
use torrust_tracker_clock::static_time;
1715
use torrust_tracker_configuration::validator::Validator;
1816
use torrust_tracker_configuration::{logging, Configuration};
1917
use tracing::instrument;
@@ -71,18 +69,10 @@ pub fn initialize_global_services(configuration: &Configuration) {
7169
/// These values are accessible throughout the entire application:
7270
///
7371
/// - The time when the application started.
74-
/// - An ephemeral instance random seed. This seed is used for encryption and it's changed when the main application process is restarted.
72+
/// - An ephemeral instance random seed. This seed is used for encryption and
73+
/// it's changed when the main application process is restarted.
7574
#[instrument(skip())]
7675
pub fn initialize_static() {
77-
// Set the time of Torrust app starting
78-
lazy_static::initialize(&static_time::TIME_AT_APP_START);
79-
80-
// Initialize the Ephemeral Instance Random Seed
81-
lazy_static::initialize(&ephemeral_instance_keys::RANDOM_SEED);
82-
83-
// Initialize the Ephemeral Instance Random Cipher
84-
lazy_static::initialize(&ephemeral_instance_keys::RANDOM_CIPHER_BLOWFISH);
85-
86-
// Initialize the Zeroed Cipher
87-
lazy_static::initialize(&ephemeral_instance_keys::ZEROED_TEST_CIPHER_BLOWFISH);
76+
torrust_tracker_clock::initialize_static();
77+
bittorrent_udp_tracker_core::initialize_static();
8878
}

src/servers/apis/server.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,21 @@ mod tests {
297297
use torrust_axum_server::tsl::make_rust_tls;
298298
use torrust_server_lib::registar::Registar;
299299
use torrust_tracker_api_core::container::TrackerHttpApiCoreContainer;
300+
use torrust_tracker_configuration::{logging, Configuration};
300301
use torrust_tracker_test_helpers::configuration::ephemeral_public;
301302

302-
use crate::bootstrap::app::initialize_global_services;
303303
use crate::servers::apis::server::{ApiServer, Launcher};
304304

305+
fn initialize_global_services(configuration: &Configuration) {
306+
initialize_static();
307+
logging::setup(&configuration.logging);
308+
}
309+
310+
fn initialize_static() {
311+
torrust_tracker_clock::initialize_static();
312+
bittorrent_udp_tracker_core::initialize_static();
313+
}
314+
305315
#[tokio::test]
306316
async fn it_should_be_able_to_start_and_stop() {
307317
let cfg = Arc::new(ephemeral_public());

src/servers/udp/server/mod.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,21 @@ mod tests {
5959

6060
use bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer;
6161
use torrust_server_lib::registar::Registar;
62+
use torrust_tracker_configuration::{logging, Configuration};
6263
use torrust_tracker_test_helpers::configuration::ephemeral_public;
6364

6465
use super::spawner::Spawner;
6566
use super::Server;
66-
use crate::bootstrap::app::initialize_global_services;
67+
68+
fn initialize_global_services(configuration: &Configuration) {
69+
initialize_static();
70+
logging::setup(&configuration.logging);
71+
}
72+
73+
fn initialize_static() {
74+
torrust_tracker_clock::initialize_static();
75+
bittorrent_udp_tracker_core::initialize_static();
76+
}
6777

6878
#[tokio::test]
6979
async fn it_should_be_able_to_start_and_stop() {

tests/servers/api/environment.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ use torrust_axum_server::tsl::make_rust_tls;
1010
use torrust_server_lib::registar::Registar;
1111
use torrust_tracker_api_client::connection_info::{ConnectionInfo, Origin};
1212
use torrust_tracker_api_core::container::TrackerHttpApiCoreContainer;
13-
use torrust_tracker_configuration::Configuration;
14-
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
13+
use torrust_tracker_configuration::{logging, Configuration};
1514
use torrust_tracker_lib::servers::apis::server::{ApiServer, Launcher, Running, Stopped};
1615
use torrust_tracker_primitives::peer;
1716

@@ -162,3 +161,13 @@ impl EnvContainer {
162161
}
163162
}
164163
}
164+
165+
fn initialize_global_services(configuration: &Configuration) {
166+
initialize_static();
167+
logging::setup(&configuration.logging);
168+
}
169+
170+
fn initialize_static() {
171+
torrust_tracker_clock::initialize_static();
172+
bittorrent_udp_tracker_core::initialize_static();
173+
}

tests/servers/http/environment.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ use futures::executor::block_on;
77
use torrust_axum_http_tracker_server::server::{HttpServer, Launcher, Running, Stopped};
88
use torrust_axum_server::tsl::make_rust_tls;
99
use torrust_server_lib::registar::Registar;
10-
use torrust_tracker_configuration::Configuration;
11-
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
10+
use torrust_tracker_configuration::{logging, Configuration};
1211
use torrust_tracker_primitives::peer;
1312

1413
pub struct Environment<S> {
@@ -106,3 +105,12 @@ impl EnvContainer {
106105
}
107106
}
108107
}
108+
109+
fn initialize_global_services(configuration: &Configuration) {
110+
initialize_static();
111+
logging::setup(&configuration.logging);
112+
}
113+
114+
fn initialize_static() {
115+
torrust_tracker_clock::initialize_static();
116+
}

tests/servers/udp/environment.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ use bittorrent_primitives::info_hash::InfoHash;
55
use bittorrent_tracker_core::container::TrackerCoreContainer;
66
use bittorrent_udp_tracker_core::container::UdpTrackerCoreContainer;
77
use torrust_server_lib::registar::Registar;
8-
use torrust_tracker_configuration::{Configuration, DEFAULT_TIMEOUT};
9-
use torrust_tracker_lib::bootstrap::app::initialize_global_services;
8+
use torrust_tracker_configuration::{logging, Configuration, DEFAULT_TIMEOUT};
109
use torrust_tracker_lib::servers::udp::server::spawner::Spawner;
1110
use torrust_tracker_lib::servers::udp::server::states::{Running, Stopped};
1211
use torrust_tracker_lib::servers::udp::server::Server;
@@ -120,6 +119,16 @@ impl EnvContainer {
120119
}
121120
}
122121

122+
fn initialize_global_services(configuration: &Configuration) {
123+
initialize_static();
124+
logging::setup(&configuration.logging);
125+
}
126+
127+
fn initialize_static() {
128+
torrust_tracker_clock::initialize_static();
129+
bittorrent_udp_tracker_core::initialize_static();
130+
}
131+
123132
#[cfg(test)]
124133
mod tests {
125134
use std::time::Duration;

0 commit comments

Comments
 (0)