Some tests are flaky and fail from time to time on virtual interfaces.
Adding them to the CI would trigger lots of 'false' errors.

Remove the flaky tests from the nominal tests table so they won't be
run by the CI in upcoming patch.
Create a flaky_tests table to hold them.
Use this flaky table in xskxceiver.c to keep all the tests available
from the test_xsk.sh script.

Reviewed-by: Maciej Fijalkowski <[email protected]>
Signed-off-by: Bastien Curutchet (eBPF Foundation) 
<[email protected]>
---
 tools/testing/selftests/bpf/test_xsk.h   | 10 +++++++---
 tools/testing/selftests/bpf/xskxceiver.c | 15 +++++++++++----
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/bpf/test_xsk.h 
b/tools/testing/selftests/bpf/test_xsk.h
index 
b068b25ea5da728fad1e17b894d6a1b1c9794f74..ced30bdc19b7fded2d79143ebedf8c5d97bac6b1
 100644
--- a/tools/testing/selftests/bpf/test_xsk.h
+++ b/tools/testing/selftests/bpf/test_xsk.h
@@ -272,7 +272,6 @@ static const struct test_spec tests[] = {
        {.name = "XDP_SHARED_UMEM", .test_func = testapp_xdp_shared_umem},
        {.name = "XDP_METADATA_COPY", .test_func = testapp_xdp_metadata},
        {.name = "XDP_METADATA_COPY_MULTI_BUFF", .test_func = 
testapp_xdp_metadata_mb},
-       {.name = "SEND_RECEIVE_9K_PACKETS", .test_func = 
testapp_send_receive_mb},
        {.name = "SEND_RECEIVE_UNALIGNED_9K_PACKETS",
         .test_func = testapp_send_receive_unaligned_mb},
        {.name = "ALIGNED_INV_DESC_MULTI_BUFF", .test_func = 
testapp_aligned_inv_desc_mb},
@@ -281,10 +280,15 @@ static const struct test_spec tests[] = {
        {.name = "HW_SW_MIN_RING_SIZE", .test_func = 
testapp_hw_sw_min_ring_size},
        {.name = "HW_SW_MAX_RING_SIZE", .test_func = 
testapp_hw_sw_max_ring_size},
        {.name = "XDP_ADJUST_TAIL_SHRINK", .test_func = 
testapp_adjust_tail_shrink},
-       {.name = "XDP_ADJUST_TAIL_SHRINK_MULTI_BUFF", .test_func = 
testapp_adjust_tail_shrink_mb},
-       {.name = "XDP_ADJUST_TAIL_GROW", .test_func = testapp_adjust_tail_grow},
        {.name = "XDP_ADJUST_TAIL_GROW_MULTI_BUFF", .test_func = 
testapp_adjust_tail_grow_mb},
        {.name = "TX_QUEUE_CONSUMER", .test_func = testapp_tx_queue_consumer},
        };
 
+static const struct test_spec flaky_tests[] = {
+       {.name = "XDP_ADJUST_TAIL_SHRINK_MULTI_BUFF", .test_func = 
testapp_adjust_tail_shrink_mb},
+       {.name = "XDP_ADJUST_TAIL_GROW", .test_func = testapp_adjust_tail_grow},
+       {.name = "SEND_RECEIVE_9K_PACKETS", .test_func = 
testapp_send_receive_mb},
+};
+
+
 #endif                         /* TEST_XSK_H_ */
diff --git a/tools/testing/selftests/bpf/xskxceiver.c 
b/tools/testing/selftests/bpf/xskxceiver.c
index 
a16d3ed3629a995e2bcdd7357437451f059d213e..8707f4a0fac64e1ebb6a4241edf8e874a1eb67c3
 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -326,10 +326,13 @@ static void print_tests(void)
        printf("Tests:\n");
        for (i = 0; i < ARRAY_SIZE(tests); i++)
                printf("%u: %s\n", i, tests[i].name);
+       for (i = ARRAY_SIZE(tests); i < ARRAY_SIZE(tests) + 
ARRAY_SIZE(flaky_tests); i++)
+               printf("%u: %s\n", i, flaky_tests[i - ARRAY_SIZE(tests)].name);
 }
 
 int main(int argc, char **argv)
 {
+       const size_t total_tests = ARRAY_SIZE(tests) + ARRAY_SIZE(flaky_tests);
        struct pkt_stream *rx_pkt_stream_default;
        struct pkt_stream *tx_pkt_stream_default;
        struct ifobject *ifobj_tx, *ifobj_rx;
@@ -357,7 +360,7 @@ int main(int argc, char **argv)
                print_tests();
                ksft_exit_xpass();
        }
-       if (opt_run_test != RUN_ALL_TESTS && opt_run_test >= ARRAY_SIZE(tests)) 
{
+       if (opt_run_test != RUN_ALL_TESTS && opt_run_test >= total_tests) {
                ksft_print_msg("Error: test %u does not exist.\n", 
opt_run_test);
                ksft_exit_xfail();
        }
@@ -397,7 +400,7 @@ int main(int argc, char **argv)
        test.rx_pkt_stream_default = rx_pkt_stream_default;
 
        if (opt_run_test == RUN_ALL_TESTS)
-               nb_tests = ARRAY_SIZE(tests);
+               nb_tests = total_tests;
        else
                nb_tests = 1;
        if (opt_mode == TEST_MODE_ALL) {
@@ -419,11 +422,15 @@ int main(int argc, char **argv)
                if (opt_mode != TEST_MODE_ALL && i != opt_mode)
                        continue;
 
-               for (j = 0; j < ARRAY_SIZE(tests); j++) {
+               for (j = 0; j < total_tests; j++) {
                        if (opt_run_test != RUN_ALL_TESTS && j != opt_run_test)
                                continue;
 
-                       test_init(&test, ifobj_tx, ifobj_rx, i, &tests[j]);
+                       if (j < ARRAY_SIZE(tests))
+                               test_init(&test, ifobj_tx, ifobj_rx, i, 
&tests[j]);
+                       else
+                               test_init(&test, ifobj_tx, ifobj_rx, i,
+                                         &flaky_tests[j - ARRAY_SIZE(tests)]);
                        run_pkt_test(&test);
                        usleep(USLEEP_MAX);
 

-- 
2.51.0


Reply via email to