[igt-dev] [PATCH i-g-t 4/8] tests: DRM selftests: switch to KUnit

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Wed Jun 7 10:24:55 UTC 2023


On Monday, 5 June 2023 12:47:12 CEST Dominik Karol Piatkowski wrote:
> From: Isabella Basso <isabbasso at riseup.net>
> 
> As the DRM selftests are now using KUnit [1], update IGT tests as well.
> 
> [1] - https://lore.kernel.org/all/20220708203052.236290-1-maira.canal@usp.br/
> 
> Signed-off-by: Isabella Basso <isabbasso at riseup.net>
> 
> v1 -> v2:
> - drm_buddy|drm_mm: fallback to igt_kselftests if igt_kunit failed
>   with code other than IGT_EXIT_ABORT
> - kms_selftest: move igt_kunit tests to separate subtests
> - kms_selftest: fallback to igt_kselftests if all subtests failed
> 
> v2 -> v3:
> - expose all subtests
> 
> Signed-off-by: Dominik Karol Piątkowski <dominik.karol.piatkowski at intel.com>
> Cc: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> Cc: Mauro Carvalho Chehab <mauro.chehab at linux.intel.com>
> ---
>  tests/drm_buddy.c    | 4 +++-
>  tests/drm_mm.c       | 4 +++-
>  tests/kms_selftest.c | 8 ++++++++
>  3 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/drm_buddy.c b/tests/drm_buddy.c
> index 06876e0c..3261f0d6 100644
> --- a/tests/drm_buddy.c
> +++ b/tests/drm_buddy.c
> @@ -10,5 +10,7 @@ IGT_TEST_DESCRIPTION("Basic sanity check of DRM's buddy 
allocator (struct drm_bu
>  
>  igt_main
>  {
> -	igt_kselftests("test-drm_buddy", NULL, NULL, NULL);
> +	int ret = igt_kunit("drm_buddy_test", NULL);
> +	if (ret != 0 && ret != IGT_EXIT_ABORT)
> +		igt_kselftests("test-drm_buddy", NULL, NULL, NULL);
>  }
> diff --git a/tests/drm_mm.c b/tests/drm_mm.c
> index 0bce7139..88f76a57 100644
> --- a/tests/drm_mm.c
> +++ b/tests/drm_mm.c
> @@ -156,5 +156,7 @@ IGT_TEST_DESCRIPTION("Basic sanity check of DRM's range 
manager (struct drm_mm)"
>  
>  igt_main
>  {
> -	igt_kselftests("test-drm_mm", NULL, NULL, NULL);
> +	int ret = igt_kunit("drm_mm_test", NULL);
> +	if (ret != 0 && ret != IGT_EXIT_ABORT)
> +		igt_kselftests("test-drm_mm", NULL, NULL, NULL);

My discussion with Mauro about subtest names and their consistency with inline 
documentation has lead me to a question: have we verified if behavior of 
--list-subtests option under such conditional construct is consistent with 
expectations of the testplan tool?

But maybe we should still get back to a design phase and the question of how 
we want these three generic DRM selftests to behave on old and new kernels 
after the change.

Option 1:
We just add kunit variants as new subtests, aside the existing i915-like 
selftest subtests.  Whether kunit or i915-like selftest variants will execute 
or skip depends on availability of required kernel side kunit or selftest 
modules.

Option 2:
Each of the three tests still provides one igt_subtest_with_dynamic().  Which 
dynamic subtests are executed, whether kunit or i915-like selftest or none, 
depends on availability of required kernel modules.

Option 3:
Current approach: provide only kunit subtests on kernels with kunit modules 
and only i915-like sleftest subtests otherwise.  But then, take care of 
--list-subtests option always returning only names of subtests that can be 
executed (for which kernel modules are available).
Aditional assumption for the testplan tool: the same kunit kernel modules 
available when building the testplan will be available when executing it.

Thanks,
Janusz
  
>  }
> diff --git a/tests/kms_selftest.c b/tests/kms_selftest.c
> index abc4bfe9..b27f60fb 100644
> --- a/tests/kms_selftest.c
> +++ b/tests/kms_selftest.c
> @@ -28,5 +28,13 @@ IGT_TEST_DESCRIPTION("Basic sanity check of KMS 
selftests.");
>  
>  igt_main
>  {
> +	static const char *kunit_subtests[] = { "drm_cmdline_parser_test", 
"drm_damage_helper_test",
> +						
"drm_dp_mst_helper_test", "drm_format_helper_test",
> +						"drm_format_test", 
"drm_framebuffer_test",
> +						
"drm_plane_helper_test", NULL };
> +
> +	for (int i = 0; kunit_subtests[i] != NULL; i++)
> +		igt_kunit(kunit_subtests[i], NULL);
> +
>  	igt_kselftests("test-drm_modeset", NULL, NULL, NULL);
>  }
> 






More information about the igt-dev mailing list