[igt-dev] [Intel-gfx] [PATH i-g-t] igt: Test tagging support

Chris Wilson chris at chris-wilson.co.uk
Wed Sep 12 09:07:31 UTC 2018


Quoting Tvrtko Ursulin (2018-09-12 09:48:00)
> 
> On 07/09/2018 12:43, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-09-07 12:14:20)
> >> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >>
> >> Proposal to add test tags as a replacement for separate test
> >> list which can be difficult to maintain and get out of date.
> >>
> >> Putting this maintanenace inline with tests makes it easier
> >> to remember to update the (now implicit) lists, and also enables
> >> richer test selection possibilities for the test runner.
> >>
> >> Current method of implying tags from test/subtest names has a
> >> couple of problems one of which is where some names can use
> >> the same token for different meanings. (One example is the
> >> "default" token.) It also creates a name clash between naming
> >> and tagging.
> >>
> >> Test tags are strings of tokens separated by spaces, meaning of
> >> which we decide by creating a convetion and helped by the
> >> suitable helper macros.
> >>
> >> For example tags can be things like: gem, kms, basic, guc, flip,
> >> semaphore, bz12345678, gt4e, reset, etc..
> >>
> >> At runtime this would look something like this (abbreviated for
> >> readability):
> >>
> >>    @ tests/gem_sync --list-subtests-with-tags
> >>    ...
> >>    forked-each TAGS="gem "
> >>    forked-store-each TAGS="gem "
> >>    basic-all TAGS="gem basic "
> >>    basic-store-all TAGS="gem basic "
> >>
> >>    @ tests/gem_concurrent_blit --list-subtests-with-tags
> >>    ...
> >>    16MiB-swap-gpuX-render-write-read-bcs-bomb TAGS="gem stress "
> >>    16MiB-swap-gpuX-render-write-read-rcs-bomb TAGS="gem stress "
> >>    16MiB-swap-gpuX-render-gpu-read-after-write-bomb TAGS="gem stress "
> >>
> >>    @ tests/kms_flip --list-subtests-with-tags | grep basic
> >>    basic-plain-flip TAGS="kms basic "
> >>    basic-flip-vs-dpms TAGS="kms basic "
> >>
> >> Test runner could then enable usages like:
> >>
> >>    ./run-tests --include gem --exclude stress
> > 
> > Minor comment, I like some basic boolean algebra here
> > --include "gem AND smoketest NOT stress"
> > :)
> 
> That's what my hypothetical examples showed just with a different syntax!
> 
> > I'd probably tag everything according to which ioctls they use. I feel my
> > endgoal is still to list tests by their kernel functions (which can and
> > should be automatically derived), and their hw function which is the
> > open problem.
> 
> If we want to do that automatically then tagging in this flavour 
> probably doesn't make sense and it should instead be an external database.
> 
> If we go on the ioctl granularity it can probably mostly have one 
> version, and it should be static enough to be able to live in the tree, 
> but if we go more granular, like something derived from kcov, then 
> that's out of the window. Since it will be tied both to a platform and 
> kernel version.
> 
> So I think tagging as proposed here is not appropriate for either, but 
> only if we wanted to tag on coarser functional areas and such.

Yeah, I think the same as well, that tags should be "smoke", "stress".
(But one man's stress is another's minimal workload :(

But both of those are in essence a duration parameter, and I'd prefer if
we expressed those as configurable parameters. At which point there is a
meta level of test scripts to tag ;)

I feel that "gem", "kms" is better expressed in lower level terms, so
what's left to tag? Clients? "display", "opencl", "media", "opengl" ?
Even using client specs for features (e.g. EGL_IMG_context_priority)?

Who and why would use those? From a selfish perspective, I want lcov
with tests sorted in order of increasing "stress" (start with the
precise X does Y test, finish with can it survive pathological client
behaviour for 48 hours).
-Chris


More information about the igt-dev mailing list