Commit f471e1fd authored by Shuah Khan's avatar Shuah Khan

selftests: sync: convert to use TAP13 ksft framework

Convert test to use TAP13 ksft framework. Output after conversion:

TAP version 13
# [RUN]	Testing sync framework
ok 1 [RUN]	test_alloc_timeline
ok 2 [RUN]	test_alloc_fence
ok 3 [RUN]	test_alloc_fence_negative
ok 4 [RUN]	test_fence_one_timeline_wait
ok 5 [RUN]	test_fence_one_timeline_merge
ok 6 [RUN]	test_fence_merge_same_fence
ok 7 [RUN]	test_fence_multi_timeline_wait
ok 8 [RUN]	test_stress_two_threads_shared_timeline
ok 9 [RUN]	test_consumer_stress_multi_producer_single_consumer
ok 10 [RUN]	test_merge_stress_random_merge
Pass 10 Fail 0 Xfail 0 Xpass 0 Skip 0
1..10
Signed-off-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
Reviewed-by: default avatarGustavo Padovan <gustavo.padovan@collabora.com>
parent 1d3ee8be
...@@ -32,76 +32,82 @@ ...@@ -32,76 +32,82 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <errno.h> #include <errno.h>
#include <string.h>
#include "../kselftest.h"
#include "synctest.h" #include "synctest.h"
static int run_test(int (*test)(void), char *name) static int run_test(int (*test)(void), char *name)
{ {
int result; int result;
pid_t childpid; pid_t childpid;
int ret;
fflush(stdout); fflush(stdout);
childpid = fork(); childpid = fork();
if (childpid) { if (childpid) {
waitpid(childpid, &result, 0); waitpid(childpid, &result, 0);
if (WIFEXITED(result)) if (WIFEXITED(result)) {
return WEXITSTATUS(result); ret = WEXITSTATUS(result);
if (!ret)
ksft_test_result_pass("[RUN]\t%s\n", name);
else
ksft_test_result_fail("[RUN]\t%s\n", name);
return ret;
}
return 1; return 1;
} }
printf("[RUN]\tExecuting %s\n", name);
exit(test()); exit(test());
} }
static int sync_api_supported(void) static void sync_api_supported(void)
{ {
struct stat sbuf; struct stat sbuf;
int ret; int ret;
ret = stat("/sys/kernel/debug/sync/sw_sync", &sbuf); ret = stat("/sys/kernel/debug/sync/sw_sync", &sbuf);
if (!ret) if (!ret)
return 0; return;
if (errno == ENOENT) { if (errno == ENOENT)
printf("SKIP: Sync framework not supported by kernel\n"); ksft_exit_skip("Sync framework not supported by kernel\n");
exit(0);
}
if (errno == EACCES) {
printf("SKIP: Run Sync test as root.\n");
exit(0);
}
perror("stat"); if (errno == EACCES)
exit(ret); ksft_exit_skip("Run Sync test as root.\n");
ksft_exit_fail_msg("stat failed on /sys/kernel/debug/sync/sw_sync: %s",
strerror(errno));
} }
int main(void) int main(void)
{ {
int err = 0; int err;
ksft_print_header();
if (!sync_api_supported()) sync_api_supported();
return 0;
printf("[RUN]\tTesting sync framework\n"); ksft_print_msg("[RUN]\tTesting sync framework\n");
err += RUN_TEST(test_alloc_timeline); RUN_TEST(test_alloc_timeline);
err += RUN_TEST(test_alloc_fence); RUN_TEST(test_alloc_fence);
err += RUN_TEST(test_alloc_fence_negative); RUN_TEST(test_alloc_fence_negative);
err += RUN_TEST(test_fence_one_timeline_wait); RUN_TEST(test_fence_one_timeline_wait);
err += RUN_TEST(test_fence_one_timeline_merge); RUN_TEST(test_fence_one_timeline_merge);
err += RUN_TEST(test_fence_merge_same_fence); RUN_TEST(test_fence_merge_same_fence);
err += RUN_TEST(test_fence_multi_timeline_wait); RUN_TEST(test_fence_multi_timeline_wait);
err += RUN_TEST(test_stress_two_threads_shared_timeline); RUN_TEST(test_stress_two_threads_shared_timeline);
err += RUN_TEST(test_consumer_stress_multi_producer_single_consumer); RUN_TEST(test_consumer_stress_multi_producer_single_consumer);
err += RUN_TEST(test_merge_stress_random_merge); RUN_TEST(test_merge_stress_random_merge);
err = ksft_get_fail_cnt();
if (err) if (err)
printf("[FAIL]\tsync errors: %d\n", err); ksft_exit_fail_msg("%d out of %d sync tests failed\n",
else err, ksft_test_num());
printf("[OK]\tsync\n");
return !!err; /* need this return to keep gcc happy */
return ksft_exit_pass();
} }
...@@ -29,10 +29,11 @@ ...@@ -29,10 +29,11 @@
#define SELFTESTS_SYNCTEST_H #define SELFTESTS_SYNCTEST_H
#include <stdio.h> #include <stdio.h>
#include "../kselftest.h"
#define ASSERT(cond, msg) do { \ #define ASSERT(cond, msg) do { \
if (!(cond)) { \ if (!(cond)) { \
printf("[ERROR]\t%s", (msg)); \ ksft_print_msg("[ERROR]\t%s", (msg)); \
return 1; \ return 1; \
} \ } \
} while (0) } while (0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment