From 39d414d588f6e56ff0829b6b31b034cb92971e35 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Sun, 17 May 2026 00:39:23 +0700 Subject: [PATCH] test: consolidate formatter and hub policy cases --- crates/irtt-cli/src/lib.rs | 52 +++++---------- crates/irtt-client/src/managed/hub.rs | 96 ++++++++++++--------------- 2 files changed, 56 insertions(+), 92 deletions(-) diff --git a/crates/irtt-cli/src/lib.rs b/crates/irtt-cli/src/lib.rs index dfc9fd8..1d3cdd8 100644 --- a/crates/irtt-cli/src/lib.rs +++ b/crates/irtt-cli/src/lib.rs @@ -1175,45 +1175,23 @@ mod tests { } #[test] - fn machine_echo_reply_metadata_unavailable_prints_none() { - let line = format_event(&reply_event(), OutputMode::Machine).unwrap(); + fn machine_echo_reply_metadata_prints_observed_and_unavailable_values() { + let cases = [ + (PacketMeta::default(), ("none", "none", "none", "none")), + (packet_meta(0, 0, 0), ("0", "0", "0", "none")), + (packet_meta(186, 46, 2), ("186", "46", "2", "none")), + ( + packet_meta_with_timestamp(Some(UNIX_EPOCH + Duration::new(1, 234))), + ("none", "none", "none", "1000000234"), + ), + ]; - assert_machine_packet_meta(&line, "none", "none", "none", "none"); - } + for (packet_meta, (traffic_class, dscp, ecn, kernel_rx_ns)) in cases { + let line = + format_event(&reply_event_with_meta(packet_meta), OutputMode::Machine).unwrap(); - #[test] - fn machine_echo_reply_metadata_observed_zero_prints_zero() { - let line = format_event( - &reply_event_with_meta(packet_meta(0, 0, 0)), - OutputMode::Machine, - ) - .unwrap(); - - assert_machine_packet_meta(&line, "0", "0", "0", "none"); - } - - #[test] - fn machine_echo_reply_metadata_dscp_46_ecn_2_prints_values() { - let line = format_event( - &reply_event_with_meta(packet_meta(186, 46, 2)), - OutputMode::Machine, - ) - .unwrap(); - - assert_machine_packet_meta(&line, "186", "46", "2", "none"); - } - - #[test] - fn machine_echo_reply_metadata_kernel_rx_timestamp_prints_ns() { - let line = format_event( - &reply_event_with_meta(packet_meta_with_timestamp(Some( - UNIX_EPOCH + Duration::new(1, 234), - ))), - OutputMode::Machine, - ) - .unwrap(); - - assert_machine_packet_meta(&line, "none", "none", "none", "1000000234"); + assert_machine_packet_meta(&line, traffic_class, dscp, ecn, kernel_rx_ns); + } } #[test] diff --git a/crates/irtt-client/src/managed/hub.rs b/crates/irtt-client/src/managed/hub.rs index 81e1400..e2c02f4 100644 --- a/crates/irtt-client/src/managed/hub.rs +++ b/crates/irtt-client/src/managed/hub.rs @@ -290,14 +290,16 @@ mod tests { } } - #[test] - fn publishes_to_one_subscriber() { - let hub = EventHub::new(); - let sub = hub.subscribe(SubscriberConfig::default()).unwrap(); - - hub.publish(event(1)); - - assert_eq!(event_message(sub.try_recv().unwrap().unwrap()), "event-1"); + fn assert_next( + sub: &EventSubscription, + expected: Result, EventSubscriptionError>, + ) { + match (sub.try_recv(), expected) { + (Ok(Some(event)), Ok(Some(message))) => assert_eq!(event_message(event), message), + (Ok(None), Ok(None)) => {} + (Err(actual), Err(expected)) => assert_eq!(actual, expected), + (actual, expected) => panic!("expected {expected:?}, got {actual:?}"), + } } #[test] @@ -313,56 +315,40 @@ mod tests { } #[test] - fn drop_newest_keeps_existing_events() { - let hub = EventHub::new(); - let sub = hub - .subscribe(SubscriberConfig { - capacity: 1, - overflow: SubscriberOverflow::DropNewest, - }) - .unwrap(); + fn full_subscriber_overflow_policy_is_applied() { + let cases = [ + ( + SubscriberOverflow::DropNewest, + Ok(Some("event-1")), + Ok(None), + ), + ( + SubscriberOverflow::DropOldest, + Ok(Some("event-2")), + Ok(None), + ), + ( + SubscriberOverflow::Disconnect, + Err(EventSubscriptionError::Disconnected), + Err(EventSubscriptionError::Disconnected), + ), + ]; - hub.publish(event(1)); - hub.publish(event(2)); + for (overflow, first_expected, second_expected) in cases { + let hub = EventHub::new(); + let sub = hub + .subscribe(SubscriberConfig { + capacity: 1, + overflow, + }) + .unwrap(); - assert_eq!(event_message(sub.try_recv().unwrap().unwrap()), "event-1"); - assert!(sub.try_recv().unwrap().is_none()); - } + hub.publish(event(1)); + hub.publish(event(2)); - #[test] - fn drop_oldest_replaces_existing_events() { - let hub = EventHub::new(); - let sub = hub - .subscribe(SubscriberConfig { - capacity: 1, - overflow: SubscriberOverflow::DropOldest, - }) - .unwrap(); - - hub.publish(event(1)); - hub.publish(event(2)); - - assert_eq!(event_message(sub.try_recv().unwrap().unwrap()), "event-2"); - assert!(sub.try_recv().unwrap().is_none()); - } - - #[test] - fn disconnect_removes_full_subscriber() { - let hub = EventHub::new(); - let sub = hub - .subscribe(SubscriberConfig { - capacity: 1, - overflow: SubscriberOverflow::Disconnect, - }) - .unwrap(); - - hub.publish(event(1)); - hub.publish(event(2)); - - assert_eq!( - sub.try_recv().unwrap_err(), - EventSubscriptionError::Disconnected - ); + assert_next(&sub, first_expected); + assert_next(&sub, second_expected); + } } #[test]