From 3d2ae26b13d73c5310bda5ac6fb3cb7d7fef9b94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Wed, 25 Jan 2023 22:49:24 +0100 Subject: [PATCH] ws load test: provide stats on number of active connections --- aquatic_ws_load_test/src/common.rs | 1 + aquatic_ws_load_test/src/main.rs | 3 +++ aquatic_ws_load_test/src/network.rs | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/aquatic_ws_load_test/src/common.rs b/aquatic_ws_load_test/src/common.rs index 288f484..ceecacb 100644 --- a/aquatic_ws_load_test/src/common.rs +++ b/aquatic_ws_load_test/src/common.rs @@ -13,6 +13,7 @@ pub struct Statistics { pub responses_answer: AtomicUsize, pub responses_scrape: AtomicUsize, pub responses_error: AtomicUsize, + pub connections: AtomicUsize, } #[derive(Clone)] diff --git a/aquatic_ws_load_test/src/main.rs b/aquatic_ws_load_test/src/main.rs index 7ef2fbd..1075dae 100644 --- a/aquatic_ws_load_test/src/main.rs +++ b/aquatic_ws_load_test/src/main.rs @@ -146,6 +146,8 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { let responses_announce_per_second = responses_announce / interval_f64; + let connections = statistics.connections.load(Ordering::Relaxed); + let responses_per_second = responses_announce_per_second + responses_offer_per_second + responses_answer_per_second @@ -165,6 +167,7 @@ fn monitor_statistics(state: LoadTestState, config: &Config) { println!(" - Answer responses: {:.2}", responses_answer_per_second); println!(" - Scrape responses: {:.2}", responses_scrape_per_second); println!(" - Error responses: {:.2}", responses_error_per_second); + println!("Active connections: {}", connections); let time_elapsed = start_time.elapsed(); let duration = Duration::from_secs(config.duration as u64); diff --git a/aquatic_ws_load_test/src/network.rs b/aquatic_ws_load_test/src/network.rs index 1c7f64c..b8b4c8d 100644 --- a/aquatic_ws_load_test/src/network.rs +++ b/aquatic_ws_load_test/src/network.rs @@ -92,6 +92,8 @@ impl Connection { ); let (stream, _) = client_async(request, stream).await?; + let statistics = load_test_state.statistics.clone(); + let mut connection = Connection { config, load_test_state, @@ -103,12 +105,14 @@ impl Connection { }; *num_active_connections.borrow_mut() += 1; + statistics.connections.fetch_add(1, Ordering::Relaxed); if let Err(err) = connection.run_connection_loop().await { ::log::info!("connection error: {:#}", err); } *num_active_connections.borrow_mut() -= 1; + statistics.connections.fetch_sub(1, Ordering::Relaxed); Ok(()) }