aboutsummaryrefslogtreecommitdiffstats
path: root/tests-convert-the-membarrier-test-to-tap-format.patch
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.patch160
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();
+ }