From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
andrew+netdev@lunn.ch, horms@kernel.org,
willemdebruijn.kernel@gmail.com, shuah@kernel.org,
sdf@fomichev.me, krakauer@google.com,
linux-kselftest@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next 02/12] selftests: net: py: extract the case generation logic
Date: Mon, 17 Nov 2025 12:58:00 -0800 [thread overview]
Message-ID: <20251117205810.1617533-3-kuba@kernel.org> (raw)
In-Reply-To: <20251117205810.1617533-1-kuba@kernel.org>
In preparation for adding test variants move the test case
collection logic to a dedicated function. New helper returns
(function, args, name, )
tuples. The main test loop can simply run them, not much
logic or discernment needed.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/net/lib/py/ksft.py | 31 +++++++++++++++-------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/lib/py/ksft.py b/tools/testing/selftests/net/lib/py/ksft.py
index 56dd9bd060cd..52c42c313cf2 100644
--- a/tools/testing/selftests/net/lib/py/ksft.py
+++ b/tools/testing/selftests/net/lib/py/ksft.py
@@ -135,7 +135,7 @@ KSFT_DISRUPTIVE = True
time.sleep(sleep)
-def ktap_result(ok, cnt=1, case="", comment=""):
+def ktap_result(ok, cnt=1, case_name="", comment=""):
global KSFT_RESULT_ALL
KSFT_RESULT_ALL = KSFT_RESULT_ALL and ok
@@ -145,8 +145,8 @@ KSFT_DISRUPTIVE = True
res += "ok "
res += str(cnt) + " "
res += KSFT_MAIN_NAME
- if case:
- res += "." + str(case.__name__)
+ if case_name:
+ res += "." + case_name
if comment:
res += " # " + comment
print(res, flush=True)
@@ -219,9 +219,13 @@ KSFT_DISRUPTIVE = True
ksft_pr(f"Ignoring SIGTERM (cnt: {term_cnt}), already exiting...")
-def ksft_run(cases=None, globs=None, case_pfx=None, args=()):
- cases = cases or []
+def _ksft_generate_test_cases(cases, globs, case_pfx, args):
+ """Generate a flat list of (func, args, name) tuples"""
+ cases = cases or []
+ test_cases = []
+
+ # If using the globs method find all relevant functions
if globs and case_pfx:
for key, value in globs.items():
if not callable(value):
@@ -231,6 +235,15 @@ KSFT_DISRUPTIVE = True
cases.append(value)
break
+ for func in cases:
+ test_cases.append((func, args, func.__name__))
+
+ return test_cases
+
+
+def ksft_run(cases=None, globs=None, case_pfx=None, args=()):
+ test_cases = _ksft_generate_test_cases(cases, globs, case_pfx, args)
+
global term_cnt
term_cnt = 0
prev_sigterm = signal.signal(signal.SIGTERM, _ksft_intr)
@@ -238,19 +251,19 @@ KSFT_DISRUPTIVE = True
totals = {"pass": 0, "fail": 0, "skip": 0, "xfail": 0}
print("TAP version 13", flush=True)
- print("1.." + str(len(cases)), flush=True)
+ print("1.." + str(len(test_cases)), flush=True)
global KSFT_RESULT
cnt = 0
stop = False
- for case in cases:
+ for func, args, name in test_cases:
KSFT_RESULT = True
cnt += 1
comment = ""
cnt_key = ""
try:
- case(*args)
+ func(*args)
except KsftSkipEx as e:
comment = "SKIP " + str(e)
cnt_key = 'skip'
@@ -272,7 +285,7 @@ KSFT_DISRUPTIVE = True
if not cnt_key:
cnt_key = 'pass' if KSFT_RESULT else 'fail'
- ktap_result(KSFT_RESULT, cnt, case, comment=comment)
+ ktap_result(KSFT_RESULT, cnt, name, comment=comment)
totals[cnt_key] += 1
if stop:
--
2.51.1
next prev parent reply other threads:[~2025-11-17 20:58 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-17 20:57 [PATCH net-next 00/12] selftests: drv-net: convert GRO and Toeplitz tests to work for drivers in NIPA Jakub Kicinski
2025-11-17 20:57 ` [PATCH net-next 01/12] selftests: net: py: coding style improvements Jakub Kicinski
2025-11-17 20:58 ` Jakub Kicinski [this message]
2025-11-17 20:58 ` [PATCH net-next 03/12] selftests: net: py: add test variants Jakub Kicinski
2025-11-17 20:58 ` [PATCH net-next 04/12] selftests: drv-net: xdp: use variants for qstat tests Jakub Kicinski
2025-11-17 20:58 ` [PATCH net-next 05/12] selftests: net: relocate gro and toeplitz tests to drivers/net Jakub Kicinski
2025-11-18 2:07 ` Willem de Bruijn
2025-11-17 20:58 ` [PATCH net-next 06/12] selftests: net: py: support ksft ready without wait Jakub Kicinski
2025-11-17 20:58 ` [PATCH net-next 07/12] selftests: net: py: read ip link info about remote dev Jakub Kicinski
2025-11-17 20:58 ` [PATCH net-next 08/12] netdevsim: pass packets thru GRO on Rx Jakub Kicinski
2025-11-18 2:07 ` Willem de Bruijn
2025-11-17 20:58 ` [PATCH net-next 09/12] selftests: drv-net: add a Python version of the GRO test Jakub Kicinski
2025-11-18 2:08 ` Willem de Bruijn
2025-11-17 20:58 ` [PATCH net-next 10/12] selftests: drv-net: hw: convert the Toeplitz test to Python Jakub Kicinski
2025-11-18 2:09 ` Willem de Bruijn
2025-11-17 20:58 ` [PATCH net-next 11/12] netdevsim: add loopback support Jakub Kicinski
2025-11-17 20:58 ` [PATCH net-next 12/12] selftests: net: remove old setup_* scripts Jakub Kicinski
2025-11-18 2:11 ` [PATCH net-next 00/12] selftests: drv-net: convert GRO and Toeplitz tests to work for drivers in NIPA Willem de Bruijn
2025-11-18 4:56 ` Jakub Kicinski
2025-11-18 14:13 ` Willem de Bruijn
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=20251117205810.1617533-3-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=krakauer@google.com \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=shuah@kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.