mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
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:
parent
1d3ee8bef9
commit
f471e1fd82
@ -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;
|
||||||
|
|
||||||
if (!sync_api_supported())
|
ksft_print_header();
|
||||||
return 0;
|
|
||||||
|
|
||||||
printf("[RUN]\tTesting sync framework\n");
|
sync_api_supported();
|
||||||
|
|
||||||
err += RUN_TEST(test_alloc_timeline);
|
ksft_print_msg("[RUN]\tTesting sync framework\n");
|
||||||
err += RUN_TEST(test_alloc_fence);
|
|
||||||
err += RUN_TEST(test_alloc_fence_negative);
|
|
||||||
|
|
||||||
err += RUN_TEST(test_fence_one_timeline_wait);
|
RUN_TEST(test_alloc_timeline);
|
||||||
err += RUN_TEST(test_fence_one_timeline_merge);
|
RUN_TEST(test_alloc_fence);
|
||||||
err += RUN_TEST(test_fence_merge_same_fence);
|
RUN_TEST(test_alloc_fence_negative);
|
||||||
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)
|
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 @@
|
|||||||
#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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user