Skip to content

Commit 1d046b9

Browse files
committed
refactor: [torrust#1319] remove UDP server events from UDP tracker core package
Some events were moved from the `udp-tracker-core` package to the `udp-tracker-server` package. This commits remmoves the unused events from the `udp-tracker-core`.
1 parent 3f55b9d commit 1d046b9

File tree

22 files changed

+622
-405
lines changed

22 files changed

+622
-405
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,9 @@
1-
use crate::statistics::event::{Event, UdpResponseKind};
1+
use crate::statistics::event::Event;
22
use crate::statistics::repository::Repository;
33

44
pub async fn handle_event(event: Event, stats_repository: &Repository) {
55
match event {
6-
// UDP
7-
Event::UdpRequestAborted => {
8-
stats_repository.increase_udp_requests_aborted().await;
9-
}
10-
Event::UdpRequestBanned => {
11-
stats_repository.increase_udp_requests_banned().await;
12-
}
13-
146
// UDP4
15-
Event::Udp4Request => {
16-
stats_repository.increase_udp4_requests().await;
17-
}
187
Event::Udp4Connect => {
198
stats_repository.increase_udp4_connections().await;
209
}
@@ -24,39 +13,8 @@ pub async fn handle_event(event: Event, stats_repository: &Repository) {
2413
Event::Udp4Scrape => {
2514
stats_repository.increase_udp4_scrapes().await;
2615
}
27-
Event::Udp4Response {
28-
kind,
29-
req_processing_time,
30-
} => {
31-
stats_repository.increase_udp4_responses().await;
32-
33-
match kind {
34-
UdpResponseKind::Connect => {
35-
stats_repository
36-
.recalculate_udp_avg_connect_processing_time_ns(req_processing_time)
37-
.await;
38-
}
39-
UdpResponseKind::Announce => {
40-
stats_repository
41-
.recalculate_udp_avg_announce_processing_time_ns(req_processing_time)
42-
.await;
43-
}
44-
UdpResponseKind::Scrape => {
45-
stats_repository
46-
.recalculate_udp_avg_scrape_processing_time_ns(req_processing_time)
47-
.await;
48-
}
49-
UdpResponseKind::Error => {}
50-
}
51-
}
52-
Event::Udp4Error => {
53-
stats_repository.increase_udp4_errors().await;
54-
}
5516

5617
// UDP6
57-
Event::Udp6Request => {
58-
stats_repository.increase_udp6_requests().await;
59-
}
6018
Event::Udp6Connect => {
6119
stats_repository.increase_udp6_connections().await;
6220
}
@@ -66,15 +24,6 @@ pub async fn handle_event(event: Event, stats_repository: &Repository) {
6624
Event::Udp6Scrape => {
6725
stats_repository.increase_udp6_scrapes().await;
6826
}
69-
Event::Udp6Response {
70-
kind: _,
71-
req_processing_time: _,
72-
} => {
73-
stats_repository.increase_udp6_responses().await;
74-
}
75-
Event::Udp6Error => {
76-
stats_repository.increase_udp6_errors().await;
77-
}
7827
}
7928

8029
tracing::debug!("stats: {:?}", stats_repository.get_stats().await);
@@ -151,100 +100,4 @@ mod tests {
151100

152101
assert_eq!(stats.udp6_scrapes_handled, 1);
153102
}
154-
155-
#[tokio::test]
156-
async fn should_increase_the_udp_abort_counter_when_it_receives_a_udp_abort_event() {
157-
let stats_repository = Repository::new();
158-
159-
handle_event(Event::UdpRequestAborted, &stats_repository).await;
160-
let stats = stats_repository.get_stats().await;
161-
assert_eq!(stats.udp_requests_aborted, 1);
162-
}
163-
#[tokio::test]
164-
async fn should_increase_the_udp_ban_counter_when_it_receives_a_udp_banned_event() {
165-
let stats_repository = Repository::new();
166-
167-
handle_event(Event::UdpRequestBanned, &stats_repository).await;
168-
let stats = stats_repository.get_stats().await;
169-
assert_eq!(stats.udp_requests_banned, 1);
170-
}
171-
172-
#[tokio::test]
173-
async fn should_increase_the_udp4_requests_counter_when_it_receives_a_udp4_request_event() {
174-
let stats_repository = Repository::new();
175-
176-
handle_event(Event::Udp4Request, &stats_repository).await;
177-
178-
let stats = stats_repository.get_stats().await;
179-
180-
assert_eq!(stats.udp4_requests, 1);
181-
}
182-
183-
#[tokio::test]
184-
async fn should_increase_the_udp4_responses_counter_when_it_receives_a_udp4_response_event() {
185-
let stats_repository = Repository::new();
186-
187-
handle_event(
188-
Event::Udp4Response {
189-
kind: crate::statistics::event::UdpResponseKind::Announce,
190-
req_processing_time: std::time::Duration::from_secs(1),
191-
},
192-
&stats_repository,
193-
)
194-
.await;
195-
196-
let stats = stats_repository.get_stats().await;
197-
198-
assert_eq!(stats.udp4_responses, 1);
199-
}
200-
201-
#[tokio::test]
202-
async fn should_increase_the_udp4_errors_counter_when_it_receives_a_udp4_error_event() {
203-
let stats_repository = Repository::new();
204-
205-
handle_event(Event::Udp4Error, &stats_repository).await;
206-
207-
let stats = stats_repository.get_stats().await;
208-
209-
assert_eq!(stats.udp4_errors_handled, 1);
210-
}
211-
212-
#[tokio::test]
213-
async fn should_increase_the_udp6_requests_counter_when_it_receives_a_udp6_request_event() {
214-
let stats_repository = Repository::new();
215-
216-
handle_event(Event::Udp6Request, &stats_repository).await;
217-
218-
let stats = stats_repository.get_stats().await;
219-
220-
assert_eq!(stats.udp6_requests, 1);
221-
}
222-
223-
#[tokio::test]
224-
async fn should_increase_the_udp6_response_counter_when_it_receives_a_udp6_response_event() {
225-
let stats_repository = Repository::new();
226-
227-
handle_event(
228-
Event::Udp6Response {
229-
kind: crate::statistics::event::UdpResponseKind::Announce,
230-
req_processing_time: std::time::Duration::from_secs(1),
231-
},
232-
&stats_repository,
233-
)
234-
.await;
235-
236-
let stats = stats_repository.get_stats().await;
237-
238-
assert_eq!(stats.udp6_responses, 1);
239-
}
240-
#[tokio::test]
241-
async fn should_increase_the_udp6_errors_counter_when_it_receives_a_udp6_error_event() {
242-
let stats_repository = Repository::new();
243-
244-
handle_event(Event::Udp6Error, &stats_repository).await;
245-
246-
let stats = stats_repository.get_stats().await;
247-
248-
assert_eq!(stats.udp6_errors_handled, 1);
249-
}
250103
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::time::Duration;
2-
31
pub mod handler;
42
pub mod listener;
53
pub mod sender;
@@ -16,32 +14,10 @@ pub mod sender;
1614
pub enum Event {
1715
// code-review: consider one single event for request type with data: Event::Announce { scheme: HTTPorUDP, ip_version: V4orV6 }
1816
// Attributes are enums too.
19-
UdpRequestAborted,
20-
UdpRequestBanned,
21-
Udp4Request,
2217
Udp4Connect,
2318
Udp4Announce,
2419
Udp4Scrape,
25-
Udp4Response {
26-
kind: UdpResponseKind,
27-
req_processing_time: Duration,
28-
},
29-
Udp4Error,
30-
Udp6Request,
3120
Udp6Connect,
3221
Udp6Announce,
3322
Udp6Scrape,
34-
Udp6Response {
35-
kind: UdpResponseKind,
36-
req_processing_time: Duration,
37-
},
38-
Udp6Error,
39-
}
40-
41-
#[derive(Debug, PartialEq, Eq)]
42-
pub enum UdpResponseKind {
43-
Connect,
44-
Announce,
45-
Scrape,
46-
Error,
4723
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
use std::sync::Arc;
2+
3+
use torrust_tracker_configuration::Core;
4+
5+
use crate::statistics;
6+
7+
pub struct UdpTrackerServerContainer {
8+
pub udp_server_stats_event_sender: Arc<Option<Box<dyn statistics::event::sender::Sender>>>,
9+
pub udp_server_stats_repository: Arc<statistics::repository::Repository>,
10+
}
11+
12+
impl UdpTrackerServerContainer {
13+
#[must_use]
14+
pub fn initialize(core_config: &Arc<Core>) -> Arc<Self> {
15+
let (udp_server_stats_event_sender, udp_server_stats_repository) =
16+
statistics::setup::factory(core_config.tracker_usage_statistics);
17+
let udp_server_stats_event_sender = Arc::new(udp_server_stats_event_sender);
18+
let udp_server_stats_repository = Arc::new(udp_server_stats_repository);
19+
20+
Arc::new(Self {
21+
udp_server_stats_event_sender: udp_server_stats_event_sender.clone(),
22+
udp_server_stats_repository: udp_server_stats_repository.clone(),
23+
})
24+
}
25+
}

packages/udp-tracker-server/src/environment.rs

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use torrust_server_lib::registar::Registar;
88
use torrust_tracker_configuration::{logging, Configuration, DEFAULT_TIMEOUT};
99
use torrust_tracker_primitives::peer;
1010

11+
use crate::container::UdpTrackerServerContainer;
1112
use crate::server::spawner::Spawner;
1213
use crate::server::states::{Running, Stopped};
1314
use crate::server::Server;
@@ -71,6 +72,7 @@ impl Environment<Stopped> {
7172
.server
7273
.start(
7374
self.container.udp_tracker_core_container.clone(),
75+
self.container.udp_tracker_server_container.clone(),
7476
self.registar.give_form(),
7577
cookie_lifetime,
7678
)
@@ -115,6 +117,7 @@ impl Environment<Running> {
115117
pub struct EnvContainer {
116118
pub tracker_core_container: Arc<TrackerCoreContainer>,
117119
pub udp_tracker_core_container: Arc<UdpTrackerCoreContainer>,
120+
pub udp_tracker_server_container: Arc<UdpTrackerServerContainer>,
118121
}
119122

120123
impl EnvContainer {
@@ -129,10 +132,12 @@ impl EnvContainer {
129132

130133
let tracker_core_container = Arc::new(TrackerCoreContainer::initialize(&core_config));
131134
let udp_tracker_core_container = UdpTrackerCoreContainer::initialize_from(&tracker_core_container, &udp_tracker_config);
135+
let udp_tracker_server_container = UdpTrackerServerContainer::initialize(&core_config);
132136

133137
Self {
134138
tracker_core_container,
135139
udp_tracker_core_container,
140+
udp_tracker_server_container,
136141
}
137142
}
138143
}

0 commit comments

Comments
 (0)