From: David Laight <david.laight.linux@gmail.com>
To: linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>
Cc: David Laight <david.laight.linux@gmail.com>,
Arnd Bergmann <arnd@arndb.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Christophe Leroy <christophe.leroy@c-s.fr>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
nnac123@linux.ibm.com, horms@kernel.org
Subject: [PATCH next 7/8] test_hexdump: Run fixed not random tests
Date: Sat, 8 Mar 2025 09:34:51 +0000 [thread overview]
Message-ID: <20250308093452.3742-8-david.laight.linux@gmail.com> (raw)
In-Reply-To: <20250308093452.3742-1-david.laight.linux@gmail.com>
For reproducibilty instead of running 16 random length with two
random 'rowsize' picked from 16 and 32, run the tests with rowsize
16 and 32 and all the lengths from 1 to rowsize.
(This still includes all the cases where groupsize gets forced to 1.)
For the overflow tests increase 'len' if the data fits and 'buflen'
if it doesn't.
The is more tests than really needed but covers all the interesting
cases without generating a very large number of tests.
Signed-off-by: David Laight <david.laight.linux@gmail.com>
---
lib/test_hexdump.c | 64 +++++++++++++++++++++++-----------------------
1 file changed, 32 insertions(+), 32 deletions(-)
diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c
index 56c0dfbd075b..877033a570d4 100644
--- a/lib/test_hexdump.c
+++ b/lib/test_hexdump.c
@@ -7,7 +7,6 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/random.h>
#include <linux/string.h>
static const unsigned char data_b[] = {
@@ -109,18 +108,19 @@ static void __init test_hexdump(size_t len, size_t rowsize, size_t groupsize,
static void __init test_hexdump_set(size_t rowsize, bool ascii)
{
- size_t d = min(sizeof(data_b), rowsize);
- size_t len = get_random_u32_inclusive(1, d);
+ size_t len;
- test_hexdump(len, rowsize, 4, ascii);
- test_hexdump(len, rowsize, 2, ascii);
- test_hexdump(len, rowsize, 8, ascii);
- test_hexdump(len, rowsize, 1, ascii);
+ for (len = 1; len <= rowsize; len++) {
+ test_hexdump(len, rowsize, 4, ascii);
+ test_hexdump(len, rowsize, 2, ascii);
+ test_hexdump(len, rowsize, 8, ascii);
+ test_hexdump(len, rowsize, 1, ascii);
+ }
}
-static void __init test_hexdump_overflow(size_t buflen, size_t len,
- size_t rowsize, size_t groupsize,
- bool ascii)
+static bool __init test_hexdump_overflow(size_t buflen, size_t len,
+ size_t rowsize, size_t groupsize,
+ bool ascii)
{
char test[TEST_HEXDUMP_BUF_SIZE];
char buf[TEST_HEXDUMP_BUF_SIZE];
@@ -154,40 +154,40 @@ static void __init test_hexdump_overflow(size_t buflen, size_t len,
pr_err("Expect: %zd '%.*s'\n", expected, TEST_HEXDUMP_BUF_SIZE, test);
failed_tests++;
}
+
+ return expected < buflen;
}
-static void __init test_hexdump_overflow_set(size_t buflen, bool ascii)
+static void __init test_hexdump_overflow_set(size_t rowsize, bool ascii)
{
- unsigned int i = 0;
- size_t rowsize = get_random_u32_inclusive(1, 2) * 16;
-
- do {
- size_t groupsize = 1 << i;
- size_t len = get_random_u32_below(rowsize) + groupsize;
-
- test_hexdump_overflow(buflen, rounddown(len, groupsize),
- rowsize, groupsize, ascii);
- } while (i++ < 3);
+ size_t groupsize, len, buflen;
+
+ for (groupsize = 1; groupsize <= 8; groupsize *= 2) {
+ len = 0;
+ buflen = 0;
+ for (; len <= rowsize && buflen <= TEST_HEXDUMP_BUF_SIZE;) {
+ if (test_hexdump_overflow(buflen, len, rowsize,
+ groupsize, ascii))
+ len += groupsize;
+ else
+ buflen++;
+ }
+ }
}
static int __init test_hexdump_init(void)
{
- unsigned int i;
size_t rowsize;
- rowsize = get_random_u32_inclusive(1, 2) * 16;
- for (i = 0; i < 16; i++)
+ for (rowsize = 16; rowsize <= 32; rowsize += 16) {
test_hexdump_set(rowsize, false);
-
- rowsize = get_random_u32_inclusive(1, 2) * 16;
- for (i = 0; i < 16; i++)
test_hexdump_set(rowsize, true);
+ }
- for (i = 0; i <= TEST_HEXDUMP_BUF_SIZE; i++)
- test_hexdump_overflow_set(i, false);
-
- for (i = 0; i <= TEST_HEXDUMP_BUF_SIZE; i++)
- test_hexdump_overflow_set(i, true);
+ test_hexdump_overflow_set(16, false);
+ test_hexdump_overflow_set(16, true);
+ test_hexdump_overflow_set(32, false);
+ test_hexdump_overflow_set(32, true);
if (failed_tests == 0)
pr_info("all %u tests passed\n", total_tests);
--
2.39.5
next prev parent reply other threads:[~2025-03-08 9:35 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-08 9:34 [PATCH next 0/8] test_hexdump: Improve test coverage David Laight
2025-03-08 9:34 ` [PATCH next 1/8] test_hexdump: Change rowsize and groupsize to size_t David Laight
2025-03-10 8:28 ` Andy Shevchenko
2025-03-08 9:34 ` [PATCH next 2/8] test_hexdump: Create test output data from the binary input data buffer David Laight
2025-03-10 8:31 ` Andy Shevchenko
2025-03-12 19:28 ` David Laight
2025-03-12 19:36 ` Andy Shevchenko
2025-03-13 9:17 ` David Laight
2025-03-08 9:34 ` [PATCH next 3/8] test_hexdump: Use longer variable names David Laight
2025-03-08 9:34 ` [PATCH next 4/8] test_hexdump: Check for buffer overrun of sample output buffer David Laight
2025-03-10 9:01 ` Andy Shevchenko
2025-03-12 19:37 ` David Laight
2025-03-08 9:34 ` [PATCH next 5/8] test_hexdump: Fix sample output if zero bytes requested David Laight
2025-03-10 9:03 ` Andy Shevchenko
2025-03-12 19:40 ` David Laight
2025-03-08 9:34 ` [PATCH next 6/8] test_hexdump: If a test fails print all the parameters David Laight
2025-03-08 9:34 ` David Laight [this message]
2025-03-08 9:34 ` [PATCH next 8/8] test_hexdump: Test all 256 byte values David Laight
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250308093452.3742-8-david.laight.linux@gmail.com \
--to=david.laight.linux@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=arnd@arndb.de \
--cc=christophe.leroy@c-s.fr \
--cc=horms@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=nnac123@linux.ibm.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox