diff options
Diffstat (limited to 'tests-convert-the-membarrier-test-to-tap-format.patch')
| -rw-r--r-- | tests-convert-the-membarrier-test-to-tap-format.patch | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/tests-convert-the-membarrier-test-to-tap-format.patch b/tests-convert-the-membarrier-test-to-tap-format.patch new file mode 100644 index 00000000000000..6d4121d7d5b9c3 --- /dev/null +++ b/tests-convert-the-membarrier-test-to-tap-format.patch @@ -0,0 +1,160 @@ +From foo@baz Sat Jun 3 21:22:53 JST 2017 +Date: Sat, 03 Jun 2017 21:22:53 +0900 +To: Greg KH <gregkh@linuxfoundation.org> +From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Subject: tests: convert the membarrier test to TAP format + +This converts the membarrier test to output things in TAP format instead +of the "free-flowing" format it was previously using. + +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> + +--- + tools/testing/selftests/membarrier/membarrier_test.c | 85 +++++++++++-------- + 1 file changed, 51 insertions(+), 34 deletions(-) + +--- a/tools/testing/selftests/membarrier/membarrier_test.c ++++ b/tools/testing/selftests/membarrier/membarrier_test.c +@@ -13,45 +13,65 @@ enum test_membarrier_status { + TEST_MEMBARRIER_SKIP, + }; + ++static int test_num = 0; ++ + static int sys_membarrier(int cmd, int flags) + { + return syscall(__NR_membarrier, cmd, flags); + } + ++static int test_result(const char *msg, int value) ++{ ++ test_num++; ++ printf("%s %d %s\n", value ? "not ok" : "ok", test_num, msg); ++ return value; ++} ++ ++static int skip_tests(void) ++{ ++ printf("Bail out\n"); ++ printf("1..%d\n", test_num); ++ return ksft_exit_skip(); ++} ++ ++static int bail_out(void) ++{ ++ printf("Bail out!\n"); ++ printf("1..%d\n", test_num); ++ return ksft_exit_fail(); ++} ++ + static enum test_membarrier_status test_membarrier_cmd_fail(void) + { + int cmd = -1, flags = 0; ++ const char *test_name = "membarrier command fail"; + +- if (sys_membarrier(cmd, flags) != -1) { +- printf("membarrier: Wrong command should fail but passed.\n"); +- return TEST_MEMBARRIER_FAIL; +- } +- return TEST_MEMBARRIER_PASS; ++ if (sys_membarrier(cmd, flags) != -1) ++ return test_result(test_name, TEST_MEMBARRIER_FAIL); ++ ++ return test_result(test_name, TEST_MEMBARRIER_PASS); + } + + static enum test_membarrier_status test_membarrier_flags_fail(void) + { + int cmd = MEMBARRIER_CMD_QUERY, flags = 1; ++ const char *test_name = "Wrong flags should fail"; + +- if (sys_membarrier(cmd, flags) != -1) { +- printf("membarrier: Wrong flags should fail but passed.\n"); +- return TEST_MEMBARRIER_FAIL; +- } +- return TEST_MEMBARRIER_PASS; ++ if (sys_membarrier(cmd, flags) != -1) ++ return test_result(test_name, TEST_MEMBARRIER_FAIL); ++ ++ return test_result(test_name, TEST_MEMBARRIER_PASS); + } + + static enum test_membarrier_status test_membarrier_success(void) + { + int cmd = MEMBARRIER_CMD_SHARED, flags = 0; ++ const char *test_name = "execute MEMBARRIER_CMD_SHARED"; + +- if (sys_membarrier(cmd, flags) != 0) { +- printf("membarrier: Executing MEMBARRIER_CMD_SHARED failed. %s.\n", +- strerror(errno)); +- return TEST_MEMBARRIER_FAIL; +- } ++ if (sys_membarrier(cmd, flags) != 0) ++ return test_result(test_name, TEST_MEMBARRIER_FAIL); + +- printf("membarrier: MEMBARRIER_CMD_SHARED success.\n"); +- return TEST_MEMBARRIER_PASS; ++ return test_result(test_name, TEST_MEMBARRIER_PASS); + } + + static enum test_membarrier_status test_membarrier(void) +@@ -74,45 +94,42 @@ static enum test_membarrier_status test_ + { + int flags = 0, ret; + +- printf("membarrier MEMBARRIER_CMD_QUERY "); + ret = sys_membarrier(MEMBARRIER_CMD_QUERY, flags); + if (ret < 0) { +- printf("failed. %s.\n", strerror(errno)); +- switch (errno) { +- case ENOSYS: ++ if (errno == ENOSYS) { + /* + * It is valid to build a kernel with + * CONFIG_MEMBARRIER=n. However, this skips the tests. + */ +- return TEST_MEMBARRIER_SKIP; +- case EINVAL: +- default: +- return TEST_MEMBARRIER_FAIL; ++ test_result("CONFIG_MEMBARRIER is not enabled\n", 0); ++ return skip_tests(); + } ++ return test_result("sys_membarrier() failed\n", ++ TEST_MEMBARRIER_FAIL); + } + if (!(ret & MEMBARRIER_CMD_SHARED)) { +- printf("command MEMBARRIER_CMD_SHARED is not supported.\n"); +- return TEST_MEMBARRIER_FAIL; ++ return test_result("command MEMBARRIER_CMD_SHARED is not supported.\n", ++ TEST_MEMBARRIER_FAIL); + } +- printf("syscall available.\n"); +- return TEST_MEMBARRIER_PASS; ++ return test_result("sys_membarrier availble", TEST_MEMBARRIER_PASS); + } + + int main(int argc, char **argv) + { ++ printf("TAP version 13\n"); + switch (test_membarrier_query()) { + case TEST_MEMBARRIER_FAIL: +- return ksft_exit_fail(); ++ return bail_out(); + case TEST_MEMBARRIER_SKIP: +- return ksft_exit_skip(); ++ return skip_tests(); + } + switch (test_membarrier()) { + case TEST_MEMBARRIER_FAIL: +- return ksft_exit_fail(); ++ return bail_out(); + case TEST_MEMBARRIER_SKIP: +- return ksft_exit_skip(); ++ return skip_tests(); + } + +- printf("membarrier: tests done!\n"); ++ printf("1..%d\n", test_num); + return ksft_exit_pass(); + } |
