Notify progression

This commit is contained in:
Pascal Engélibert 2026-03-12 16:45:56 +01:00
commit 1d9c288bc7
2 changed files with 18 additions and 6 deletions

View file

@ -97,6 +97,7 @@ pub async fn play(
cert_path: Option<&str>, cert_path: Option<&str>,
skip_verif: bool, skip_verif: bool,
concurrency: usize, concurrency: usize,
notify_addr: Option<&str>,
debug: bool, debug: bool,
) { ) {
// Semaphore used to limit the number of concurrent clients. // Semaphore used to limit the number of concurrent clients.
@ -109,6 +110,12 @@ pub async fn play(
let dummy_bytes = Arc::new(vec![0x42u8; 16 * 1024 * 1024]); let dummy_bytes = Arc::new(vec![0x42u8; 16 * 1024 * 1024]);
let notify_socket = notify_addr.map(|notify_addr| {
let socket = std::net::UdpSocket::bind("0.0.0.0:48567").unwrap();
socket.connect(notify_addr).unwrap();
Arc::new(socket)
});
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
tokio::spawn({ tokio::spawn({
@ -287,6 +294,7 @@ pub async fn play(
let limiter = limiter.clone(); let limiter = limiter.clone();
let running = running.clone(); let running = running.clone();
let dummy_bytes = dummy_bytes.clone(); let dummy_bytes = dummy_bytes.clone();
let notify_socket = notify_socket.clone();
handles.push(tokio::spawn(async move { handles.push(tokio::spawn(async move {
let mut running_guard = running.lock().await; let mut running_guard = running.lock().await;
running_guard.insert(*conn_id); running_guard.insert(*conn_id);
@ -349,9 +357,12 @@ pub async fn play(
.await .await
.unwrap() .unwrap()
.unwrap(); .unwrap();
let cnt = counter.fetch_add(1, std::sync::atomic::Ordering::Relaxed); let cnt = counter.fetch_add(1, std::sync::atomic::Ordering::Relaxed) + 1;
if debug { if debug {
println!("Client: {} / {}", cnt + 1, total); println!("Client: {} / {}", cnt, total);
}
if let Some(notify_socket) = &notify_socket {
notify_socket.send(&cnt.to_be_bytes()).unwrap();
} }
drop(limiter); drop(limiter);
let mut running_guard = running.lock().await; let mut running_guard = running.lock().await;
@ -367,4 +378,8 @@ pub async fn play(
} }
} }
println!("Unfinished: {:?}", running.lock().await); println!("Unfinished: {:?}", running.lock().await);
if let Some(notify_socket) = notify_socket {
notify_socket.send(&[0xff; 4]).unwrap();
}
} }

View file

@ -154,13 +154,10 @@ async fn main() {
subopt.certs.as_deref(), subopt.certs.as_deref(),
subopt.skip_verif, subopt.skip_verif,
subopt.concurrency, subopt.concurrency,
subopt.notify_addr.as_deref(),
subopt.debug, subopt.debug,
) )
.await; .await;
if let Some(notify_addr) = subopt.notify_addr {
let socket = std::net::UdpSocket::bind("0.0.0.0:48567").unwrap();
socket.send_to(b"done", &notify_addr).unwrap();
}
} }
Subcommand::Server(subopt) => { Subcommand::Server(subopt) => {
let records = RECORDS.init(record::read_record_file(&opt.record_file)); let records = RECORDS.init(record::read_record_file(&opt.record_file));