Linux Kernel Selftest development
 help / color / mirror / Atom feed
* [PATCH 0/4] kselftests: vdso: conform tests to TAP output
@ 2024-05-29  7:24 Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test " Muhammad Usama Anjum
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-29  7:24 UTC (permalink / raw)
  To: Shuah Khan, Vincenzo Frascino, Muhammad Usama Anjum,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel

Conform individual tests to TAP output. One patch conform one test. With
this series, all vDSO tests become TAP conformant.

Muhammad Usama Anjum (4):
  kselftests: vdso: vdso_test_clock_getres: conform test to TAP output
  kselftests: vdso: vdso_test_correctness: conform test to TAP output
  kselftests: vdso: vdso_test_getcpu: conform test to TAP output
  kselftests: vdso: vdso_test_gettimeofday: conform test to TAP output

 .../selftests/vDSO/vdso_test_clock_getres.c   |  68 ++++----
 .../selftests/vDSO/vdso_test_correctness.c    | 146 +++++++++---------
 .../testing/selftests/vDSO/vdso_test_getcpu.c |  16 +-
 .../selftests/vDSO/vdso_test_gettimeofday.c   |  23 +--
 4 files changed, 126 insertions(+), 127 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test to TAP output
  2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
@ 2024-05-29  7:24 ` Muhammad Usama Anjum
  2024-06-07 20:15   ` Shuah Khan
  2024-05-29  7:24 ` [PATCH 2/4] kselftests: vdso: vdso_test_correctness: " Muhammad Usama Anjum
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-29  7:24 UTC (permalink / raw)
  To: Shuah Khan, Vincenzo Frascino, Muhammad Usama Anjum,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel

Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 .../selftests/vDSO/vdso_test_clock_getres.c   | 68 +++++++++----------
 1 file changed, 33 insertions(+), 35 deletions(-)

diff --git a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c b/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
index 38d46a8bf7cba..c1ede40521f05 100644
--- a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
+++ b/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
@@ -25,7 +25,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#include "../kselftest.h"
+#include "../kselftest_harness.h"
 
 static long syscall_clock_getres(clockid_t _clkid, struct timespec *_ts)
 {
@@ -54,18 +54,8 @@ const char *vdso_clock_name[12] = {
 /*
  * This function calls clock_getres in vdso and by system call
  * with different values for clock_id.
- *
- * Example of output:
- *
- * clock_id: CLOCK_REALTIME [PASS]
- * clock_id: CLOCK_BOOTTIME [PASS]
- * clock_id: CLOCK_TAI [PASS]
- * clock_id: CLOCK_REALTIME_COARSE [PASS]
- * clock_id: CLOCK_MONOTONIC [PASS]
- * clock_id: CLOCK_MONOTONIC_RAW [PASS]
- * clock_id: CLOCK_MONOTONIC_COARSE [PASS]
  */
-static inline int vdso_test_clock(unsigned int clock_id)
+static inline void vdso_test_clock(struct __test_metadata *_metadata, unsigned int clock_id)
 {
 	struct timespec x, y;
 
@@ -73,52 +63,60 @@ static inline int vdso_test_clock(unsigned int clock_id)
 	clock_getres(clock_id, &x);
 	syscall_clock_getres(clock_id, &y);
 
-	if ((x.tv_sec != y.tv_sec) || (x.tv_nsec != y.tv_nsec)) {
-		printf(" [FAIL]\n");
-		return KSFT_FAIL;
-	}
-
-	printf(" [PASS]\n");
-	return KSFT_PASS;
+	ASSERT_EQ(0, ((x.tv_sec != y.tv_sec) || (x.tv_nsec != y.tv_nsec)));
 }
 
-int main(int argc, char **argv)
-{
-	int ret = 0;
-
 #if _POSIX_TIMERS > 0
 
 #ifdef CLOCK_REALTIME
-	ret += vdso_test_clock(CLOCK_REALTIME);
+TEST(clock_realtime)
+{
+	vdso_test_clock(_metadata, CLOCK_REALTIME);
+}
 #endif
 
 #ifdef CLOCK_BOOTTIME
-	ret += vdso_test_clock(CLOCK_BOOTTIME);
+TEST(clock_boottime)
+{
+	vdso_test_clock(_metadata, CLOCK_BOOTTIME);
+}
 #endif
 
 #ifdef CLOCK_TAI
-	ret += vdso_test_clock(CLOCK_TAI);
+TEST(clock_tai)
+{
+	vdso_test_clock(_metadata, CLOCK_TAI);
+}
 #endif
 
 #ifdef CLOCK_REALTIME_COARSE
-	ret += vdso_test_clock(CLOCK_REALTIME_COARSE);
+TEST(clock_realtime_coarse)
+{
+	vdso_test_clock(_metadata, CLOCK_REALTIME_COARSE);
+}
 #endif
 
 #ifdef CLOCK_MONOTONIC
-	ret += vdso_test_clock(CLOCK_MONOTONIC);
+TEST(clock_monotonic)
+{
+	vdso_test_clock(_metadata, CLOCK_MONOTONIC);
+}
 #endif
 
 #ifdef CLOCK_MONOTONIC_RAW
-	ret += vdso_test_clock(CLOCK_MONOTONIC_RAW);
+TEST(clock_monotonic_raw)
+{
+	vdso_test_clock(_metadata, CLOCK_MONOTONIC_RAW);
+}
 #endif
 
 #ifdef CLOCK_MONOTONIC_COARSE
-	ret += vdso_test_clock(CLOCK_MONOTONIC_COARSE);
+TEST(clock_monotonic_coarse)
+{
+	vdso_test_clock(_metadata, CLOCK_MONOTONIC_COARSE);
+}
 #endif
 
-#endif
-	if (ret > 0)
-		return KSFT_FAIL;
+#endif /* _POSIX_TIMERS > 0 */
 
-	return KSFT_PASS;
-}
+TEST_HARNESS_MAIN
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] kselftests: vdso: vdso_test_correctness: conform test to TAP output
  2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test " Muhammad Usama Anjum
@ 2024-05-29  7:24 ` Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 3/4] kselftests: vdso: vdso_test_getcpu: " Muhammad Usama Anjum
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-29  7:24 UTC (permalink / raw)
  To: Shuah Khan, Vincenzo Frascino, Muhammad Usama Anjum,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel

Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 .../selftests/vDSO/vdso_test_correctness.c    | 146 +++++++++---------
 1 file changed, 74 insertions(+), 72 deletions(-)

diff --git a/tools/testing/selftests/vDSO/vdso_test_correctness.c b/tools/testing/selftests/vDSO/vdso_test_correctness.c
index e691a3cf14911..688f83abb28eb 100644
--- a/tools/testing/selftests/vDSO/vdso_test_correctness.c
+++ b/tools/testing/selftests/vDSO/vdso_test_correctness.c
@@ -46,8 +46,6 @@ struct __kernel_timespec {
 /* max length of lines in /proc/self/maps - anything longer is skipped here */
 #define MAPS_LINE_LEN 128
 
-int nerrs = 0;
-
 typedef int (*vgettime_t)(clockid_t, struct timespec *);
 
 vgettime_t vdso_clock_gettime;
@@ -97,7 +95,7 @@ static void *vsyscall_getcpu(void)
 	fclose(maps);
 
 	if (!found) {
-		printf("Warning: failed to find vsyscall getcpu\n");
+		ksft_print_msg("Warning: failed to find vsyscall getcpu\n");
 		return NULL;
 	}
 	return (void *) (0xffffffffff600800);
@@ -115,30 +113,29 @@ static void fill_function_pointers()
 		vdso = dlopen("linux-gate.so.1",
 			      RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
 	if (!vdso) {
-		printf("[WARN]\tfailed to find vDSO\n");
-		return;
+		ksft_print_msg("failed to find vDSO\n");
+		ksft_finished();
 	}
 
 	vdso_getcpu = (getcpu_t)dlsym(vdso, name[4]);
 	if (!vdso_getcpu)
-		printf("Warning: failed to find getcpu in vDSO\n");
+		ksft_print_msg("Warning: failed to find getcpu in vDSO\n");
 
 	vgetcpu = (getcpu_t) vsyscall_getcpu();
 
 	vdso_clock_gettime = (vgettime_t)dlsym(vdso, name[1]);
 	if (!vdso_clock_gettime)
-		printf("Warning: failed to find clock_gettime in vDSO\n");
+		ksft_print_msg("Warning: failed to find clock_gettime in vDSO\n");
 
 #if defined(VDSO_32BIT)
 	vdso_clock_gettime64 = (vgettime64_t)dlsym(vdso, name[5]);
 	if (!vdso_clock_gettime64)
-		printf("Warning: failed to find clock_gettime64 in vDSO\n");
+		ksft_print_msg("Warning: failed to find clock_gettime64 in vDSO\n");
 #endif
 
 	vdso_gettimeofday = (vgtod_t)dlsym(vdso, name[0]);
 	if (!vdso_gettimeofday)
-		printf("Warning: failed to find gettimeofday in vDSO\n");
-
+		ksft_print_msg("Warning: failed to find gettimeofday in vDSO\n");
 }
 
 static long sys_getcpu(unsigned * cpu, unsigned * node,
@@ -164,7 +161,7 @@ static inline int sys_gettimeofday(struct timeval *tv, struct timezone *tz)
 
 static void test_getcpu(void)
 {
-	printf("[RUN]\tTesting getcpu...\n");
+	ksft_print_msg("Testing getcpu...\n");
 
 	for (int cpu = 0; ; cpu++) {
 		cpu_set_t cpuset;
@@ -199,18 +196,16 @@ static void test_getcpu(void)
 		if (!ret_vsys && (cpu_vsys != cpu || node_vsys != node))
 			ok = false;
 
-		printf("[%s]\tCPU %u:", ok ? "OK" : "FAIL", cpu);
+		ksft_print_msg("CPU %u:", ok ? "OK" : "FAIL", cpu);
 		if (!ret_sys)
-			printf(" syscall: cpu %u, node %u", cpu_sys, node_sys);
+			ksft_print_msg(" syscall: cpu %u, node %u", cpu_sys, node_sys);
 		if (!ret_vdso)
-			printf(" vdso: cpu %u, node %u", cpu_vdso, node_vdso);
+			ksft_print_msg(" vdso: cpu %u, node %u", cpu_vdso, node_vdso);
 		if (!ret_vsys)
-			printf(" vsyscall: cpu %u, node %u", cpu_vsys,
-			       node_vsys);
-		printf("\n");
+			ksft_print_msg(" vsyscall: cpu %u, node %u", cpu_vsys, node_vsys);
+		ksft_print_msg("\n");
 
-		if (!ok)
-			nerrs++;
+		ksft_test_result(ok, "Succeeded\n");
 	}
 }
 
@@ -259,19 +254,20 @@ static void test_one_clock_gettime(int clock, const char *name)
 	struct timespec start, vdso, end;
 	int vdso_ret, end_ret;
 
-	printf("[RUN]\tTesting clock_gettime for clock %s (%d)...\n", name, clock);
+	ksft_print_msg("Testing clock_gettime for clock %s (%d)...\n", name, clock);
 
 	if (sys_clock_gettime(clock, &start) < 0) {
 		if (errno == EINVAL) {
 			vdso_ret = vdso_clock_gettime(clock, &vdso);
 			if (vdso_ret == -EINVAL) {
-				printf("[OK]\tNo such clock.\n");
+				ksft_test_result_skip("No such clock.\n");
 			} else {
-				printf("[FAIL]\tNo such clock, but __vdso_clock_gettime returned %d\n", vdso_ret);
-				nerrs++;
+				ksft_test_result_fail("No such clock, but __vdso_clock_gettime returned %d\n",
+						      vdso_ret);
 			}
 		} else {
-			printf("[WARN]\t clock_gettime(%d) syscall returned error %d\n", clock, errno);
+			ksft_test_result_skip("clock_gettime(%d) syscall returned error %d\n",
+					      clock, errno);
 		}
 		return;
 	}
@@ -280,30 +276,32 @@ static void test_one_clock_gettime(int clock, const char *name)
 	end_ret = sys_clock_gettime(clock, &end);
 
 	if (vdso_ret != 0 || end_ret != 0) {
-		printf("[FAIL]\tvDSO returned %d, syscall errno=%d\n",
-		       vdso_ret, errno);
-		nerrs++;
+		ksft_test_result_fail("vDSO returned %d, syscall errno=%d\n", vdso_ret, errno);
 		return;
 	}
 
-	printf("\t%llu.%09ld %llu.%09ld %llu.%09ld\n",
-	       (unsigned long long)start.tv_sec, start.tv_nsec,
-	       (unsigned long long)vdso.tv_sec, vdso.tv_nsec,
-	       (unsigned long long)end.tv_sec, end.tv_nsec);
+	ksft_print_msg("\t%llu.%09ld %llu.%09ld %llu.%09ld\n",
+		       (unsigned long long)start.tv_sec, start.tv_nsec,
+		       (unsigned long long)vdso.tv_sec, vdso.tv_nsec,
+		       (unsigned long long)end.tv_sec, end.tv_nsec);
 
 	if (!ts_leq(&start, &vdso) || !ts_leq(&vdso, &end)) {
-		printf("[FAIL]\tTimes are out of sequence\n");
-		nerrs++;
+		ksft_test_result_fail("Times are out of sequence\n");
 		return;
 	}
 
-	printf("[OK]\tTest Passed.\n");
+	ksft_test_result_pass("Test Passed.\n");
 }
 
 static void test_clock_gettime(void)
 {
 	if (!vdso_clock_gettime) {
-		printf("[SKIP]\tNo vDSO, so skipping clock_gettime() tests\n");
+		for (int clock = 0; clock < ARRAY_SIZE(clocknames); clock++)
+			ksft_test_result_skip("No vDSO, so skipping %s\n", clocknames[clock]);
+
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests -1\n");
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests min\n");
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests max\n");
 		return;
 	}
 
@@ -321,19 +319,20 @@ static void test_one_clock_gettime64(int clock, const char *name)
 	struct __kernel_timespec start, vdso, end;
 	int vdso_ret, end_ret;
 
-	printf("[RUN]\tTesting clock_gettime64 for clock %s (%d)...\n", name, clock);
+	ksft_print_msg("Testing clock_gettime64 for clock %s (%d)...\n", name, clock);
 
 	if (sys_clock_gettime64(clock, &start) < 0) {
 		if (errno == EINVAL) {
 			vdso_ret = vdso_clock_gettime64(clock, &vdso);
 			if (vdso_ret == -EINVAL) {
-				printf("[OK]\tNo such clock.\n");
+				ksft_test_result_skip("No such clock.\n");
 			} else {
-				printf("[FAIL]\tNo such clock, but __vdso_clock_gettime64 returned %d\n", vdso_ret);
-				nerrs++;
+				ksft_test_result_fail("No such clock, but __vdso_clock_gettime64 returned %d\n",
+						      vdso_ret);
 			}
 		} else {
-			printf("[WARN]\t clock_gettime64(%d) syscall returned error %d\n", clock, errno);
+			ksft_test_result_skip("clock_gettime64(%d) syscall returned error %d\n",
+					      clock, errno);
 		}
 		return;
 	}
@@ -342,30 +341,32 @@ static void test_one_clock_gettime64(int clock, const char *name)
 	end_ret = sys_clock_gettime64(clock, &end);
 
 	if (vdso_ret != 0 || end_ret != 0) {
-		printf("[FAIL]\tvDSO returned %d, syscall errno=%d\n",
-		       vdso_ret, errno);
-		nerrs++;
+		ksft_test_result_fail("vDSO returned %d, syscall errno=%d\n", vdso_ret, errno);
 		return;
 	}
 
-	printf("\t%llu.%09lld %llu.%09lld %llu.%09lld\n",
-	       (unsigned long long)start.tv_sec, start.tv_nsec,
-	       (unsigned long long)vdso.tv_sec, vdso.tv_nsec,
-	       (unsigned long long)end.tv_sec, end.tv_nsec);
+	ksft_print_msg("\t%llu.%09lld %llu.%09lld %llu.%09lld\n",
+		       (unsigned long long)start.tv_sec, start.tv_nsec,
+		       (unsigned long long)vdso.tv_sec, vdso.tv_nsec,
+		       (unsigned long long)end.tv_sec, end.tv_nsec);
 
 	if (!ts64_leq(&start, &vdso) || !ts64_leq(&vdso, &end)) {
-		printf("[FAIL]\tTimes are out of sequence\n");
-		nerrs++;
+		ksft_test_result_fail("Times are out of sequence\n");
 		return;
 	}
 
-	printf("[OK]\tTest Passed.\n");
+	ksft_test_result_pass("Test Passed.\n");
 }
 
 static void test_clock_gettime64(void)
 {
 	if (!vdso_clock_gettime64) {
-		printf("[SKIP]\tNo vDSO, so skipping clock_gettime64() tests\n");
+		for (int clock = 0; clock < ARRAY_SIZE(clocknames); clock++)
+			ksft_test_result_skip("No vDSO, so skipping %s\n", clocknames[clock]);
+
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests -1\n");
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests min\n");
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime() tests max\n");
 		return;
 	}
 
@@ -384,14 +385,18 @@ static void test_gettimeofday(void)
 	struct timezone sys_tz, vdso_tz;
 	int vdso_ret, end_ret;
 
-	if (!vdso_gettimeofday)
+	if (!vdso_gettimeofday) {
+		ksft_test_result_skip("No vDSO, so skipping clock_gettime64() tests\n");
 		return;
+	}
 
-	printf("[RUN]\tTesting gettimeofday...\n");
+	ksft_print_msg("Testing gettimeofday...\n");
+
+	/* Make sure that passing NULL for tz doesn't crash. */
+	vdso_gettimeofday(&vdso, NULL);
 
 	if (sys_gettimeofday(&start, &sys_tz) < 0) {
-		printf("[FAIL]\tsys_gettimeofday failed (%d)\n", errno);
-		nerrs++;
+		ksft_test_result_fail("sys_gettimeofday failed (%d)\n", errno);
 		return;
 	}
 
@@ -399,39 +404,36 @@ static void test_gettimeofday(void)
 	end_ret = sys_gettimeofday(&end, NULL);
 
 	if (vdso_ret != 0 || end_ret != 0) {
-		printf("[FAIL]\tvDSO returned %d, syscall errno=%d\n",
-		       vdso_ret, errno);
-		nerrs++;
+		ksft_test_result_fail("vDSO returned %d, syscall errno=%d\n", vdso_ret, errno);
 		return;
 	}
 
-	printf("\t%llu.%06ld %llu.%06ld %llu.%06ld\n",
-	       (unsigned long long)start.tv_sec, start.tv_usec,
-	       (unsigned long long)vdso.tv_sec, vdso.tv_usec,
-	       (unsigned long long)end.tv_sec, end.tv_usec);
+	ksft_print_msg("\t%llu.%06ld %llu.%06ld %llu.%06ld\n",
+		       (unsigned long long)start.tv_sec, start.tv_usec,
+		       (unsigned long long)vdso.tv_sec, vdso.tv_usec,
+		       (unsigned long long)end.tv_sec, end.tv_usec);
 
 	if (!tv_leq(&start, &vdso) || !tv_leq(&vdso, &end)) {
-		printf("[FAIL]\tTimes are out of sequence\n");
-		nerrs++;
+		ksft_test_result_fail("Times are out of sequence\n");
+		return;
 	}
 
 	if (sys_tz.tz_minuteswest == vdso_tz.tz_minuteswest &&
 	    sys_tz.tz_dsttime == vdso_tz.tz_dsttime) {
-		printf("[OK]\ttimezones match: minuteswest=%d, dsttime=%d\n",
-		       sys_tz.tz_minuteswest, sys_tz.tz_dsttime);
+		ksft_test_result_pass("timezones match: minuteswest=%d, dsttime=%d\n",
+				      sys_tz.tz_minuteswest, sys_tz.tz_dsttime);
 	} else {
-		printf("[FAIL]\ttimezones do not match\n");
-		nerrs++;
+		ksft_test_result_fail("timezones do not match\n");
 	}
-
-	/* And make sure that passing NULL for tz doesn't crash. */
-	vdso_gettimeofday(&vdso, NULL);
 }
 
 int main(int argc, char **argv)
 {
 	name = (const char **)&names[VDSO_NAMES];
 
+	ksft_print_header();
+	ksft_set_plan(7 + ARRAY_SIZE(clocknames) * 2 + sysconf(_SC_NPROCESSORS_ONLN));
+
 	fill_function_pointers();
 
 	test_clock_gettime();
@@ -444,5 +446,5 @@ int main(int argc, char **argv)
 	 */
 	test_getcpu();
 
-	return nerrs ? 1 : 0;
+	ksft_finished();
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] kselftests: vdso: vdso_test_getcpu: conform test to TAP output
  2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test " Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 2/4] kselftests: vdso: vdso_test_correctness: " Muhammad Usama Anjum
@ 2024-05-29  7:24 ` Muhammad Usama Anjum
  2024-05-29  7:24 ` [PATCH 4/4] kselftests: vdso: vdso_test_gettimeofday: " Muhammad Usama Anjum
  2024-06-07 20:16 ` [PATCH 0/4] kselftests: vdso: conform tests " Shuah Khan
  4 siblings, 0 replies; 7+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-29  7:24 UTC (permalink / raw)
  To: Shuah Khan, Vincenzo Frascino, Muhammad Usama Anjum,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel

Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 tools/testing/selftests/vDSO/vdso_test_getcpu.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/vDSO/vdso_test_getcpu.c b/tools/testing/selftests/vDSO/vdso_test_getcpu.c
index b758f68c6c9c2..d8e247783057a 100644
--- a/tools/testing/selftests/vDSO/vdso_test_getcpu.c
+++ b/tools/testing/selftests/vDSO/vdso_test_getcpu.c
@@ -28,9 +28,12 @@ int main(int argc, char **argv)
 	getcpu_t get_cpu;
 	long ret;
 
+	ksft_print_header();
+	ksft_set_plan(1);
+
 	sysinfo_ehdr = getauxval(AT_SYSINFO_EHDR);
 	if (!sysinfo_ehdr) {
-		printf("AT_SYSINFO_EHDR is not present!\n");
+		ksft_print_msg("AT_SYSINFO_EHDR is not present!\n");
 		return KSFT_SKIP;
 	}
 
@@ -38,17 +41,12 @@ int main(int argc, char **argv)
 
 	get_cpu = (getcpu_t)vdso_sym(version, name[4]);
 	if (!get_cpu) {
-		printf("Could not find %s\n", name[4]);
+		ksft_print_msg("Could not find %s\n", name[4]);
 		return KSFT_SKIP;
 	}
 
 	ret = get_cpu(&cpu, &node, 0);
-	if (ret == 0) {
-		printf("Running on CPU %u node %u\n", cpu, node);
-	} else {
-		printf("%s failed\n", name[4]);
-		return KSFT_FAIL;
-	}
+	ksft_test_result(ret == 0, "Running on CPU %u node %u\n", cpu, node);
 
-	return 0;
+	ksft_finished();
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] kselftests: vdso: vdso_test_gettimeofday: conform test to TAP output
  2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
                   ` (2 preceding siblings ...)
  2024-05-29  7:24 ` [PATCH 3/4] kselftests: vdso: vdso_test_getcpu: " Muhammad Usama Anjum
@ 2024-05-29  7:24 ` Muhammad Usama Anjum
  2024-06-07 20:16 ` [PATCH 0/4] kselftests: vdso: conform tests " Shuah Khan
  4 siblings, 0 replies; 7+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-29  7:24 UTC (permalink / raw)
  To: Shuah Khan, Vincenzo Frascino, Muhammad Usama Anjum,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel

Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
 .../selftests/vDSO/vdso_test_gettimeofday.c   | 23 ++++++++++---------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/vDSO/vdso_test_gettimeofday.c b/tools/testing/selftests/vDSO/vdso_test_gettimeofday.c
index ee4f1ca56a71a..2f42277b29ffe 100644
--- a/tools/testing/selftests/vDSO/vdso_test_gettimeofday.c
+++ b/tools/testing/selftests/vDSO/vdso_test_gettimeofday.c
@@ -24,10 +24,13 @@ int main(int argc, char **argv)
 {
 	const char *version = versions[VDSO_VERSION];
 	const char **name = (const char **)&names[VDSO_NAMES];
-
 	unsigned long sysinfo_ehdr = getauxval(AT_SYSINFO_EHDR);
+
+	ksft_print_header();
+	ksft_set_plan(1);
+
 	if (!sysinfo_ehdr) {
-		printf("AT_SYSINFO_EHDR is not present!\n");
+		ksft_print_msg("AT_SYSINFO_EHDR is not present!\n");
 		return KSFT_SKIP;
 	}
 
@@ -38,20 +41,18 @@ int main(int argc, char **argv)
 	gtod_t gtod = (gtod_t)vdso_sym(version, name[0]);
 
 	if (!gtod) {
-		printf("Could not find %s\n", name[0]);
+		ksft_print_msg("Could not find %s\n", name[0]);
 		return KSFT_SKIP;
 	}
 
 	struct timeval tv;
 	long ret = gtod(&tv, 0);
 
-	if (ret == 0) {
-		printf("The time is %lld.%06lld\n",
-		       (long long)tv.tv_sec, (long long)tv.tv_usec);
-	} else {
-		printf("%s failed\n", name[0]);
-		return KSFT_FAIL;
-	}
+	if (ret == 0)
+		ksft_test_result_pass("The time is %lld.%06lld\n",
+				      (long long)tv.tv_sec, (long long)tv.tv_usec);
+	else
+		ksft_test_result_fail("%s failed\n", name[0]);
 
-	return 0;
+	ksft_finished();
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test to TAP output
  2024-05-29  7:24 ` [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test " Muhammad Usama Anjum
@ 2024-06-07 20:15   ` Shuah Khan
  0 siblings, 0 replies; 7+ messages in thread
From: Shuah Khan @ 2024-06-07 20:15 UTC (permalink / raw)
  To: Muhammad Usama Anjum, Shuah Khan, Vincenzo Frascino,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel, Shuah Khan

On 5/29/24 01:24, Muhammad Usama Anjum wrote:
> Conform the layout, informational and status messages to TAP. No
> functional change is intended other than the layout of output messages.
> 
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>

The message doesn't match the change. This patch converts the
test to use kselftest_harness.h

Please fix the message to indicate what changes are being made and
why.

> ---
>   .../selftests/vDSO/vdso_test_clock_getres.c   | 68 +++++++++----------
>   1 file changed, 33 insertions(+), 35 deletions(-)
> 
> diff --git a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c b/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
> index 38d46a8bf7cba..c1ede40521f05 100644
> --- a/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
> +++ b/tools/testing/selftests/vDSO/vdso_test_clock_getres.c
> @@ -25,7 +25,7 @@
>   #include <unistd.h>
>   #include <sys/syscall.h>
>   
> -#include "../kselftest.h"
> +#include "../kselftest_harness.h"
>   
>   static long syscall_clock_getres(clockid_t _clkid, struct timespec *_ts)
>   {
> @@ -54,18 +54,8 @@ const char *vdso_clock_name[12] = {
>   /*
>    * This function calls clock_getres in vdso and by system call
>    * with different values for clock_id.
> - *
> - * Example of output:
> - *
> - * clock_id: CLOCK_REALTIME [PASS]
> - * clock_id: CLOCK_BOOTTIME [PASS]
> - * clock_id: CLOCK_TAI [PASS]
> - * clock_id: CLOCK_REALTIME_COARSE [PASS]
> - * clock_id: CLOCK_MONOTONIC [PASS]
> - * clock_id: CLOCK_MONOTONIC_RAW [PASS]
> - * clock_id: CLOCK_MONOTONIC_COARSE [PASS]
>    */
> -static inline int vdso_test_clock(unsigned int clock_id)
> +static inline void vdso_test_clock(struct __test_metadata *_metadata, unsigned int clock_id)
>   {
>   	struct timespec x, y;
>   
> @@ -73,52 +63,60 @@ static inline int vdso_test_clock(unsigned int clock_id)
>   	clock_getres(clock_id, &x);
>   	syscall_clock_getres(clock_id, &y);
>   
> -	if ((x.tv_sec != y.tv_sec) || (x.tv_nsec != y.tv_nsec)) {
> -		printf(" [FAIL]\n");
> -		return KSFT_FAIL;
> -	}
> -
> -	printf(" [PASS]\n");
> -	return KSFT_PASS;
> +	ASSERT_EQ(0, ((x.tv_sec != y.tv_sec) || (x.tv_nsec != y.tv_nsec)));
>   }
>   
> -int main(int argc, char **argv)
> -{
> -	int ret = 0;
> -
>   #if _POSIX_TIMERS > 0
>   
>   #ifdef CLOCK_REALTIME
> -	ret += vdso_test_clock(CLOCK_REALTIME);
> +TEST(clock_realtime)
> +{
> +	vdso_test_clock(_metadata, CLOCK_REALTIME);
> +}
>   #endif
>   
>   #ifdef CLOCK_BOOTTIME
> -	ret += vdso_test_clock(CLOCK_BOOTTIME);
> +TEST(clock_boottime)
> +{
> +	vdso_test_clock(_metadata, CLOCK_BOOTTIME);
> +}
>   #endif
>   
>   #ifdef CLOCK_TAI
> -	ret += vdso_test_clock(CLOCK_TAI);
> +TEST(clock_tai)
> +{
> +	vdso_test_clock(_metadata, CLOCK_TAI);
> +}
>   #endif
>   
>   #ifdef CLOCK_REALTIME_COARSE
> -	ret += vdso_test_clock(CLOCK_REALTIME_COARSE);
> +TEST(clock_realtime_coarse)
> +{
> +	vdso_test_clock(_metadata, CLOCK_REALTIME_COARSE);
> +}
>   #endif
>   
>   #ifdef CLOCK_MONOTONIC
> -	ret += vdso_test_clock(CLOCK_MONOTONIC);
> +TEST(clock_monotonic)
> +{
> +	vdso_test_clock(_metadata, CLOCK_MONOTONIC);
> +}
>   #endif
>   
>   #ifdef CLOCK_MONOTONIC_RAW
> -	ret += vdso_test_clock(CLOCK_MONOTONIC_RAW);
> +TEST(clock_monotonic_raw)
> +{
> +	vdso_test_clock(_metadata, CLOCK_MONOTONIC_RAW);
> +}
>   #endif
>   
>   #ifdef CLOCK_MONOTONIC_COARSE
> -	ret += vdso_test_clock(CLOCK_MONOTONIC_COARSE);
> +TEST(clock_monotonic_coarse)
> +{
> +	vdso_test_clock(_metadata, CLOCK_MONOTONIC_COARSE);
> +}
>   #endif
>   
> -#endif
> -	if (ret > 0)
> -		return KSFT_FAIL;
> +#endif /* _POSIX_TIMERS > 0 */
>   
> -	return KSFT_PASS;
> -}
> +TEST_HARNESS_MAIN

thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/4] kselftests: vdso: conform tests to TAP output
  2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
                   ` (3 preceding siblings ...)
  2024-05-29  7:24 ` [PATCH 4/4] kselftests: vdso: vdso_test_gettimeofday: " Muhammad Usama Anjum
@ 2024-06-07 20:16 ` Shuah Khan
  4 siblings, 0 replies; 7+ messages in thread
From: Shuah Khan @ 2024-06-07 20:16 UTC (permalink / raw)
  To: Muhammad Usama Anjum, Shuah Khan, Vincenzo Frascino,
	Colin Ian King, Tiezhu Yang, Andrew Morton, linux-kselftest,
	linux-kernel
  Cc: kernel, Shuah Khan

On 5/29/24 01:24, Muhammad Usama Anjum wrote:
> Conform individual tests to TAP output. One patch conform one test. With
> this series, all vDSO tests become TAP conformant.
> 
> Muhammad Usama Anjum (4):
>    kselftests: vdso: vdso_test_clock_getres: conform test to TAP output
>    kselftests: vdso: vdso_test_correctness: conform test to TAP output
>    kselftests: vdso: vdso_test_getcpu: conform test to TAP output
>    kselftests: vdso: vdso_test_gettimeofday: conform test to TAP output
> 
>   .../selftests/vDSO/vdso_test_clock_getres.c   |  68 ++++----
>   .../selftests/vDSO/vdso_test_correctness.c    | 146 +++++++++---------
>   .../testing/selftests/vDSO/vdso_test_getcpu.c |  16 +-
>   .../selftests/vDSO/vdso_test_gettimeofday.c   |  23 +--
>   4 files changed, 126 insertions(+), 127 deletions(-)
> 

Sounds like this series is converting the test to kselftest_harness
and the commit message doesn't mention that.

I like to see the commit message match the change being made.

thanks,
-- Shuah

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-06-07 20:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-29  7:24 [PATCH 0/4] kselftests: vdso: conform tests to TAP output Muhammad Usama Anjum
2024-05-29  7:24 ` [PATCH 1/4] kselftests: vdso: vdso_test_clock_getres: conform test " Muhammad Usama Anjum
2024-06-07 20:15   ` Shuah Khan
2024-05-29  7:24 ` [PATCH 2/4] kselftests: vdso: vdso_test_correctness: " Muhammad Usama Anjum
2024-05-29  7:24 ` [PATCH 3/4] kselftests: vdso: vdso_test_getcpu: " Muhammad Usama Anjum
2024-05-29  7:24 ` [PATCH 4/4] kselftests: vdso: vdso_test_gettimeofday: " Muhammad Usama Anjum
2024-06-07 20:16 ` [PATCH 0/4] kselftests: vdso: conform tests " Shuah Khan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox