in nfm-common/src/network.rs [424:533]
fn test_sock_stats_add_from() {
let stats1 = SockStats {
last_touched_us: 105,
connect_start_us: 97,
connect_end_us: 0,
bytes_received: 59,
bytes_delivered: 61,
segments_received: 73,
segments_delivered: 79,
rtt_count: 7,
rtt_latest_us: 31,
rtt_smoothed_us: 23,
retrans_syn: 11,
retrans_est: 12,
retrans_close: 13,
rtos_syn: 14,
rtos_est: 15,
rtos_close: 16,
connect_attempts: 17,
connect_successes: 18,
..Default::default()
};
let stats2 = SockStats {
last_touched_us: 415,
connect_start_us: 0,
connect_end_us: 101,
bytes_received: 67,
bytes_delivered: 71,
segments_received: 83,
segments_delivered: 89,
rtt_count: 19,
rtt_latest_us: 37,
rtt_smoothed_us: 29,
retrans_syn: 17,
retrans_est: 18,
retrans_close: 19,
rtos_syn: 20,
rtos_est: 21,
rtos_close: 22,
connect_attempts: 23,
connect_successes: 24,
..Default::default()
};
let expected = SockStats {
last_touched_us: 415,
connect_start_us: 97,
connect_end_us: 101,
bytes_received: 67,
bytes_delivered: 71,
segments_received: 83,
segments_delivered: 89,
rtt_count: 26,
rtt_latest_us: 31,
rtt_smoothed_us: 29,
retrans_syn: 28,
retrans_est: 30,
retrans_close: 32,
rtos_syn: 34,
rtos_est: 36,
rtos_close: 38,
connect_attempts: 40,
connect_successes: 42,
..Default::default()
};
let last_agg_ts: u64 = 0;
{
let mut stats_a = stats1.clone();
let stats_b = stats2.clone();
stats_a.add_from(&stats_b, last_agg_ts);
assert_eq!(stats_a, expected);
assert_eq!(stats_a.connect_us().unwrap(), 4);
stats_a.add_from(&stats_b, last_agg_ts);
assert_eq!(stats_a.rtt_count, stats2.rtt_count * 2 + stats1.rtt_count);
}
{
let mut stats_a = stats2.clone();
let stats_b = stats1.clone();
stats_a.add_from(&stats_b, last_agg_ts);
assert_eq!(stats_a, expected);
assert_eq!(stats_a.connect_us().unwrap(), 4);
stats_a.add_from(&stats_b, last_agg_ts);
assert_eq!(stats_a.rtt_count, stats1.rtt_count * 2 + stats2.rtt_count);
}
}