fn test_ebpf_sock_op_too_many_events()

in nfm-common/src/sock_ops_handler.rs [1072:1118]


    fn test_ebpf_sock_op_too_many_events() {
        let mut mock_ktime_us: u64 = 99;
        let mut cookie: u64 = 197;
        let mut mock_ebpf_maps = MockEbpfMaps::new();

        for _ in 0..MAX_ENTRIES_SK_STATS_HI {
            run_sock_ops_test_with_args(
                cookie,
                BPF_TCP_ESTABLISHED,
                BPF_SOCK_OPS_STATE_CB,
                [BPF_TCP_ESTABLISHED, BPF_TCP_CLOSE],
                &mut mock_ebpf_maps,
                mock_ktime_us,
                Ok(()),
            );

            cookie += 3;
            mock_ktime_us += 10;
        }

        for _ in 0..10 {
            run_sock_ops_test_with_args(
                cookie,
                BPF_TCP_ESTABLISHED,
                BPF_SOCK_OPS_STATE_CB,
                [BPF_TCP_ESTABLISHED, BPF_TCP_CLOSE],
                &mut mock_ebpf_maps,
                mock_ktime_us,
                Err(SockOpsResultCode::MapInsertionError),
            );

            cookie += 3;
            mock_ktime_us += 10;
        }

        // Validate results.
        assert!(MAX_ENTRIES_SK_STATS_HI > 0);
        assert_eq!(
            mock_ebpf_maps.NFM_SK_STATS.data.len(),
            MAX_ENTRIES_SK_STATS_HI.try_into().unwrap()
        );
        assert_eq!(
            mock_ebpf_maps.counters().state_change_events,
            (MAX_ENTRIES_SK_STATS_HI + 10).try_into().unwrap()
        );
        assert_eq!(mock_ebpf_maps.counters().map_insertion_errors, 10);
    }