diff --git a/aquatic_http_load_test/src/config.rs b/aquatic_http_load_test/src/config.rs index 84b92d1..f871bc4 100644 --- a/aquatic_http_load_test/src/config.rs +++ b/aquatic_http_load_test/src/config.rs @@ -8,6 +8,7 @@ use serde::{Serialize, Deserialize}; pub struct Config { pub server_address: SocketAddr, pub num_workers: u8, + pub num_connections: usize, pub duration: usize, pub network: NetworkConfig, pub torrents: TorrentConfig, @@ -17,6 +18,7 @@ pub struct Config { #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(default)] pub struct NetworkConfig { + pub connection_creation_interval: usize, pub poll_timeout_microseconds: u64, pub poll_event_capacity: usize, } @@ -46,6 +48,7 @@ impl Default for Config { Self { server_address: "127.0.0.1:3000".parse().unwrap(), num_workers: 1, + num_connections: 128, duration: 0, network: NetworkConfig::default(), torrents: TorrentConfig::default(), @@ -56,8 +59,9 @@ impl Default for Config { impl Default for NetworkConfig { fn default() -> Self { Self { - poll_timeout_microseconds: 1000, - poll_event_capacity: 4096, + connection_creation_interval: 40, + poll_timeout_microseconds: 47, + poll_event_capacity: 1024, } } } diff --git a/aquatic_http_load_test/src/network.rs b/aquatic_http_load_test/src/network.rs index 3028d02..4906346 100644 --- a/aquatic_http_load_test/src/network.rs +++ b/aquatic_http_load_test/src/network.rs @@ -175,18 +175,15 @@ impl Connection { pub type ConnectionMap = Slab; -const NUM_CONNECTIONS: usize = 128; -const CREATE_CONN_INTERVAL: usize = 2 ^ 18; - - pub fn run_socket_thread( config: &Config, state: LoadTestState, num_initial_requests: usize, ) { let timeout = Duration::from_micros(config.network.poll_timeout_microseconds); + let create_conn_interval = 2 ^ config.network.connection_creation_interval; - let mut connections: ConnectionMap = Slab::with_capacity(NUM_CONNECTIONS); + let mut connections: ConnectionMap = Slab::with_capacity(config.num_connections); let mut poll = Poll::new().expect("create poll"); let mut events = Events::with_capacity(config.network.poll_event_capacity); let mut rng = SmallRng::from_entropy(); @@ -244,7 +241,7 @@ pub fn run_socket_thread( } // Slowly create new connections - if token_counter < NUM_CONNECTIONS && iter_counter % CREATE_CONN_INTERVAL == 0 { + if token_counter < config.num_connections && iter_counter % create_conn_interval == 0 { Connection::create_and_register( config, &mut connections,