Export test__skip() to indicate skipped tests and use it in
test_send_signal_nmi().

Cc: Andrii Nakryiko <andr...@fb.com>
Signed-off-by: Stanislav Fomichev <s...@google.com>
---
 .../selftests/bpf/prog_tests/send_signal.c    |  1 +
 tools/testing/selftests/bpf/test_progs.c      | 20 +++++++++++++++++--
 tools/testing/selftests/bpf/test_progs.h      |  2 ++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/send_signal.c 
b/tools/testing/selftests/bpf/prog_tests/send_signal.c
index 1575f0a1f586..40c2c5efdd3e 100644
--- a/tools/testing/selftests/bpf/prog_tests/send_signal.c
+++ b/tools/testing/selftests/bpf/prog_tests/send_signal.c
@@ -204,6 +204,7 @@ static int test_send_signal_nmi(void)
                if (errno == ENOENT) {
                        printf("%s:SKIP:no PERF_COUNT_HW_CPU_CYCLES\n",
                               __func__);
+                       test__skip();
                        return 0;
                }
                /* Let the test fail with a more informative message */
diff --git a/tools/testing/selftests/bpf/test_progs.c 
b/tools/testing/selftests/bpf/test_progs.c
index 12895d03d58b..e545dfb55872 100644
--- a/tools/testing/selftests/bpf/test_progs.c
+++ b/tools/testing/selftests/bpf/test_progs.c
@@ -17,6 +17,7 @@ struct prog_test_def {
        bool force_log;
        int pass_cnt;
        int error_cnt;
+       int skip_cnt;
        bool tested;
 
        const char *subtest_name;
@@ -56,6 +57,14 @@ static void dump_test_log(const struct prog_test_def *test, 
bool failed)
        fseeko(stdout, 0, SEEK_SET); /* rewind */
 }
 
+static void skip_account(void)
+{
+       if (env.test->skip_cnt) {
+               env.skip_cnt++;
+               env.test->skip_cnt = 0;
+       }
+}
+
 void test__end_subtest()
 {
        struct prog_test_def *test = env.test;
@@ -65,6 +74,7 @@ void test__end_subtest()
                env.fail_cnt++;
        else
                env.sub_succ_cnt++;
+       skip_account();
 
        dump_test_log(test, sub_error_cnt);
 
@@ -105,6 +115,11 @@ void test__force_log() {
        env.test->force_log = true;
 }
 
+void test__skip(void)
+{
+       env.test->skip_cnt++;
+}
+
 struct ipv4_packet pkt_v4 = {
        .eth.h_proto = __bpf_constant_htons(ETH_P_IP),
        .iph.ihl = 5,
@@ -510,6 +525,7 @@ int main(int argc, char **argv)
                        env.fail_cnt++;
                else
                        env.succ_cnt++;
+               skip_account();
 
                dump_test_log(test, test->error_cnt);
 
@@ -518,8 +534,8 @@ int main(int argc, char **argv)
                        test->error_cnt ? "FAIL" : "OK");
        }
        stdio_restore();
-       printf("Summary: %d/%d PASSED, %d FAILED\n",
-              env.succ_cnt, env.sub_succ_cnt, env.fail_cnt);
+       printf("Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n",
+              env.succ_cnt, env.sub_succ_cnt, env.skip_cnt, env.fail_cnt);
 
        free(env.test_selector.num_set);
        free(env.subtest_selector.num_set);
diff --git a/tools/testing/selftests/bpf/test_progs.h 
b/tools/testing/selftests/bpf/test_progs.h
index 37d427f5a1e5..9defd35cb6c0 100644
--- a/tools/testing/selftests/bpf/test_progs.h
+++ b/tools/testing/selftests/bpf/test_progs.h
@@ -64,6 +64,7 @@ struct test_env {
        int succ_cnt; /* successful tests */
        int sub_succ_cnt; /* successful sub-tests */
        int fail_cnt; /* total failed tests + sub-tests */
+       int skip_cnt; /* skipped tests */
 };
 
 extern int error_cnt;
@@ -72,6 +73,7 @@ extern struct test_env env;
 
 extern void test__force_log();
 extern bool test__start_subtest(const char *name);
+extern void test__skip(void);
 
 #define MAGIC_BYTES 123
 
-- 
2.23.0.187.g17f5b7556c-goog

Reply via email to