diff --git a/aquatic_udp_load_test/src/config.rs b/aquatic_udp_load_test/src/config.rs index cbd1176..456be0b 100644 --- a/aquatic_udp_load_test/src/config.rs +++ b/aquatic_udp_load_test/src/config.rs @@ -18,6 +18,9 @@ pub struct Config { pub workers: u8, /// Run duration (quit and generate report after this many seconds) pub duration: usize, + /// Probability that an additional connect request will be sent for each + /// mio event + pub additional_request_probability: f32, pub network: NetworkConfig, pub handler: HandlerConfig, #[cfg(feature = "cpu-pinning")] @@ -88,6 +91,7 @@ impl Default for Config { log_level: LogLevel::Error, workers: 1, duration: 0, + additional_request_probability: 0.1, network: NetworkConfig::default(), handler: HandlerConfig::default(), #[cfg(feature = "cpu-pinning")] diff --git a/aquatic_udp_load_test/src/network.rs b/aquatic_udp_load_test/src/network.rs index f6b08dc..a6ee6cf 100644 --- a/aquatic_udp_load_test/src/network.rs +++ b/aquatic_udp_load_test/src/network.rs @@ -4,6 +4,7 @@ use std::sync::atomic::Ordering; use std::time::Duration; use mio::{net::UdpSocket, Events, Interest, Poll, Token}; +use rand::Rng; use rand::{prelude::SmallRng, thread_rng, SeedableRng}; use rand_distr::Pareto; use socket2::{Domain, Protocol, Socket, Type}; @@ -126,14 +127,17 @@ pub fn run_worker_thread( } } - let additional_request = create_connect_request(generate_transaction_id(&mut rng)); + if rng.gen::() <= config.additional_request_probability { + let additional_request = + create_connect_request(generate_transaction_id(&mut rng)); - send_request( - &mut socket, - &mut buffer, - &mut statistics, - additional_request, - ); + send_request( + &mut socket, + &mut buffer, + &mut statistics, + additional_request, + ); + } update_shared_statistics(&state, &mut statistics); }