Skip to content

Commit 4a31c6e

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 4a31c6e

File tree

29 files changed

+663
-439
lines changed

29 files changed

+663
-439
lines changed

packages/axum-tracker-api-server/src/v1/context/stats/routes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub fn add(prefix: &str, router: Router, http_api_container: &Arc<TrackerHttpApi
1919
http_api_container.in_memory_torrent_repository.clone(),
2020
http_api_container.ban_service.clone(),
2121
http_api_container.http_stats_repository.clone(),
22-
http_api_container.udp_stats_repository.clone(),
22+
http_api_container.udp_core_stats_repository.clone(),
2323
)),
2424
)
2525
}

packages/tracker-api-core/src/container.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub struct TrackerHttpApiCoreContainer {
2323

2424
// todo: replace with UdpTrackerCoreContainer
2525
pub ban_service: Arc<RwLock<BanService>>,
26-
pub udp_stats_repository: Arc<bittorrent_udp_tracker_core::statistics::repository::Repository>,
26+
pub udp_core_stats_repository: Arc<bittorrent_udp_tracker_core::statistics::repository::Repository>,
2727

2828
pub http_api_config: Arc<HttpApi>,
2929
}
@@ -64,7 +64,7 @@ impl TrackerHttpApiCoreContainer {
6464
http_stats_repository: http_tracker_core_container.http_stats_repository.clone(),
6565

6666
ban_service: udp_tracker_core_container.ban_service.clone(),
67-
udp_stats_repository: udp_tracker_core_container.udp_stats_repository.clone(),
67+
udp_core_stats_repository: udp_tracker_core_container.udp_core_stats_repository.clone(),
6868

6969
http_api_config: http_api_config.clone(),
7070
})

packages/tracker-api-core/src/statistics/services.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ pub async fn get_metrics(
2727
in_memory_torrent_repository: Arc<InMemoryTorrentRepository>,
2828
ban_service: Arc<RwLock<BanService>>,
2929
http_stats_repository: Arc<bittorrent_http_tracker_core::statistics::repository::Repository>,
30-
udp_stats_repository: Arc<statistics::repository::Repository>,
30+
udp_core_stats_repository: Arc<statistics::repository::Repository>,
3131
) -> TrackerMetrics {
3232
let torrents_metrics = in_memory_torrent_repository.get_torrents_metrics();
3333
let udp_banned_ips_total = ban_service.read().await.get_banned_ips_total();
3434
let http_stats = http_stats_repository.get_stats().await;
35-
let udp_stats = udp_stats_repository.get_stats().await;
35+
let udp_stats = udp_core_stats_repository.get_stats().await;
3636

3737
TrackerMetrics {
3838
torrents_metrics,
@@ -103,15 +103,15 @@ mod tests {
103103
let http_stats_repository = Arc::new(http_stats_repository);
104104

105105
// UDP stats
106-
let (_udp_stats_event_sender, udp_stats_repository) =
106+
let (_udp_core_stats_event_sender, udp_core_stats_repository) =
107107
bittorrent_udp_tracker_core::statistics::setup::factory(config.core.tracker_usage_statistics);
108-
let udp_stats_repository = Arc::new(udp_stats_repository);
108+
let udp_core_stats_repository = Arc::new(udp_core_stats_repository);
109109

110110
let tracker_metrics = get_metrics(
111111
in_memory_torrent_repository.clone(),
112112
ban_service.clone(),
113113
http_stats_repository.clone(),
114-
udp_stats_repository.clone(),
114+
udp_core_stats_repository.clone(),
115115
)
116116
.await;
117117

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

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ pub struct UdpTrackerCoreContainer {
1818
pub whitelist_authorization: Arc<whitelist::authorization::WhitelistAuthorization>,
1919

2020
pub udp_tracker_config: Arc<UdpTracker>,
21-
pub udp_stats_event_sender: Arc<Option<Box<dyn statistics::event::sender::Sender>>>,
22-
pub udp_stats_repository: Arc<statistics::repository::Repository>,
21+
pub udp_core_stats_event_sender: Arc<Option<Box<dyn statistics::event::sender::Sender>>>,
22+
pub udp_core_stats_repository: Arc<statistics::repository::Repository>,
2323
pub ban_service: Arc<RwLock<BanService>>,
2424
}
2525

@@ -35,10 +35,10 @@ impl UdpTrackerCoreContainer {
3535
tracker_core_container: &Arc<TrackerCoreContainer>,
3636
udp_tracker_config: &Arc<UdpTracker>,
3737
) -> Arc<UdpTrackerCoreContainer> {
38-
let (udp_stats_event_sender, udp_stats_repository) =
38+
let (udp_core_stats_event_sender, udp_core_stats_repository) =
3939
statistics::setup::factory(tracker_core_container.core_config.tracker_usage_statistics);
40-
let udp_stats_event_sender = Arc::new(udp_stats_event_sender);
41-
let udp_stats_repository = Arc::new(udp_stats_repository);
40+
let udp_core_stats_event_sender = Arc::new(udp_core_stats_event_sender);
41+
let udp_core_stats_repository = Arc::new(udp_core_stats_repository);
4242

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

@@ -49,8 +49,8 @@ impl UdpTrackerCoreContainer {
4949
whitelist_authorization: tracker_core_container.whitelist_authorization.clone(),
5050

5151
udp_tracker_config: udp_tracker_config.clone(),
52-
udp_stats_event_sender: udp_stats_event_sender.clone(),
53-
udp_stats_repository: udp_stats_repository.clone(),
52+
udp_core_stats_event_sender: udp_core_stats_event_sender.clone(),
53+
udp_core_stats_repository: udp_core_stats_repository.clone(),
5454
ban_service: ban_service.clone(),
5555
})
5656
}

packages/udp-tracker-core/src/services/connect.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ mod tests {
5555

5656
#[tokio::test]
5757
async fn a_connect_response_should_contain_the_same_transaction_id_as_the_connect_request() {
58-
let (udp_stats_event_sender, _udp_stats_repository) = statistics::setup::factory(false);
59-
let udp_stats_event_sender = Arc::new(udp_stats_event_sender);
58+
let (udp_core_stats_event_sender, _udp_core_stats_repository) = statistics::setup::factory(false);
59+
let udp_core_stats_event_sender = Arc::new(udp_core_stats_event_sender);
6060

61-
let response = handle_connect(sample_ipv4_remote_addr(), &udp_stats_event_sender, sample_issue_time()).await;
61+
let response = handle_connect(sample_ipv4_remote_addr(), &udp_core_stats_event_sender, sample_issue_time()).await;
6262

6363
assert_eq!(
6464
response,
@@ -68,10 +68,10 @@ mod tests {
6868

6969
#[tokio::test]
7070
async fn a_connect_response_should_contain_a_new_connection_id() {
71-
let (udp_stats_event_sender, _udp_stats_repository) = statistics::setup::factory(false);
72-
let udp_stats_event_sender = Arc::new(udp_stats_event_sender);
71+
let (udp_core_stats_event_sender, _udp_core_stats_repository) = statistics::setup::factory(false);
72+
let udp_core_stats_event_sender = Arc::new(udp_core_stats_event_sender);
7373

74-
let response = handle_connect(sample_ipv4_remote_addr(), &udp_stats_event_sender, sample_issue_time()).await;
74+
let response = handle_connect(sample_ipv4_remote_addr(), &udp_core_stats_event_sender, sample_issue_time()).await;
7575

7676
assert_eq!(
7777
response,
@@ -81,10 +81,10 @@ mod tests {
8181

8282
#[tokio::test]
8383
async fn a_connect_response_should_contain_a_new_connection_id_ipv6() {
84-
let (udp_stats_event_sender, _udp_stats_repository) = statistics::setup::factory(false);
85-
let udp_stats_event_sender = Arc::new(udp_stats_event_sender);
84+
let (udp_core_stats_event_sender, _udp_core_stats_repository) = statistics::setup::factory(false);
85+
let udp_core_stats_event_sender = Arc::new(udp_core_stats_event_sender);
8686

87-
let response = handle_connect(sample_ipv6_remote_addr(), &udp_stats_event_sender, sample_issue_time()).await;
87+
let response = handle_connect(sample_ipv6_remote_addr(), &udp_core_stats_event_sender, sample_issue_time()).await;
8888

8989
assert_eq!(
9090
response,
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
}

packages/udp-tracker-core/src/statistics/services.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,14 @@ mod tests {
124124
let in_memory_torrent_repository = Arc::new(InMemoryTorrentRepository::default());
125125
let ban_service = Arc::new(RwLock::new(BanService::new(MAX_CONNECTION_ID_ERRORS_PER_IP)));
126126

127-
let (_udp_stats_event_sender, udp_stats_repository) = statistics::setup::factory(config.core.tracker_usage_statistics);
128-
let udp_stats_repository = Arc::new(udp_stats_repository);
127+
let (_udp_core_stats_event_sender, udp_core_stats_repository) =
128+
statistics::setup::factory(config.core.tracker_usage_statistics);
129+
let udp_core_stats_repository = Arc::new(udp_core_stats_repository);
129130

130131
let tracker_metrics = get_metrics(
131132
in_memory_torrent_repository.clone(),
132133
ban_service.clone(),
133-
udp_stats_repository.clone(),
134+
udp_core_stats_repository.clone(),
134135
)
135136
.await;
136137

0 commit comments

Comments
 (0)