fn test_sock_stats_subtract()

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);
    }