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]
Date: Wed, 13 Mar 2024 14:01:24 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: John Stultz <jstultz@...gle.com>
Cc: Thomas Gleixner <tglx@...utronix.de>,
	Stephen Boyd <sboyd@...nel.org>,
	linux-kernel@...r.kernel.org,
	Daniel Diaz <daniel.diaz@...aro.org>,
	Guenter Roeck <linux@...ck-us.net>,
	Rae Moar <rmoar@...gle.com>,
	Shuah Khan <skhan@...uxfoundation.org>
Subject: [PATCH] kunit: time: Add faster unit test with shorter time range

Commit a547c4ce10bd ("kunit: time: Mark test as slow using test
attributes") marked the time unit test as slow. This means it does not
run anymore if slow tests are disabled. This reduces test coverage and
is thus undesirable. At the same time, the test currently covers a range
of 160,000 years, which has limited value.

Add additional test case covering a total range of 1,600 years. This test
takes less than a second to run even on slow systems while still covering
twice the leap year calculation range of 400 years around the center date.
This test can run even with slow tests disabled.

Cc: Rae Moar <rmoar@...gle.com>
Cc: Shuah Khan <skhan@...uxfoundation.org>
Signed-off-by: Guenter Roeck <linux@...ck-us.net>
---
 kernel/time/time_test.c | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/kernel/time/time_test.c b/kernel/time/time_test.c
index 3e5d422dd15c..15c6f3a5e73c 100644
--- a/kernel/time/time_test.c
+++ b/kernel/time/time_test.c
@@ -47,18 +47,18 @@ static void advance_date(long *year, int *month, int *mday, int *yday)
 }
 
 /*
- * Checks every day in a 160000 years interval centered at 1970-01-01
+ * Checks every day in a specified interval centered at 1970-01-01
  * against the expected result.
  */
-static void time64_to_tm_test_date_range(struct kunit *test)
+static void time64_to_tm_test_date_range(struct kunit *test, int years)
 {
 	/*
-	 * 80000 years	= (80000 / 400) * 400 years
-	 *		= (80000 / 400) * 146097 days
-	 *		= (80000 / 400) * 146097 * 86400 seconds
+	 * years	= (years / 400) * 400 years
+	 *		= (years / 400) * 146097 days
+	 *		= (years / 400) * 146097 * 86400 seconds
 	 */
-	time64_t total_secs = ((time64_t) 80000) / 400 * 146097 * 86400;
-	long year = 1970 - 80000;
+	time64_t total_secs = ((time64_t) years) / 400 * 146097 * 86400;
+	long year = 1970 - years;
 	int month = 1;
 	int mdday = 1;
 	int yday = 0;
@@ -85,8 +85,27 @@ static void time64_to_tm_test_date_range(struct kunit *test)
 	}
 }
 
+ /*
+  * Checks every day in a 1600 years interval centered at 1970-01-01
+  * against the expected result.
+  */
+static void time64_to_tm_test_date_range_1600(struct kunit *test)
+{
+	time64_to_tm_test_date_range(test, 800);
+}
+
+ /*
+  * Checks every day in a 160000 years interval centered at 1970-01-01
+  * against the expected result.
+  */
+static void time64_to_tm_test_date_range_160000(struct kunit *test)
+{
+	time64_to_tm_test_date_range(test, 80000);
+}
+
 static struct kunit_case time_test_cases[] = {
-	KUNIT_CASE_SLOW(time64_to_tm_test_date_range),
+	KUNIT_CASE(time64_to_tm_test_date_range_1600),
+	KUNIT_CASE_SLOW(time64_to_tm_test_date_range_160000),
 	{}
 };
 
-- 
2.39.2


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ