From 18f15f16d57e856c4d95a1de543ba5ffb92f7b13 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Fri, 1 May 2026 10:05:29 +0700 Subject: [PATCH] feat(client): record and report packet size in client events --- crates/irtt-cli/src/lib.rs | 6 ++++++ crates/irtt-client/src/client.rs | 7 ++++++- crates/irtt-client/src/event.rs | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/irtt-cli/src/lib.rs b/crates/irtt-cli/src/lib.rs index a6a1025..d43219b 100644 --- a/crates/irtt-cli/src/lib.rs +++ b/crates/irtt-cli/src/lib.rs @@ -207,6 +207,7 @@ fn format_machine(event: &ClientEvent) -> String { server_timing, one_way, received_stats, + bytes: _, packet_meta, } => { write_common(&mut out, "echo_reply"); @@ -235,6 +236,7 @@ fn format_machine(event: &ClientEvent) -> String { seq, remote, received_at, + bytes: _, } => { write_common(&mut out, "duplicate"); write_seq(&mut out, *seq, None); @@ -253,6 +255,7 @@ fn format_machine(event: &ClientEvent) -> String { server_timing, one_way, received_stats, + bytes: _, packet_meta, } => { write_common(&mut out, "late"); @@ -536,6 +539,7 @@ mod tests { count: Some(9), window: Some(0x7), }), + bytes: 64, packet_meta: PacketMeta::default(), } } @@ -675,6 +679,7 @@ mod tests { seq: 3, remote: test_remote(), received_at: ts, + bytes: 64, }, ClientEvent::LateReply { seq: 4, @@ -687,6 +692,7 @@ mod tests { server_timing: None, one_way: None, received_stats: None, + bytes: 64, packet_meta: PacketMeta::default(), }, ClientEvent::Warning { diff --git a/crates/irtt-client/src/client.rs b/crates/irtt-client/src/client.rs index 671be77..6ace591 100644 --- a/crates/irtt-client/src/client.rs +++ b/crates/irtt-client/src/client.rs @@ -401,6 +401,7 @@ impl Client { server_timing, one_way, received_stats, + bytes: packet.len(), packet_meta: PacketMeta::default(), }); } else { @@ -414,6 +415,7 @@ impl Client { server_timing, one_way, received_stats, + bytes: packet.len(), packet_meta: PacketMeta::default(), }); } @@ -439,6 +441,7 @@ impl Client { server_timing: build_server_timing(&reply.timestamps), one_way: None, received_stats: build_received_stats(&reply), + bytes: packet.len(), packet_meta: PacketMeta::default(), }]) } else { @@ -1487,7 +1490,7 @@ mod tests { #[test] fn send_probe_sends_valid_echo_request() { let params = default_params(); - let server = silent_open_server(params); + let server = silent_open_server(params.clone()); let config = ClientConfig { socket_config: crate::SocketConfig { recv_timeout: Some(Duration::from_millis(200)), @@ -1656,10 +1659,12 @@ mod tests { rtt, received_stats, server_timing, + bytes, .. } => { assert_eq!(*seq, 0); assert_eq!(*logical_seq, 0); + assert_eq!(*bytes, echo_packet_len(false, ¶ms)); assert!(rtt.raw > Duration::ZERO); assert_eq!(rtt.effective, rtt.adjusted.unwrap_or(rtt.raw)); assert!(received_stats.is_some()); diff --git a/crates/irtt-client/src/event.rs b/crates/irtt-client/src/event.rs index 5a04b9c..a4a370b 100644 --- a/crates/irtt-client/src/event.rs +++ b/crates/irtt-client/src/event.rs @@ -46,6 +46,7 @@ pub enum ClientEvent { server_timing: Option, one_way: Option, received_stats: Option, + bytes: usize, packet_meta: PacketMeta, }, @@ -60,6 +61,7 @@ pub enum ClientEvent { seq: u32, remote: SocketAddr, received_at: ClientTimestamp, + bytes: usize, }, LateReply { @@ -73,6 +75,7 @@ pub enum ClientEvent { server_timing: Option, one_way: Option, received_stats: Option, + bytes: usize, packet_meta: PacketMeta, },