selftests/bpf: Remove filtered subtests from output
authorMykola Lysenko <mykolal@fb.com>
Fri, 20 May 2022 06:13:03 +0000 (23:13 -0700)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 20 May 2022 23:25:29 +0000 (16:25 -0700)
Currently filtered subtests show up in the output as skipped.

Before:
$ sudo ./test_progs -t log_fixup/missing_map
 #94 /1     log_fixup/bad_core_relo_trunc_none:SKIP
 #94 /2     log_fixup/bad_core_relo_trunc_partial:SKIP
 #94 /3     log_fixup/bad_core_relo_trunc_full:SKIP
 #94 /4     log_fixup/bad_core_relo_subprog:SKIP
 #94 /5     log_fixup/missing_map:OK
 #94        log_fixup:OK
Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED

After:
$ sudo ./test_progs -t log_fixup/missing_map
 #94 /5     log_fixup/missing_map:OK
 #94        log_fixup:OK
Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Mykola Lysenko <mykolal@fb.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20220520061303.4004808-1-mykolal@fb.com
tools/testing/selftests/bpf/test_progs.c
tools/testing/selftests/bpf/test_progs.h

index 307f8f4..c639f2e 100644 (file)
@@ -271,6 +271,7 @@ static void dump_test_log(const struct prog_test_def *test,
        int i;
        struct subtest_state *subtest_state;
        bool subtest_failed;
+       bool subtest_filtered;
        bool print_subtest;
 
        /* we do not print anything in the worker thread */
@@ -289,9 +290,10 @@ static void dump_test_log(const struct prog_test_def *test,
        for (i = 0; i < test_state->subtest_num; i++) {
                subtest_state = &test_state->subtest_states[i];
                subtest_failed = subtest_state->error_cnt;
+               subtest_filtered = subtest_state->filtered;
                print_subtest = verbose() || force_log || subtest_failed;
 
-               if (skip_ok_subtests && !subtest_failed)
+               if ((skip_ok_subtests && !subtest_failed) || subtest_filtered)
                        continue;
 
                if (subtest_state->log_cnt && print_subtest) {
@@ -423,7 +425,7 @@ bool test__start_subtest(const char *subtest_name)
                                state->subtest_num,
                                test->test_name,
                                subtest_name)) {
-               subtest_state->skipped = true;
+               subtest_state->filtered = true;
                return false;
        }
 
@@ -1129,6 +1131,7 @@ static int dispatch_thread_send_subtests(int sock_fd, struct test_state *state)
                subtest_state->name = strdup(msg.subtest_done.name);
                subtest_state->error_cnt = msg.subtest_done.error_cnt;
                subtest_state->skipped = msg.subtest_done.skipped;
+               subtest_state->filtered = msg.subtest_done.filtered;
 
                /* collect all logs */
                if (msg.subtest_done.have_log)
@@ -1424,6 +1427,7 @@ static int worker_main_send_subtests(int sock, struct test_state *state)
 
                msg.subtest_done.error_cnt = subtest_state->error_cnt;
                msg.subtest_done.skipped = subtest_state->skipped;
+               msg.subtest_done.filtered = subtest_state->filtered;
                msg.subtest_done.have_log = false;
 
                if (verbose() || state->force_log || subtest_state->error_cnt) {
index dd1b91d..5fe1365 100644 (file)
@@ -70,6 +70,7 @@ struct subtest_state {
        char *log_buf;
        int error_cnt;
        bool skipped;
+       bool filtered;
 
        FILE *stdout;
 };
@@ -156,6 +157,7 @@ struct msg {
                        char name[MAX_SUBTEST_NAME + 1];
                        int error_cnt;
                        bool skipped;
+                       bool filtered;
                        bool have_log;
                } subtest_done;
        };