in nfm-controller/src/events/network_event.rs [547:671]
fn test_network_stats_add_from() {
let mut net_stats = NetworkStats {
sockets_connecting: 20,
sockets_established: 60,
sockets_closing: 5,
sockets_closed: 15,
sockets_completed: 9,
severed_connect: 4,
severed_establish: 2,
connect_attempts: 56,
bytes_received: 59,
bytes_delivered: 61,
segments_received: 73,
segments_delivered: 79,
connect_us: MetricHistogram {
count: 57,
min: 20,
max: 25,
sum: 1250,
},
rtt_us: MetricHistogram {
count: 11,
min: 29,
max: 31,
sum: 350,
},
rtt_smoothed_us: MetricHistogram {
count: 11,
min: 50,
max: 100,
sum: 1000,
},
retrans_syn: 50,
retrans_est: 51,
retrans_close: 52,
rtos_syn: 53,
rtos_est: 54,
rtos_close: 55,
};
let sock_stats = SockStats {
last_touched_us: 451,
connect_start_us: 101,
connect_end_us: 127,
bytes_received: 67,
bytes_delivered: 71,
segments_received: 83,
segments_delivered: 89,
state_flags: SockStateFlags::ENTERED_ESTABLISH
| SockStateFlags::STARTED_CLOSURE
| SockStateFlags::CLOSED,
rtt_count: 3,
rtt_latest_us: 25,
rtt_smoothed_us: 40,
retrans_syn: 10,
retrans_est: 1,
retrans_close: 2,
rtos_syn: 3,
rtos_est: 4,
rtos_close: 5,
connect_attempts: 6,
connect_successes: 7,
..Default::default()
};
let expected = NetworkStats {
sockets_connecting: 20,
sockets_established: 60,
sockets_closing: 5,
sockets_closed: 16,
sockets_completed: 9,
severed_connect: 4,
severed_establish: 2,
connect_attempts: 62,
bytes_received: 126,
bytes_delivered: 132,
segments_received: 156,
segments_delivered: 168,
connect_us: MetricHistogram {
count: 64,
min: 20,
max: 26,
sum: 1276,
},
rtt_us: MetricHistogram {
count: 12,
min: 25,
max: 31,
sum: 375,
},
rtt_smoothed_us: MetricHistogram {
count: 12,
min: 40,
max: 100,
sum: 1040,
},
retrans_syn: 60,
retrans_est: 52,
retrans_close: 54,
rtos_syn: 56,
rtos_est: 58,
rtos_close: 60,
};
net_stats.add_from(&sock_stats);
assert_eq!(net_stats, expected);
net_stats.add_from(&sock_stats);
assert_eq!(
net_stats.bytes_delivered,
sock_stats.bytes_delivered * 2 + 61
);
assert_eq!(net_stats.connect_us.max, 26);
}