in nfm-common/src/network.rs [536:583]
fn test_event_counters_rollover() {
// Start with values close to the edge to test rollover.
let original = EventCounters {
active_connect_events: u32::MAX - 1,
active_established_events: u32::MAX - 2,
passive_established_events: u32::MAX - 3,
state_change_events: u32::MAX - 4,
rtt_events: u32::MAX - 5,
retrans_events: u32::MAX - 6,
rto_events: u32::MAX - 7,
other_events: u32::MAX - 8,
socket_events: u32::MAX - 9,
sockets_invalid: u32::MAX - 10,
map_insertion_errors: u32::MAX - 18,
rtts_invalid: u32::MAX - 13,
set_flags_errors: u32::MAX - 14,
other_errors: u32::MAX - 15,
};
let additions = EventCounters {
active_connect_events: 10,
active_established_events: 11,
passive_established_events: 12,
state_change_events: 13,
rtt_events: 14,
retrans_events: 15,
rto_events: 16,
other_events: 17,
socket_events: 18,
sockets_invalid: 19,
map_insertion_errors: 27,
rtts_invalid: 22,
set_flags_errors: 23,
other_errors: 24,
};
let mut new_counters = original;
assert_eq!(new_counters, original);
// Perform an add to cause rollover.
new_counters.add_from(&additions);
assert_ne!(new_counters, original);
// Confirm subtraction still yields the values we added.
let delta = new_counters.subtract(&original);
assert_eq!(delta, additions);
}