Bug 111630 - Generate a list of tags for the machine that runs the testsuite
Summary: Generate a list of tags for the machine that runs the testsuite
Status: NEW
Alias: None
Product: DRI
Classification: Unclassified
Component: IGT (show other bugs)
Version: XOrg git
Hardware: Other All
: not set not set
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-09-10 10:28 UTC by Martin Peres
Modified: 2019-09-10 10:52 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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 :-)


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.