[Piglit] [PATCH v2] framework: Add mustpass option for the Vulkan CTS test runner

Dylan Baker dylan at pnwbakers.com
Thu Nov 10 22:07:58 UTC 2016


Quoting Alejandro Piñeiro (2016-11-10 12:08:23)
> On 10/11/16 19:05, Dylan Baker wrote:
> > Quoting Alejandro Piñeiro (2016-11-10 07:01:03)
> >> This option was added mostly to being able to run the mustpass
> >> case list included on Vulkan CTS repository. As that file is in
> >> txt format, we assume that the case list will be in txt format.
> >>
> >> That is not the case for the other deqp-xxx profiles, that uses
> >> a xml format. In any case, it is properly documented on the
> >> piglit.conf.example
> >>
> >> v2: allow to receive a txt file with just the name of the test,
> >>     without any formatting
> >> ---
> >>
> >> This new version is somewhat more intrusive. It allows to receive
> >> a txt file with just the name of the tests. But doing that
> >> it removed the ill-format-line check on deqp.make_profile.
> >>
> >> The advantage of this is that we don't need to transform the
> >> mustpass file that cames with the vulkan cts repository.
> >>
> >> FWIW, deqp-vk also accepts that format. So with this change,
> >> piglit just allows to receive the testcase list in both txt formats.
> >>
> >>  framework/test/deqp.py | 14 ++++++++++----
> >>  piglit.conf.example    |  7 +++++++
> >>  tests/deqp_vk.py       | 10 +++++++---
> >>  3 files changed, 24 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/framework/test/deqp.py b/framework/test/deqp.py
> >> index 5b53efd..a63bea7 100644
> >> --- a/framework/test/deqp.py
> >> +++ b/framework/test/deqp.py
> >> @@ -78,6 +78,14 @@ def select_source(bin_, filename, mustpass, extra_args):
> >>          return iter_deqp_test_cases(
> >>              gen_caselist_txt(bin_, filename, extra_args))
> >>  
> > You're missing a newline, it should be two for top level functions.
> 
> Ok.
> 
> >> +def select_source_txt(bin_, filename, mustpass, extra_args):
> >> +    """Return either the mustpass list in txt format or the generated list."""
> >> +    if options.OPTIONS.deqp_mustpass:
> >> +        return iter_deqp_test_cases(mustpass)
> >> +    else:
> >> +        return iter_deqp_test_cases(
> >> +            gen_caselist_txt(bin_, filename, extra_args))
> >> +
> > I'm not sure how to do it, but I'm also not thrilled with the near duplication
> > of select_source function. I think I'd rather see either a keyword argument that
> > passes the function to use for deqp_mustpass or do file extension detection or
> > something that reduces the need for another function.
> 
> Taking into account that at this moment, this method is only used at
> deqp_vk, other option is implement this logic there, without adding a
> new method on the framework.
> 
> In any case, I'm ok with trying the argument option. What option do you
> prefer?
> 
> >>  
> >>  def make_profile(test_list, test_class):
> >>      """Create a TestProfile instance."""
> >> @@ -146,10 +154,8 @@ def iter_deqp_test_cases(case_file):
> >>                  continue
> >>              elif line.startswith('TEST:'):
> >>                  yield line[len('TEST:'):].strip()
> >> -            else:
> >> -                raise exceptions.PiglitFatalError(
> >> -                    'deqp: {}:{}: ill-formed line'.format(case_file, i))
> >> -
> > Don't remove this newline, it was correct.
> 
> Ok.
> 
> >> +            else: # We assume that the line is just the name of the test
> >> +                yield line
> > I'm not sure I like this approach, it conflates two different files formats, and
> > it creates two functions that are nearly identical. I'll give you that this is
> > all kind of a mess, but I think you should create a new generator function for
> > the vulkan mustpass list, it's a different format.
> 
> Well, the issue here is not about vulkan cts using a different format.
> As far as I see all deqp-xxx works in a similar, and somewhat odd way.
> 
> The issue is that you can ask deqp to create a test list in a text
> format using the option "--deqp-runmode=txt-caselist". Right now, piglit
> can parse that text file to execute individually the tests. But funnily
> enough deqp can't. So if you try to use the txt file that deqp use on
> deqp you get this:
> 
>   $ ./deqp-xxx --deqp-runmode
>     Writing test cases from 'dEQP-GLES3' to file 'dEQP-XXX-cases.txt'..
>   $ ./deqp-xxx --deqp-caselist-file=dEQP-XXX-cases.txt
>     ERROR: Failed to parse test case list: Illegal character in test
> case name
>     FATAL ERROR: Failed to parse command line
>     Killed
> 
> So, I assume that this is the reason that the vulkan cts repository
> saves the mustpass list in a different format.
> 
> In any case, going back to this, what I could do is support only the
> format Im interested in, and create a new generator as you mention.
> Although that would make deqp_vk behaving somewhat different to other
> deqp_xxx.

I guess the other option, which I would be okay with, is to take the Vulkan
specific bits and put them in deqp_vk, that would at least allow us to hide the
different behavior since it's only used by Vulkan.

It is frustrating to me that we have half a dozen deqp suites, and they all
behave differently. I really wish they would have more similar behavior. Sigh.

Dylan

> 
> BR
> 
> 
> 
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20161110/8a98b97f/attachment.sig>


More information about the Piglit mailing list