[igt-dev] [v2 i-g-t 1/3] tests/kms_setmode: Use dynamic subtests

Rodrigo Siqueira Jordao rjordrigo at amd.com
Tue Mar 15 13:37:31 UTC 2022



On 2022-03-08 09:22, Bhanuprakash Modem wrote:
> Add support to use dynamic subtests.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> Reviewed-by: Swati Sharma <swati2.sharma at intel.com>
> ---
>   tests/kms_setmode.c | 37 ++++++++++++++++++++++++++++++++++---
>   1 file changed, 34 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index 18d81ee4f3..a47d47e5ab 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -653,6 +653,26 @@ static void test_crtc_config(const struct test_config *tconf,
>   	return;
>   }
>   
> +static int get_test_name_str(struct crtc_config *crtc, char *buf,
> +				size_t buf_size)
> +{
> +	int pos;
> +	int i;
> +
> +	pos = snprintf(buf, buf_size, "pipe-%s-", kmstest_pipe_name(crtc->pipe_id));
> +
> +	for (i = 0; i < crtc->connector_count; i++) {
> +		drmModeConnector *connector = crtc->cconfs[i].connector;
> +
> +		pos += snprintf(&buf[pos], buf_size - pos,
> +			"%s%s-%d", i ? "-" : "",
> +			kmstest_connector_type_str(connector->connector_type),
> +			connector->connector_type_id);
> +	}
> +
> +	return pos;
> +}
> +
>   static void test_one_combination(const struct test_config *tconf,
>   				 struct connector_config *cconfs,
>   				 int connector_count)
> @@ -664,8 +684,19 @@ static void test_one_combination(const struct test_config *tconf,
>   	setup_crtcs(tconf, cconfs, connector_count, crtcs,
>   		    &crtc_count, &config_valid);
>   
> -	if (config_valid == !(tconf->flags & TEST_INVALID))
> -		test_crtc_config(tconf, crtcs, crtc_count);
> +	if (config_valid == !(tconf->flags & TEST_INVALID)) {
> +		int i, pos = 0;
> +		char test_name[256];
> +
> +		for (i = 0; i < crtc_count; i++) {
> +			if (i > 0)
> +				pos += snprintf(&test_name[pos], ARRAY_SIZE(test_name) - pos, "-");
> +			pos += get_test_name_str(&crtcs[i], &test_name[pos], ARRAY_SIZE(test_name) - pos);
> +		}
> +
> +		igt_dynamic_f("%s", test_name)
> +			test_crtc_config(tconf, crtcs, crtc_count);
> +	}
>   
>   	cleanup_crtcs(crtcs, crtc_count);
>   }
> @@ -939,7 +970,7 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
>   
>   	for (i = 0; i < ARRAY_SIZE(tests); i++) {
>   		igt_describe("Tests the mode by iterating through all valid/invalid crtc/connector combinations");
> -		igt_subtest(tests[i].name) {
> +		igt_subtest_with_dynamic(tests[i].name) {

Hi Bhanuprakash,

The above change causes a regression in AMD CI. Previously, all the 
below tests were passing, but now they are skipping.

basic-clone-single-crtc
clone-exclusive-crtc
invalid-clone-exclusive-crtc
invalid-clone-single-crtc
invalid-clone-single-crtc-stealing
basic-clone-single-crtc

If we use igt_subtest instead of igt_subtest_with_dynamic, everything 
gets back to normal. Can we reintroduce igt_subtest? Or is there a 
better way to fix this issue?

Thanks
Siqueira


>   			struct test_config tconf = {
>   				.flags		= tests[i].flags,
>   				.name		= tests[i].name,



More information about the igt-dev mailing list