From: Dominik Karol Piatkowski <dominik.karol.piatkowski@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t 6/8] lib/igt_kmod: place KUnit tests on a subtest
Date: Mon, 5 Jun 2023 12:47:14 +0200 [thread overview]
Message-ID: <20230605104716.5678-7-dominik.karol.piatkowski@intel.com> (raw)
In-Reply-To: <20230605104716.5678-1-dominik.karol.piatkowski@intel.com>
From: Mauro Carvalho Chehab <mchehab@kernel.org>
There's a hidden bug at KUnit implementation: as it doesn't
place tests inside a subtest, trying to use it with igt_main
causes a crash:
$ ./build/tests/drm_mm --list
skipping is allowed only in fixtures, subtests or igt_simple_main
please refer to lib/igt_core documentation
drm_mm: ../lib/igt_core.c:437: internal_assert: Assertion `0' failed.
Received signal SIGABRT.
Stack trace:
#0 [fatal_sig_handler+0x17b]
#1 [__sigaction+0x50]
#2 [__pthread_kill_implementation+0x114]
#3 [gsignal+0x1e]
#4 [abort+0xdf]
#5 [__assert_fail_base.cold+0xe]
#6 [__assert_fail+0x47]
#7 [internal_assert+0xe5]
#8 [igt_skip+0x169]
#9 [__igt_skip_check+0x1bb]
#10 [igt_ktest_begin+0xa6]
#11 [igt_kunit+0x70]
#12 [main+0x2a]
#13 [__libc_start_call_main+0x7a]
#14 [__libc_start_main+0x8b]
#15 [_start+0x25]
Fix it by using igt_subtests() before actually implememnting
KUnit logic.
After the patch, it should now report subtests:
$ ./build/tests/drm_mm --list
all-tests
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Dominik Karol Piątkowski <dominik.karol.piatkowski@intel.com>
---
lib/igt_kmod.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index 8cb9cb2e..1309ab21 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -754,7 +754,7 @@ void igt_kselftest_get_tests(struct kmod_module *kmod,
*
* Returns: IGT default codes
*/
-int igt_kunit(const char *module_name, const char *opts)
+static int __igt_kunit(const char *module_name, const char *opts)
{
struct igt_ktest tst;
struct kmod_module *kunit_kmod;
@@ -852,6 +852,20 @@ unload:
return ret;
}
+int igt_kunit(const char *module_name, const char *opts)
+{
+ /*
+ * We need to use igt_subtest here, as otherwise it may crash with:
+ * skipping is allowed only in fixtures, subtests or igt_simple_main
+ * if used on igt_main. This is also needed in order to provide
+ * proper namespace for dynamic subtests, with is required for CI
+ * and for documentation.
+ */
+ igt_subtest_with_dynamic("all-tests")
+ return __igt_kunit(module_name, opts);
+ return 0;
+}
+
static int open_parameters(const char *module_name)
{
char path[256];
--
2.34.1
next prev parent reply other threads:[~2023-06-05 10:48 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-05 10:47 [igt-dev] [PATCH v5 i-g-t 0/8] Introduce KUnit Dominik Karol Piatkowski
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 1/8] lib/igt_kmod: rename kselftest functions to ktest Dominik Karol Piatkowski
2023-06-05 10:55 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 2/8] lib/igt_kmod.c: check if module is builtin before attempting to unload it Dominik Karol Piatkowski
2023-06-05 10:56 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 3/8] lib/igt_kmod: add compatibility for KUnit Dominik Karol Piatkowski
2023-06-05 10:59 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 4/8] tests: DRM selftests: switch to KUnit Dominik Karol Piatkowski
2023-06-05 11:00 ` Mauro Carvalho Chehab
2023-06-07 10:24 ` Janusz Krzysztofik
2023-06-07 12:45 ` Mauro Carvalho Chehab
2023-06-07 14:35 ` Janusz Krzysztofik
2023-06-07 14:39 ` Janusz Krzysztofik
2023-06-07 15:59 ` Mauro Carvalho Chehab
2023-06-07 17:40 ` Janusz Krzysztofik
2023-06-08 7:56 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 5/8] Change logic of ktap parser to run on a thread Dominik Karol Piatkowski
2023-06-05 11:03 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` Dominik Karol Piatkowski [this message]
2023-06-06 7:44 ` [igt-dev] [PATCH i-g-t 6/8] lib/igt_kmod: place KUnit tests on a subtest Janusz Krzysztofik
2023-06-06 8:21 ` Mauro Carvalho Chehab
2023-06-06 8:41 ` Janusz Krzysztofik
2023-06-06 9:18 ` Mauro Carvalho Chehab
2023-06-06 10:03 ` Janusz Krzysztofik
2023-06-06 13:57 ` Mauro Carvalho Chehab
2023-06-06 14:22 ` Janusz Krzysztofik
2023-06-07 8:10 ` Mauro Carvalho Chehab
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 7/8] kunit tests: add an optional name for the selftests Dominik Karol Piatkowski
2023-06-05 10:47 ` [igt-dev] [PATCH i-g-t 8/8] lib/igt_kmod: fix nesting igt_fixture in igt_subtest Dominik Karol Piatkowski
2023-06-05 11:05 ` Mauro Carvalho Chehab
2023-06-06 7:42 ` Janusz Krzysztofik
2023-06-08 13:31 ` Mauro Carvalho Chehab
2023-06-05 12:12 ` [igt-dev] ✓ Fi.CI.BAT: success for Introduce KUnit (rev5) Patchwork
2023-06-06 7:46 ` [igt-dev] [PATCH v5 i-g-t 0/8] Introduce KUnit Janusz Krzysztofik
2023-06-06 7:54 ` Piatkowski, Dominik Karol
2023-06-06 8:18 ` Mauro Carvalho Chehab
2023-06-06 8:35 ` Piatkowski, Dominik Karol
2023-06-07 14:07 ` Janusz Krzysztofik
2023-06-06 9:42 ` [igt-dev] ✗ Fi.CI.IGT: failure for Introduce KUnit (rev5) Patchwork
2023-06-09 10:15 ` [igt-dev] [PATCH v5 i-g-t 0/8] Introduce KUnit Janusz Krzysztofik
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=20230605104716.5678-7-dominik.karol.piatkowski@intel.com \
--to=dominik.karol.piatkowski@intel.com \
--cc=igt-dev@lists.freedesktop.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