in nfm-common/src/network.rs [650:735]
fn test_sock_stats_subtract() {
let stats_a = SockStats {
last_touched_us: 10,
connect_start_us: 20,
connect_end_us: 30,
bytes_received: 40,
bytes_delivered: 50,
segments_received: 150,
segments_delivered: 160,
rtt_count: 60,
rtt_latest_us: 70,
rtt_smoothed_us: 80,
retrans_syn: 90,
retrans_est: 100,
retrans_close: 110,
rtos_syn: 120,
rtos_est: 130,
rtos_close: 140,
connect_attempts: 150,
connect_successes: 160,
state_flags: SockStateFlags::STARTED_CLOSURE,
..Default::default()
};
let stats_b = SockStats {
last_touched_us: 1,
connect_start_us: 2,
connect_end_us: 3,
bytes_received: 4,
bytes_delivered: 5,
segments_received: 15,
segments_delivered: 16,
rtt_count: 6,
rtt_latest_us: 7,
rtt_smoothed_us: 8,
retrans_syn: 9,
retrans_est: 10,
retrans_close: 11,
rtos_syn: 12,
rtos_est: 13,
rtos_close: 14,
connect_attempts: 15,
connect_successes: 16,
state_flags: SockStateFlags::ENTERED_ESTABLISH,
..Default::default()
};
// Test a typical diff.
let expected_diff = SockStats {
bytes_received: 36,
bytes_delivered: 45,
segments_received: 135,
segments_delivered: 144,
rtt_count: 54,
retrans_syn: 81,
retrans_est: 90,
retrans_close: 99,
rtos_syn: 108,
rtos_est: 117,
rtos_close: 126,
connect_attempts: 135,
connect_successes: 144,
..stats_a
};
let actual_diff = stats_a.subtract(&stats_b);
assert_eq!(actual_diff, expected_diff);
// Test values having wrapped around.
let expected_diff_wrapped = SockStats {
bytes_received: u64::MAX - expected_diff.bytes_received + 1,
bytes_delivered: u64::MAX - expected_diff.bytes_delivered + 1,
segments_received: u32::MAX - expected_diff.segments_received + 1,
segments_delivered: u32::MAX - expected_diff.segments_delivered + 1,
rtt_count: u32::MAX - expected_diff.rtt_count + 1,
retrans_syn: u32::MAX - expected_diff.retrans_syn + 1,
retrans_est: u32::MAX - expected_diff.retrans_est + 1,
retrans_close: u32::MAX - expected_diff.retrans_close + 1,
rtos_syn: u32::MAX - expected_diff.rtos_syn + 1,
rtos_est: u32::MAX - expected_diff.rtos_est + 1,
rtos_close: u32::MAX - expected_diff.rtos_close + 1,
connect_attempts: u8::MAX - expected_diff.connect_attempts + 1,
connect_successes: u8::MAX - expected_diff.connect_successes + 1,
..stats_b
};
let actual_diff_wrapped = stats_b.subtract(&stats_a);
assert_eq!(actual_diff_wrapped, expected_diff_wrapped);
}