Skip to content

Commit

Permalink
refactor: [#852] eenrich field types in UdpTracker config struct
Browse files Browse the repository at this point in the history
  • Loading branch information
josecelano committed May 10, 2024
1 parent 384e9f8 commit 1475ead
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 21 deletions.
6 changes: 4 additions & 2 deletions packages/configuration/src/v1/udp_tracker.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::net::{IpAddr, Ipv4Addr, SocketAddr};

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug, Clone)]
Expand All @@ -8,13 +10,13 @@ pub struct UdpTracker {
/// The format is `ip:port`, for example `0.0.0.0:6969`. If you want to
/// listen to all interfaces, use `0.0.0.0`. If you want the operating
/// system to choose a random port, use port `0`.
pub bind_address: String,
pub bind_address: SocketAddr,
}
impl Default for UdpTracker {
fn default() -> Self {
Self {
enabled: false,
bind_address: String::from("0.0.0.0:6969"),
bind_address: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 6969),
}
}
}
10 changes: 5 additions & 5 deletions packages/test-helpers/src/configuration.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Tracker configuration factories for testing.
use std::env;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};

use torrust_tracker_configuration::Configuration;
use torrust_tracker_primitives::TrackerMode;
Expand Down Expand Up @@ -44,7 +44,7 @@ pub fn ephemeral() -> Configuration {
// Ephemeral socket address for UDP tracker
let udp_port = 0u16;
config.udp_trackers[0].enabled = true;
config.udp_trackers[0].bind_address = format!("127.0.0.1:{}", &udp_port);
config.udp_trackers[0].bind_address = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), udp_port);

// Ephemeral socket address for HTTP tracker
let http_port = 0u16;
Expand Down Expand Up @@ -136,10 +136,10 @@ pub fn ephemeral_with_external_ip(ip: IpAddr) -> Configuration {
pub fn ephemeral_ipv6() -> Configuration {
let mut cfg = ephemeral();

let ipv6 = format!("[::]:{}", 0);
let ipv6 = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)), 0);

cfg.http_api.bind_address.clone_from(&ipv6);
cfg.http_trackers[0].bind_address.clone_from(&ipv6);
cfg.http_api.bind_address.clone_from(&ipv6.to_string());
cfg.http_trackers[0].bind_address.clone_from(&ipv6.to_string());
cfg.udp_trackers[0].bind_address = ipv6;

cfg
Expand Down
5 changes: 1 addition & 4 deletions src/bootstrap/jobs/udp_tracker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,7 @@ use crate::servers::udp::server::{Launcher, UdpServer};
/// It will panic if the task did not finish successfully.
#[must_use]
pub async fn start_job(config: &UdpTracker, tracker: Arc<core::Tracker>, form: ServiceRegistrationForm) -> JoinHandle<()> {
let bind_to = config
.bind_address
.parse::<std::net::SocketAddr>()
.expect("it should have a valid udp tracker bind address");
let bind_to = config.bind_address;

let server = UdpServer::new(Launcher::new(bind_to))
.start(tracker, form)
Expand Down
9 changes: 3 additions & 6 deletions src/servers/udp/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -463,19 +463,16 @@ mod tests {
let cfg = Arc::new(ephemeral_mode_public());
let tracker = initialize_with_configuration(&cfg);
let config = &cfg.udp_trackers[0];

let bind_to = config
.bind_address
.parse::<std::net::SocketAddr>()
.expect("Tracker API bind_address invalid.");

let bind_to = config.bind_address;
let register = &Registar::default();

let stopped = UdpServer::new(Launcher::new(bind_to));

let started = stopped
.start(tracker, register.give_form())
.await
.expect("it should start the server");

let stopped = started.stop().await.expect("it should stop the server");

tokio::time::sleep(Duration::from_secs(1)).await;
Expand Down
5 changes: 1 addition & 4 deletions tests/servers/udp/environment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,7 @@ impl Environment<Stopped> {

let config = Arc::new(configuration.udp_trackers[0].clone());

let bind_to = config
.bind_address
.parse::<std::net::SocketAddr>()
.expect("Tracker API bind_address invalid.");
let bind_to = config.bind_address;

let server = UdpServer::new(Launcher::new(bind_to));

Expand Down

0 comments on commit 1475ead

Please sign in to comment.