To reduce the boilerplate code, refactor futex_waitv test to use
kselftest_harness header instead of futex's logging header.

Signed-off-by: André Almeida <andrealm...@igalia.com>
---
 .../selftests/futex/functional/futex_waitv.c       | 98 ++++++++++------------
 tools/testing/selftests/futex/functional/run.sh    |  2 +-
 2 files changed, 44 insertions(+), 56 deletions(-)

diff --git a/tools/testing/selftests/futex/functional/futex_waitv.c 
b/tools/testing/selftests/futex/functional/futex_waitv.c
index 
a94337f677e181544992efd53891ccca02787adb..8ceaa372b2524fe243400c50382a142a30e61159
 100644
--- a/tools/testing/selftests/futex/functional/futex_waitv.c
+++ b/tools/testing/selftests/futex/functional/futex_waitv.c
@@ -15,25 +15,16 @@
 #include <pthread.h>
 #include <stdint.h>
 #include <sys/shm.h>
+
 #include "futextest.h"
 #include "futex2test.h"
-#include "logging.h"
+#include "../../kselftest_harness.h"
 
-#define TEST_NAME "futex-wait"
 #define WAKE_WAIT_US 10000
 #define NR_FUTEXES 30
 static struct futex_waitv waitv[NR_FUTEXES];
 u_int32_t futexes[NR_FUTEXES] = {0};
 
-void usage(char *prog)
-{
-       printf("Usage: %s\n", prog);
-       printf("  -c    Use color\n");
-       printf("  -h    Display this help message\n");
-       printf("  -v L  Verbosity level: %d=QUIET %d=CRITICAL %d=INFO\n",
-              VQUIET, VCRITICAL, VINFO);
-}
-
 void *waiterfn(void *arg)
 {
        struct timespec to;
@@ -41,7 +32,7 @@ void *waiterfn(void *arg)
 
        /* setting absolute timeout for futex2 */
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -57,34 +48,10 @@ void *waiterfn(void *arg)
        return NULL;
 }
 
-int main(int argc, char *argv[])
+TEST(private_waitv)
 {
        pthread_t waiter;
-       int res, ret = RET_PASS;
-       struct timespec to;
-       int c, i;
-
-       while ((c = getopt(argc, argv, "cht:v:")) != -1) {
-               switch (c) {
-               case 'c':
-                       log_color(1);
-                       break;
-               case 'h':
-                       usage(basename(argv[0]));
-                       exit(0);
-               case 'v':
-                       log_verbosity(atoi(optarg));
-                       break;
-               default:
-                       usage(basename(argv[0]));
-                       exit(1);
-               }
-       }
-
-       ksft_print_header();
-       ksft_set_plan(7);
-       ksft_print_msg("%s: Test FUTEX_WAITV\n",
-                      basename(argv[0]));
+       int res, i;
 
        for (i = 0; i < NR_FUTEXES; i++) {
                waitv[i].uaddr = (uintptr_t)&futexes[i];
@@ -95,7 +62,7 @@ int main(int argc, char *argv[])
 
        /* Private waitv */
        if (pthread_create(&waiter, NULL, waiterfn, NULL))
-               error("pthread_create failed\n", errno);
+               ksft_exit_fail_msg("pthread_create failed\n");
 
        usleep(WAKE_WAIT_US);
 
@@ -104,10 +71,15 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_wake private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv private\n");
        }
+}
+
+TEST(shared_waitv)
+{
+       pthread_t waiter;
+       int res, i;
 
        /* Shared waitv */
        for (i = 0; i < NR_FUTEXES; i++) {
@@ -128,7 +100,7 @@ int main(int argc, char *argv[])
        }
 
        if (pthread_create(&waiter, NULL, waiterfn, NULL))
-               error("pthread_create failed\n", errno);
+               ksft_exit_fail_msg("pthread_create failed\n");
 
        usleep(WAKE_WAIT_US);
 
@@ -137,19 +109,24 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_wake shared returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv shared\n");
        }
 
        for (i = 0; i < NR_FUTEXES; i++)
                shmdt(u64_to_ptr(waitv[i].uaddr));
+}
+
+TEST(invalid_flag)
+{
+       struct timespec to;
+       int res;
 
        /* Testing a waiter without FUTEX_32 flag */
        waitv[0].flags = FUTEX_PRIVATE_FLAG;
 
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -158,17 +135,21 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_waitv private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv without FUTEX_32\n");
        }
+}
 
+TEST(unaligned_address)
+{
+       struct timespec to;
+       int res;
        /* Testing a waiter with an unaligned address */
        waitv[0].flags = FUTEX_PRIVATE_FLAG | FUTEX_32;
        waitv[0].uaddr = 1;
 
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -177,16 +158,21 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_wake private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv with an unaligned 
address\n");
        }
+}
+
+TEST(null_address)
+{
+       struct timespec to;
+       int res;
 
        /* Testing a NULL address for waiters.uaddr */
        waitv[0].uaddr = 0x00000000;
 
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -195,14 +181,13 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_waitv private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv NULL address in 
waitv.uaddr\n");
        }
 
        /* Testing a NULL address for *waiters */
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -211,14 +196,19 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_waitv private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv NULL address in *waiters\n");
        }
+}
+
+TEST(invalid_clockid)
+{
+       struct timespec to;
+       int res;
 
        /* Testing an invalid clockid */
        if (clock_gettime(CLOCK_MONOTONIC, &to))
-               error("gettime64 failed\n", errno);
+               ksft_exit_fail_msg("gettime64 failed\n");
 
        to.tv_sec++;
 
@@ -227,11 +217,9 @@ int main(int argc, char *argv[])
                ksft_test_result_fail("futex_waitv private returned: %d %s\n",
                                      res ? errno : res,
                                      res ? strerror(errno) : "");
-               ret = RET_FAIL;
        } else {
                ksft_test_result_pass("futex_waitv invalid clockid\n");
        }
-
-       ksft_print_cnts();
-       return ret;
 }
+
+TEST_HARNESS_MAIN
diff --git a/tools/testing/selftests/futex/functional/run.sh 
b/tools/testing/selftests/futex/functional/run.sh
index 
af32695cfaded4f834c7c07c24908b8a3e32fe28..6086b5652687af3cd2d4e4bd56159149d5bb5fea
 100755
--- a/tools/testing/selftests/futex/functional/run.sh
+++ b/tools/testing/selftests/futex/functional/run.sh
@@ -57,7 +57,7 @@ echo
 ./futex_requeue
 
 echo
-./futex_waitv $COLOR
+./futex_waitv
 
 echo
 ./futex_priv_hash $COLOR

-- 
2.50.1


Reply via email to