diff --git a/aquatic_http_load_test/src/config.rs b/aquatic_http_load_test/src/config.rs index 482fe2a..d48300c 100644 --- a/aquatic_http_load_test/src/config.rs +++ b/aquatic_http_load_test/src/config.rs @@ -18,6 +18,7 @@ pub struct Config { #[derive(Clone, Debug, Serialize, Deserialize)] #[serde(default)] pub struct NetworkConfig { + pub close_connection_after_response: bool, pub connection_creation_interval: usize, pub poll_timeout_microseconds: u64, pub poll_event_capacity: usize, @@ -59,6 +60,7 @@ impl Default for Config { impl Default for NetworkConfig { fn default() -> Self { Self { + close_connection_after_response: false, 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 0e30e8b..b8c343f 100644 --- a/aquatic_http_load_test/src/network.rs +++ b/aquatic_http_load_test/src/network.rs @@ -48,6 +48,7 @@ impl Connection { pub fn read_response( &mut self, + config: &Config, state: &LoadTestState, ) -> bool { // bool = remove connection loop { @@ -93,7 +94,7 @@ impl Connection { self.bytes_read = 0; self.can_send = true; - break false; + break config.network.close_connection_after_response; }, Err(err) => { eprintln!( @@ -218,7 +219,10 @@ pub fn run_socket_thread( let token = event.token(); if let Some(connection) = connections.get_mut(&token.0){ - let remove_connection = connection.read_response(&state); + let remove_connection = connection.read_response( + config, + &state + ); if remove_connection { connections.remove(&token.0);