fn test_event_counters_rollover()

in nfm-common/src/network.rs [536:583]


    fn test_event_counters_rollover() {
        // Start with values close to the edge to test rollover.
        let original = EventCounters {
            active_connect_events: u32::MAX - 1,
            active_established_events: u32::MAX - 2,
            passive_established_events: u32::MAX - 3,
            state_change_events: u32::MAX - 4,
            rtt_events: u32::MAX - 5,
            retrans_events: u32::MAX - 6,
            rto_events: u32::MAX - 7,
            other_events: u32::MAX - 8,
            socket_events: u32::MAX - 9,

            sockets_invalid: u32::MAX - 10,
            map_insertion_errors: u32::MAX - 18,
            rtts_invalid: u32::MAX - 13,
            set_flags_errors: u32::MAX - 14,
            other_errors: u32::MAX - 15,
        };
        let additions = EventCounters {
            active_connect_events: 10,
            active_established_events: 11,
            passive_established_events: 12,
            state_change_events: 13,
            rtt_events: 14,
            retrans_events: 15,
            rto_events: 16,
            other_events: 17,
            socket_events: 18,

            sockets_invalid: 19,
            map_insertion_errors: 27,
            rtts_invalid: 22,
            set_flags_errors: 23,
            other_errors: 24,
        };

        let mut new_counters = original;
        assert_eq!(new_counters, original);

        // Perform an add to cause rollover.
        new_counters.add_from(&additions);
        assert_ne!(new_counters, original);

        // Confirm subtraction still yields the values we added.
        let delta = new_counters.subtract(&original);
        assert_eq!(delta, additions);
    }