Bug 111630

Summary: Generate a list of tags for the machine that runs the testsuite
Product: DRI Reporter: Martin Peres <martin.peres>
Component: IGTAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED MOVED QA Contact:
Severity: not set    
Priority: not set CC: petri.latvala
Version: XOrg git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Martin Peres 2019-09-10 10:28:14 UTC
Bug filing is done based on machine tags. They can be indicating a platform (TGL, SKL, ...), or a configuration (HDMI, PSR, CHAMELIUM, ...). 

This tagging is currently done manually, but it often is not in sync with the current platform state, which makes bug filing difficult and leads to random noise in CI until the proper tag is set.

Since we would like individual developers and CI machines to have a consistent way of creating these tags (so as individual developers can filter out the known issues from their run locally), having an IGT test/utility to generate these tags would be ideal.

I'll let Arek explain how it could be done :)
Comment 1 Arek Hiler 2019-09-10 10:52:02 UTC
Martin first suggested to have something like igt_require_feature(TWO_DISPLAYS), with a set of different defines/function pointers, or whatever - so we have a single way of checking for a number of connected displays and it's simple to tie it with a cibuglog tag.

I find that hard both hard to use (using names instead of numbers, changing almost all of test to use this new framework) and implement (centralizing a lot of knowledge, how to do the display checks without passing igt_display, fd, etc). But it would be easy to assure consistency in the skip messages.

What I would to propose instead is a special igt test that would do the discovery:

/* has to be before KMS/DISPALY checks to enable all outputs */
igt_subtest("CHAMELIUM") {
	chamelium = chamelium_init(fd);
	igt_require(chamelium);
        /* deinit && plug all */
}

igt_subtest_group {
	volatile igt_display display;

	igt_fixture {
		igt_require_display(&display, fd);
	}

	igt_subtest("DISPLAY")
	{ /* intentionaly left blank */	}

	igt_subtest("TWO_OUTPUTS") {
		igt_require_n_outputs(&display, 2);
	}

	igt_feature("THREE_OUTPUTS") {
		igt_require_n_outputs(&display, 3);
	}
}


Then you can run it like that: `igt_runner -m -t feature_detection ...` which would get you a nice parsable, piglit-style json as well as sample skip messages.

It will still need a lot of test changes to assure consistency, but arguably fewer than the igt_require_feature(XYZ). Since it's also a piglit-format json we can ingest it easily and check for flip-floppers on those tags :-)
Comment 2 Martin Peres 2019-11-12 07:41:35 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/29.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.