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>
This commit is contained in:
Shuah Khan 2017-07-24 14:19:13 -06:00
parent 1d3ee8bef9
commit f471e1fd82
2 changed files with 41 additions and 34 deletions

View File

@ -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;
if (!sync_api_supported())
return 0;
ksft_print_header();
printf("[RUN]\tTesting sync framework\n");
sync_api_supported();
err += RUN_TEST(test_alloc_timeline);
err += RUN_TEST(test_alloc_fence);
err += RUN_TEST(test_alloc_fence_negative);
ksft_print_msg("[RUN]\tTesting sync framework\n");
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_alloc_timeline);
RUN_TEST(test_alloc_fence);
RUN_TEST(test_alloc_fence_negative);
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();
}

View File

@ -29,10 +29,11 @@
#define SELFTESTS_SYNCTEST_H
#include <stdio.h>
#include "../kselftest.h"
#define ASSERT(cond, msg) do { \
if (!(cond)) { \
printf("[ERROR]\t%s", (msg)); \
ksft_print_msg("[ERROR]\t%s", (msg)); \
return 1; \
} \
} while (0)