fn test_sock_stats_add_from()

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