lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <49d57ab512c47f01d6c374d533f1752871ea4246.1743091573.git.geert@linux-m68k.org>
Date: Thu, 27 Mar 2025 17:07:15 +0100
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Brendan Higgins <brendan.higgins@...ux.dev>,
	David Gow <davidgow@...gle.com>,
	Rae Moar <rmoar@...gle.com>,
	Alexandre Belloni <alexandre.belloni@...tlin.com>
Cc: linux-kselftest@...r.kernel.org,
	kunit-dev@...glegroups.com,
	linux-rtc@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	Geert Uytterhoeven <geert@...ux-m68k.org>
Subject: [PATCH/RFC] kunit/rtc: Add real support for very slow tests

When running rtc_lib_test ("lib_test" before my "[PATCH] rtc: Rename
lib_test to rtc_lib_test") on m68k/ARAnyM:

    KTAP version 1
    1..1
	KTAP version 1
	# Subtest: rtc_lib_test_cases
	# module: rtc_lib_test
	1..2
	# rtc_time64_to_tm_test_date_range_1000: Test should be marked slow (runtime: 3.222371420s)
	ok 1 rtc_time64_to_tm_test_date_range_1000
	# rtc_time64_to_tm_test_date_range_160000: try timed out
	# rtc_time64_to_tm_test_date_range_160000: test case timed out
	# rtc_time64_to_tm_test_date_range_160000.speed: slow
	not ok 2 rtc_time64_to_tm_test_date_range_160000
    # rtc_lib_test_cases: pass:1 fail:1 skip:0 total:2
    # Totals: pass:1 fail:1 skip:0 total:2
    not ok 1 rtc_lib_test_cases

Commit 02c2d0c2a84172c3 ("kunit: Add speed attribute") added the notion
of "very slow" tests, but this is further unused and unhandled.

Hence:
  1. Introduce KUNIT_CASE_VERY_SLOW(),
  2. Increase timeout by ten; ideally this should only be done for very
     slow tests, but I couldn't find how to access kunit_case.attr.case
     from kunit_try_catch_run(),
  3. Mark rtc_time64_to_tm_test_date_range_1000 slow,
  4. Mark rtc_time64_to_tm_test_date_range_160000 very slow.

Afterwards:

    KTAP version 1
    1..1
	KTAP version 1
	# Subtest: rtc_lib_test_cases
	# module: rtc_lib_test
	1..2
	# rtc_time64_to_tm_test_date_range_1000.speed: slow
	ok 1 rtc_time64_to_tm_test_date_range_1000
	# rtc_time64_to_tm_test_date_range_160000.speed: very_slow
	ok 2 rtc_time64_to_tm_test_date_range_160000
    # rtc_lib_test_cases: pass:2 fail:0 skip:0 total:2
    # Totals: pass:2 fail:0 skip:0 total:2
    ok 1 rtc_lib_test_cases

Signed-off-by: Geert Uytterhoeven <geert@...ux-m68k.org>
---
 drivers/rtc/rtc_lib_test.c |  4 ++--
 include/kunit/test.h       | 11 +++++++++++
 lib/kunit/try-catch.c      |  3 ++-
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/rtc/rtc_lib_test.c b/drivers/rtc/rtc_lib_test.c
index c30c759662e39b48..fd3210e39d37dbc6 100644
--- a/drivers/rtc/rtc_lib_test.c
+++ b/drivers/rtc/rtc_lib_test.c
@@ -85,8 +85,8 @@ static void rtc_time64_to_tm_test_date_range_1000(struct kunit *test)
 }
 
 static struct kunit_case rtc_lib_test_cases[] = {
-	KUNIT_CASE(rtc_time64_to_tm_test_date_range_1000),
-	KUNIT_CASE_SLOW(rtc_time64_to_tm_test_date_range_160000),
+	KUNIT_CASE_SLOW(rtc_time64_to_tm_test_date_range_1000),
+	KUNIT_CASE_VERY_SLOW(rtc_time64_to_tm_test_date_range_160000),
 	{}
 };
 
diff --git a/include/kunit/test.h b/include/kunit/test.h
index 9b773406e01f3c43..4e3c1cae5b41466e 100644
--- a/include/kunit/test.h
+++ b/include/kunit/test.h
@@ -183,6 +183,17 @@ static inline char *kunit_status_to_ok_not_ok(enum kunit_status status)
 		{ .run_case = test_name, .name = #test_name,	\
 		  .attr.speed = KUNIT_SPEED_SLOW, .module_name = KBUILD_MODNAME}
 
+/**
+ * KUNIT_CASE_VERY_SLOW - A helper for creating a &struct kunit_case
+ * with the very slow attribute
+ *
+ * @test_name: a reference to a test case function.
+ */
+
+#define KUNIT_CASE_VERY_SLOW(test_name)			\
+		{ .run_case = test_name, .name = #test_name,	\
+		  .attr.speed = KUNIT_SPEED_VERY_SLOW, .module_name = KBUILD_MODNAME}
+
 /**
  * KUNIT_CASE_PARAM - A helper for creation a parameterized &struct kunit_case
  *
diff --git a/lib/kunit/try-catch.c b/lib/kunit/try-catch.c
index 6bbe0025b0790bd2..92099c67bb21d0a4 100644
--- a/lib/kunit/try-catch.c
+++ b/lib/kunit/try-catch.c
@@ -56,7 +56,8 @@ static unsigned long kunit_test_timeout(void)
 	 * If tests timeout due to exceeding sysctl_hung_task_timeout_secs,
 	 * the task will be killed and an oops generated.
 	 */
-	return 300 * msecs_to_jiffies(MSEC_PER_SEC); /* 5 min */
+	// FIXME times ten for KUNIT_SPEED_VERY_SLOW?
+	return 10 * 300 * msecs_to_jiffies(MSEC_PER_SEC); /* 5 min */
 }
 
 void kunit_try_catch_run(struct kunit_try_catch *try_catch, void *context)
-- 
2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ