aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/sync/sync_test.c
diff options
context:
space:
mode:
authorShuah Khan <shuahkh@osg.samsung.com>2017-07-24 14:19:13 -0600
committerShuah Khan <shuahkh@osg.samsung.com>2017-07-28 13:20:29 -0600
commitf471e1fd82df5061e3502056ab7aeb3cd399e83e (patch)
treed3a6c38afa96a8fe9789d19f5c8ef5aa30492839 /tools/testing/selftests/sync/sync_test.c
parentselftests: kselftest framework: add API to return pass/fail/* counts (diff)
downloadlinux-dev-f471e1fd82df5061e3502056ab7aeb3cd399e83e.tar.xz
linux-dev-f471e1fd82df5061e3502056ab7aeb3cd399e83e.zip
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: Shuah Khan <shuahkh@osg.samsung.com> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Diffstat (limited to 'tools/testing/selftests/sync/sync_test.c')
-rw-r--r--tools/testing/selftests/sync/sync_test.c72
1 files changed, 39 insertions, 33 deletions
diff --git a/tools/testing/selftests/sync/sync_test.c b/tools/testing/selftests/sync/sync_test.c
index 86ae45ad0347..7f7938263c5c 100644
--- a/tools/testing/selftests/sync/sync_test.c
+++ b/tools/testing/selftests/sync/sync_test.c
@@ -32,76 +32,82 @@
#include <sys/stat.h>
#include <sys/wait.h>
#include <errno.h>
+#include <string.h>
+#include "../kselftest.h"
#include "synctest.h"
static int run_test(int (*test)(void), char *name)
{
int result;
pid_t childpid;
+ int ret;
fflush(stdout);
childpid = fork();
if (childpid) {
waitpid(childpid, &result, 0);
- if (WIFEXITED(result))
- return WEXITSTATUS(result);
+ if (WIFEXITED(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;
}
- printf("[RUN]\tExecuting %s\n", name);
exit(test());
}
-static int sync_api_supported(void)
+static void sync_api_supported(void)
{
struct stat sbuf;
int ret;
ret = stat("/sys/kernel/debug/sync/sw_sync", &sbuf);
if (!ret)
- return 0;
+ return;
- if (errno == ENOENT) {
- printf("SKIP: Sync framework not supported by kernel\n");
- exit(0);
- }
- if (errno == EACCES) {
- printf("SKIP: Run Sync test as root.\n");
- exit(0);
- }
+ if (errno == ENOENT)
+ ksft_exit_skip("Sync framework not supported by kernel\n");
- perror("stat");
- exit(ret);
+ if (errno == EACCES)
+ 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 err = 0;
+ int err;
+
+ ksft_print_header();
- if (!sync_api_supported())
- return 0;
+ sync_api_supported();
- printf("[RUN]\tTesting sync framework\n");
+ ksft_print_msg("[RUN]\tTesting sync framework\n");
- err += RUN_TEST(test_alloc_timeline);
- err += RUN_TEST(test_alloc_fence);
- err += RUN_TEST(test_alloc_fence_negative);
+ RUN_TEST(test_alloc_timeline);
+ RUN_TEST(test_alloc_fence);
+ RUN_TEST(test_alloc_fence_negative);
- err += RUN_TEST(test_fence_one_timeline_wait);
- err += RUN_TEST(test_fence_one_timeline_merge);
- err += RUN_TEST(test_fence_merge_same_fence);
- err += RUN_TEST(test_fence_multi_timeline_wait);
- err += RUN_TEST(test_stress_two_threads_shared_timeline);
- err += RUN_TEST(test_consumer_stress_multi_producer_single_consumer);
- err += RUN_TEST(test_merge_stress_random_merge);
+ RUN_TEST(test_fence_one_timeline_wait);
+ RUN_TEST(test_fence_one_timeline_merge);
+ RUN_TEST(test_fence_merge_same_fence);
+ RUN_TEST(test_fence_multi_timeline_wait);
+ RUN_TEST(test_stress_two_threads_shared_timeline);
+ RUN_TEST(test_consumer_stress_multi_producer_single_consumer);
+ RUN_TEST(test_merge_stress_random_merge);
+ err = ksft_get_fail_cnt();
if (err)
- printf("[FAIL]\tsync errors: %d\n", err);
- else
- printf("[OK]\tsync\n");
+ ksft_exit_fail_msg("%d out of %d sync tests failed\n",
+ err, ksft_test_num());
- return !!err;
+ /* need this return to keep gcc happy */
+ return ksft_exit_pass();
}