[igt-dev] [PATCH i-g-t v2] tests/kms : Added dynamic test cases

Gupta, Nidhi1 nidhi1.gupta at intel.com
Tue Apr 19 07:33:40 UTC 2022



-----Original Message-----
From: Modem, Bhanuprakash <bhanuprakash.modem at intel.com> 
Sent: Monday, April 18, 2022 4:24 PM
To: Gupta, Nidhi1 <nidhi1.gupta at intel.com>; igt-dev at lists.freedesktop.org
Subject: Re: [PATCH i-g-t v2] tests/kms : Added dynamic test cases

On Mon-18-04-2022 01:23 pm, Nidhi Gupta wrote:
> Modified kms_sequence and kms_concurrent to include dynamic test 
> cases.
> 
> Signed-off-by: Nidhi Gupta <nidhi1.gupta at intel.com>
> ---
>   tests/kms_concurrent.c |  6 ++++--
>   tests/kms_sequence.c   | 13 ++++++++++---
>   2 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c index 
> dc1e36f2..5536a369 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -339,9 +339,11 @@ run_tests_for_pipe(data_t *data, enum pipe pipe)
>   
>   	igt_describe("Test atomic mode setting concurrently with multiple planes and screen "
>   		     "resolution.");
> -	igt_subtest_f("pipe-%s", kmstest_pipe_name(pipe))
> +	igt_subtest_with_dynamic_f("pipe-%s", kmstest_pipe_name(pipe)) {
>   		for_each_valid_output_on_pipe(&data->display, pipe, output)
> -			run_test(data, pipe, output);
> +			igt_dynamic_f("%s", igt_output_name(output))
> +				run_test(data, pipe, output);

You need to remove for_each_valid_output_on_pipe() logic from run_test(), since we already doing here the same.
I already added this in IGT cleanup patch, to avoid the confusion I send a new series with 2 patches, one IGT cleanup and other dynamic tests

> +	}
>   }
>   
>   static int opt_handler(int option, int option_index, void *input) 
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c index 
> 9c287480..aeabce23 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -253,6 +253,7 @@ static void sequence_queue(data_t *data, int fd, int nchildren)
>   igt_main
>   {
>   	int fd;
> +	igt_output_t *output;
>   	data_t data;
>   	const struct {
>   		const char *name;
> @@ -278,6 +279,7 @@ igt_main
>   		fd = drm_open_driver_master(DRIVER_ANY);
>   		kmstest_set_vt_graphics_mode();
>   		igt_display_require(&data.display, fd);
> +		igt_display_require_output(&data.display);
>   	}
>   
>   	for (f = funcs; f->name; f++) {
> @@ -287,9 +289,14 @@ igt_main
>   
>   			igt_describe("This is a test of drmCrtcGetSequence and "
>   				     "drmCrtcQueueSequence");
> -			igt_subtest_f("%s-%s", f->name, m->name) {
> -				data.flags = m->flags;
> -				run_test(&data, fd, f->func);
> +			igt_subtest_with_dynamic_f("%s-%s", f->name, m->name) {
> +				for_each_connected_output(&data.display, output) {
> +					igt_dynamic_f("%s", igt_output_name(output)) {
> +						data.output = output;

We are no where using this "data.output".

Actually, run_test() is iterating for_each_pipe_with_valid_output() to get valid pipe/connector combination.

If you want to create dynamic subtests with pipe/connector config, you need to iterate for_each_pipe_with_valid_output() before calling
igt_dynamic() and remove the same logic from run_test().

- Bhanu

> +						data.flags = m->flags;
> +						run_test(&data, fd, f->func);
> +					}
> +				}
>   			}
>   		}
>   	}



More information about the igt-dev mailing list