[Piglit] [PATCH] tests: Add integration for khronos CTS runner.

Mark Janes mark.a.janes at intel.com
Mon Sep 28 21:46:18 PDT 2015


Reviewed-by: Mark Janes <mark.a.janes at intel.com>

Dylan Baker <baker.dylan.c at gmail.com> writes:

> This adds support for running Khronos' deqp-based conformance suite with
> piglit. This gives access to all of the powerful features of pigilt,
> per-process tests, the junit and json backends, the summary tools, and
> the familiar interface, with minimal fuss.
>
> This is a very small change, since it is deqp-based, and piglit has a
> framework for handling deqp based suites already.
>
> cc: Mark Janes <mark.a.janes at intel.com>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>  piglit.conf.example | 10 +++++++++
>  tests/cts.py        | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 73 insertions(+)
>  create mode 100644 tests/cts.py
>
> diff --git a/piglit.conf.example b/piglit.conf.example
> index e1f421c..0d85401 100644
> --- a/piglit.conf.example
> +++ b/piglit.conf.example
> @@ -71,6 +71,16 @@ testB
>  ; overrides the value set here.
>  ;extra_args=--deqp-visibility hidden
>  
> +[cts]
> +; path to the cts executable
> +; can be overwritten by PIGILT_CTS_BIN environment variable
> +;bin=/home/knuth/cts/cts/glcts
> +
> +; Space-separated list of extra command line arguments for cts. The
> +; option is not required. The environment variable PIGLIT_CTS_EXTRA_ARGS
> +; overrides the value set here.
> +;extra_args=--deqp-visibility hidden
> +
>  ; Section for specific oclconform test.  One of these sections is required for
>  ; each test list in the oclconform section and must be called:
>  ; oclconform-$testname
> diff --git a/tests/cts.py b/tests/cts.py
> new file mode 100644
> index 0000000..5669f88
> --- /dev/null
> +++ b/tests/cts.py
> @@ -0,0 +1,63 @@
> +# Copyright (c) 2015 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a copy
> +# of this software and associated documentation files (the "Software"), to deal
> +# in the Software without restriction, including without limitation the rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +# SOFTWARE.
> +
> +"""Piglit integration for Khronos CTS tests.
> +
> +By default this will run GLES2, GLES3, GLES31, and GLESEXT test cases. Those
> +desiring to run only a subset of them should consider using the -t or -x
> +options to include or exclude tests.
> +
> +for example:
> +./piglit run cts -c foo -t ES3- would run only ES3 tests (note the dash to
> +exclude ES31 tests)
> +
> +"""
> +
> +from __future__ import absolute_import, division, print_function
> +import itertools
> +
> +from framework.test import deqp
> +
> +__all__ = ['profile']
> +
> +_CTS_BIN = deqp.get_option('PIGLIT_CTS_BIN', ('cts', 'bin'))
> +
> +_EXTRA_ARGS = deqp.get_option('PIGLIT_CTS_EXTRA_ARGS', ('cts', 'extra_args'),
> +                              default='').split()
> +
> +
> +class DEQPCTSTest(deqp.DEQPBaseTest):
> +    deqp_bin = _CTS_BIN
> +    extra_args = [x for x in _EXTRA_ARGS if not x.startswith('--deqp-case')]
> +
> +
> +profile = deqp.make_profile(  # pylint: disable=invalid-name
> +    itertools.chain(
> +        deqp.iter_deqp_test_cases(
> +            deqp.gen_caselist_txt(_CTS_BIN, 'ES2-CTS-cases.txt', _EXTRA_ARGS)),
> +        deqp.iter_deqp_test_cases(
> +            deqp.gen_caselist_txt(_CTS_BIN, 'ES3-CTS-cases.txt', _EXTRA_ARGS)),
> +        deqp.iter_deqp_test_cases(
> +            deqp.gen_caselist_txt(_CTS_BIN, 'ES31-CTS-cases.txt', _EXTRA_ARGS)),
> +        deqp.iter_deqp_test_cases(
> +            deqp.gen_caselist_txt(_CTS_BIN, 'ESEXT-CTS-cases.txt',
> +                                  _EXTRA_ARGS)),
> +    ),
> +    DEQPCTSTest)
> -- 
> 2.5.3


More information about the Piglit mailing list