From: "Mike Rapoport (Microsoft)" <[email protected]>

Convert protection_keys test to use kselftest framework for reporting
and tracking successful and failing runs.

Adjust dprintf0() printouts to use "#" in the beginning of the line for
TAP compatibility.

Signed-off-by: Mike Rapoport (Microsoft) <[email protected]>
---
 tools/testing/selftests/mm/pkey-helpers.h    |  6 +++--
 tools/testing/selftests/mm/protection_keys.c | 26 +++++++++++---------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/tools/testing/selftests/mm/pkey-helpers.h 
b/tools/testing/selftests/mm/pkey-helpers.h
index 7c29f075e40b..ae010b075417 100644
--- a/tools/testing/selftests/mm/pkey-helpers.h
+++ b/tools/testing/selftests/mm/pkey-helpers.h
@@ -71,10 +71,12 @@ static inline void sigsafe_printf(const char *format, ...)
 extern void abort_hooks(void);
 #define pkey_assert(condition) do {            \
        if (!(condition)) {                     \
-               dprintf0("assert() at %s::%d test_nr: %d iteration: %d\n", \
+               dprintf0("# assert() at %s::%d test_nr: %d iteration: %d\n", \
                                __FILE__, __LINE__,     \
                                test_nr, iteration_nr); \
-               dprintf0("errno at assert: %d", errno); \
+               dprintf0("# errno at assert: %d\n", errno);     \
+               ksft_test_result_fail("test %d (iteration %d)\n",       \
+                                     test_nr, iteration_nr);           \
                abort_hooks();                  \
                exit(__LINE__);                 \
        }                                       \
diff --git a/tools/testing/selftests/mm/protection_keys.c 
b/tools/testing/selftests/mm/protection_keys.c
index 80c6124e8378..d617b41dda6b 100644
--- a/tools/testing/selftests/mm/protection_keys.c
+++ b/tools/testing/selftests/mm/protection_keys.c
@@ -136,6 +136,7 @@ static void tracing_off(void)
 
 void abort_hooks(void)
 {
+       fflush(stdout);
        fprintf(stderr, "running %s()...\n", __func__);
        tracing_off();
 #ifdef SLEEP_ON_ABORT
@@ -370,8 +371,8 @@ static void signal_handler(int signum, siginfo_t *si, void 
*vucontext)
        if ((si->si_code == SEGV_MAPERR) ||
            (si->si_code == SEGV_ACCERR) ||
            (si->si_code == SEGV_BNDERR)) {
-               printf("non-PK si_code, exiting...\n");
-               exit(4);
+               dprintf0("# non-PK si_code: %d, exiting...\n", si->si_code);
+               exit(1);
        }
 
        si_pkey_ptr = siginfo_get_pkey_ptr(si);
@@ -719,7 +720,7 @@ static void setup_hugetlbfs(void)
        long hpagesz_mb;
 
        if (geteuid() != 0) {
-               fprintf(stderr, "WARNING: not run as root, can not do hugetlb 
test\n");
+               ksft_print_msg("WARNING: not run as root, can not do hugetlb 
test\n");
                return;
        }
 
@@ -855,7 +856,7 @@ void expected_pkey_fault(int pkey)
 
 #define do_not_expect_pkey_fault(msg)  do {                    \
        if (last_pkey_faults != pkey_faults)                    \
-               dprintf0("unexpected PKey fault: %s\n", msg);   \
+               dprintf0("# unexpected PKey fault: %s\n", msg); \
        pkey_assert(last_pkey_faults == pkey_faults);           \
 } while (0)
 
@@ -1753,7 +1754,7 @@ static void run_tests_once(void)
                tracing_off();
                close_test_fds();
 
-               printf("test %s PASSED (iteration %d)\n", 
pkey_tests[test_nr].name, iteration_nr);
+               ksft_test_result_pass("test %s (iteration %d)\n", 
pkey_tests[test_nr].name, iteration_nr);
                dprintf1("======================\n\n");
        }
        iteration_nr++;
@@ -1773,27 +1774,30 @@ int main(void)
 
        setup_handlers();
 
-       printf("has pkeys: %d\n", pkeys_supported);
+       ksft_print_header();
 
        if (!pkeys_supported) {
                int size = PAGE_SIZE;
                int *ptr;
 
-               printf("running PKEY tests for unsupported CPU/OS\n");
+               ksft_set_plan(1);
+               ksft_print_msg("running PKEY tests for unsupported CPU/OS\n");
 
                ptr  = mmap(NULL, size, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, 
-1, 0);
                assert(ptr != (void *)-1);
                test_mprotect_pkey_on_unsupported_cpu(ptr, 1);
-               exit(0);
+               ksft_test_result_pass("pkey on unsupported CPU/OS\n");
+               ksft_finished();
        }
 
+       ksft_set_plan(ARRAY_SIZE(pkey_tests) * nr_iterations);
+
        pkey_setup_shadow();
-       printf("startup pkey_reg: %016llx\n", read_pkey_reg());
+       ksft_print_msg("startup pkey_reg: %016llx\n", read_pkey_reg());
        setup_hugetlbfs();
 
        while (nr_iterations-- > 0)
                run_tests_once();
 
-       printf("done (all tests OK)\n");
-       return 0;
+       ksft_finished();
 }
-- 
2.53.0


Reply via email to