[igt-dev] [PATCH i-g-t] tests/kms_force_connector_basic: Test Cleanup

Modem, Bhanuprakash bhanuprakash.modem at intel.com
Mon Sep 12 07:43:37 UTC 2022


On Thu-25-08-2022 04:48 pm, Mohammed Thasleem wrote:
> Sanitize the system state before starting the subtest.
> 
> Signed-off-by: Mohammed Thasleem <mohammed.thasleem at intel.com>
> ---
>   tests/kms_force_connector_basic.c | 51 ++++++++-----------------------
>   1 file changed, 13 insertions(+), 38 deletions(-)
> 
> diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> index 683d3672..6ae2da09 100644
> --- a/tests/kms_force_connector_basic.c
> +++ b/tests/kms_force_connector_basic.c
> @@ -31,36 +31,11 @@ IGT_TEST_DESCRIPTION("Check the debugfs force connector/edid features work"
>   	igt_assert_eq(m.hdisplay, h); igt_assert_eq(m.vdisplay, w); \
>   	igt_assert_eq(m.vrefresh, r);
>   
> -static void reset_connectors(void)
> -{
> -	int drm_fd = 0;
> -	drmModeRes *res;
> -	drmModeConnector *connector = NULL;
> -
> -	drm_fd = drm_open_driver_master(DRIVER_ANY);
> -	res = drmModeGetResources(drm_fd);
> -
> -	for (int i = 0; i < res->count_connectors; i++) {
> -
> -		connector = drmModeGetConnectorCurrent(drm_fd,
> -						       res->connectors[i]);
> -
> -		kmstest_force_connector(drm_fd, connector,
> -					FORCE_CONNECTOR_UNSPECIFIED);
> -
> -		kmstest_force_edid(drm_fd, connector, NULL);
> -
> -		drmModeFreeConnector(connector);
> -	}
> -
> -	igt_set_module_param_int(drm_fd, "load_detect_test", 0);
> -}
> -
>   static int opt_handler(int opt, int opt_index, void *data)
>   {
>   	switch (opt) {
>   	case 'r':
> -		reset_connectors();
> +		igt_reset_connectors();

Intention of these two functions are different.

>   		exit(0);
>   		break;
>   	}
> @@ -80,6 +55,7 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   	/* force the VGA output and test that it worked */

https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_force_connector_basic.c#n94
https://cgit.freedesktop.org/drm/igt-gpu-tools/tree/tests/kms_force_connector_basic.c#n113

It seems, this test is intended to run on VGA & HDMI connectors only.

https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7690/shards-all.html?testfilter=kms_force_connector_basic

But it is executing on all connectors.

>   	int drm_fd = 0;
>   	drmModeRes *res;
> +	igt_display_t display;
>   	drmModeConnector *connector = NULL, *temp;
>   	int start_n_modes, start_connection;
>   
> @@ -87,6 +63,8 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   		unsigned connector_id = 0;
>   
>   		drm_fd = drm_open_driver_master(DRIVER_ANY);
> +		igt_display_require(&display, drm_fd);
> +		kmstest_set_vt_graphics_mode();
>   
>   		res = drmModeGetResources(drm_fd);
>   		igt_require(res);
> @@ -156,8 +134,8 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   		 * disable all outputs to make sure we have a
>   		 * free crtc available for load detect
>   		 */
> -		kmstest_set_vt_graphics_mode();
> -		kmstest_unset_all_crtcs(drm_fd, res);
> +		igt_display_reset(&display);
> +		igt_display_commit(&display);

As we are using libdrm calls directly, igt_displa_reset() won't help much.

>   
>   		igt_set_module_param_int(drm_fd, "load_detect_test", 1);
>   
> @@ -228,7 +206,10 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   
>   	igt_describe("Test to check the forced connector state.");
>   	igt_subtest("force-connector-state") {
> -		igt_display_t display;
> +
> +		/*reset display before attempt to use it */
> +		igt_display_reset(&display);
> +		igt_display_commit(&display);
>   
>   		/* force the connector on and check the reported values */
>   		kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_ON);
> @@ -238,13 +219,6 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   		igt_assert_lt(0, temp->count_modes);
>   		drmModeFreeConnector(temp);
>   
> -		/* attempt to use the display */
> -		kmstest_set_vt_graphics_mode();
> -		igt_display_require(&display, drm_fd);
> -		igt_display_commit(&display);
> -		igt_display_fini(&display);
> -
> -
>   		/* force the connector off */
>   		kmstest_force_connector(drm_fd, connector,
>   					FORCE_CONNECTOR_OFF);
> @@ -261,6 +235,8 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   						  connector->connector_id);
>   		igt_assert_eq(temp->connection, start_connection);
>   		drmModeFreeConnector(temp);
> +
> +		igt_display_fini(&display);

Also, I can recommend to create a new function for each subtest instead 
of managing the full logic within the igt_subtest().

>   	}
>   
>   	igt_describe("Test to check the values after forcing edid.");
> @@ -341,8 +317,7 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>   
>   	igt_fixture {
>   		drmModeFreeConnector(connector);
> +		igt_reset_connectors();
>   		close(drm_fd);
> -
> -		reset_connectors();
>   	}
>   }



More information about the igt-dev mailing list