[LTP] [PATCH v2] clock_gettime04: multiply the timediff if test in VM

Li Wang liwang@redhat.com
Tue Sep 15 10:44:06 CEST 2020


To balance that the test inside a VM can NOT get enough CPU time, which
result in sporadically fails with the time comparing.

clock_gettime04.c:155: PASS: CLOCK_REALTIME: Difference between successive readings is reasonable
clock_gettime04.c:155: PASS: CLOCK_REALTIME_COARSE: Difference between successive readings is reasonable
clock_gettime04.c:148: FAIL: CLOCK_MONOTONIC: Difference between successive readings greater than 5 ms (2): 22
clock_gettime04.c:155: PASS: CLOCK_MONOTONIC_COARSE: Difference between successive readings is reasonable
clock_gettime04.c:148: FAIL: CLOCK_MONOTONIC_RAW: Difference between successive readings greater than 5 ms (1): 22
clock_gettime04.c:148: FAIL: CLOCK_BOOTTIME: Difference between successive readings greater than 5 ms (1): 29

Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Cyril Hrubis <chrubis@suse.cz>
---
 .../kernel/syscalls/clock_gettime/clock_gettime04.c  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/clock_gettime/clock_gettime04.c b/testcases/kernel/syscalls/clock_gettime/clock_gettime04.c
index 2f484c43f..be872d9aa 100644
--- a/testcases/kernel/syscalls/clock_gettime/clock_gettime04.c
+++ b/testcases/kernel/syscalls/clock_gettime/clock_gettime04.c
@@ -22,6 +22,7 @@ clockid_t clks[] = {
 };
 
 static gettime_t ptr_vdso_gettime, ptr_vdso_gettime64;
+static long long DELTA = 5;
 
 static inline int do_vdso_gettime(gettime_t vdso, clockid_t clk_id, void *ts)
 {
@@ -82,6 +83,11 @@ static struct test_variants {
 
 static void setup(void)
 {
+	if (tst_is_virt(VIRT_ANY)) {
+		tst_res(TINFO, "Running in a virtual machine, multiply the DELTA by 10.");
+		DELTA *= 10;
+	}
+
 	find_clock_gettime_vdso(&ptr_vdso_gettime, &ptr_vdso_gettime64);
 }
 
@@ -143,9 +149,9 @@ static void run(unsigned int i)
 
 			diff /= 1000000;
 
-			if (diff >= 5) {
-				tst_res(TFAIL, "%s: Difference between successive readings greater than 5 ms (%d): %lld",
-					tst_clock_name(clks[i]), j, diff);
+			if (diff >= DELTA) {
+				tst_res(TFAIL, "%s: Difference between successive readings greater than %lld ms (%d): %lld",
+					tst_clock_name(clks[i]), DELTA, j, diff);
 				return;
 			}
 		}
-- 
2.21.3



More information about the ltp mailing list