diff --git a/src/client.rs b/src/client.rs index 219e9eb..3ed98e9 100644 --- a/src/client.rs +++ b/src/client.rs @@ -96,11 +96,12 @@ pub async fn play( repeat: u32, cert_path: Option<&str>, skip_verif: bool, + concurrency: usize, debug: bool, ) { // Semaphore used to limit the number of concurrent clients. // Its handle is released when the task panics. - let limiter = Arc::new(Semaphore::new(16)); + let limiter = Arc::new(Semaphore::new(concurrency)); let counter = Arc::new(AtomicU32::new(0)); let running = Arc::new(Mutex::new(HashSet::new())); let total = records.len() * repeat as usize; diff --git a/src/main.rs b/src/main.rs index b22ef53..b7b874c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -67,6 +67,9 @@ struct OptClient { /// Do not verify certificates #[argp(switch, short = 's')] skip_verif: bool, + /// Maximum number of concurrent clients + #[argp(option, default = "16")] + concurrency: usize, /// Print debug info #[argp(switch, short = 'd')] debug: bool, @@ -150,6 +153,7 @@ async fn main() { subopt.repeat, subopt.certs.as_deref(), subopt.skip_verif, + subopt.concurrency, subopt.debug, ) .await;