From ece40b23559718d0b70f6ae3cc00ed5a87c53081 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 11 Aug 2016 16:12:46 -0700 Subject: framework: Add a driver classifier based on the renderer string. For the apitrace test runner, I need to be able to store known-good images for various drivers, which means I need some way to group drivers. Not all Mesa drivers we care about are covered here, but this is a sample to get things started. v2: Apply feedback from Dylan, add classification for my Skylake. Reviewed-by: Dylan Baker --- unittests/framework/test_driver_classifier.py | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 unittests/framework/test_driver_classifier.py (limited to 'unittests') diff --git a/unittests/framework/test_driver_classifier.py b/unittests/framework/test_driver_classifier.py new file mode 100644 index 000000000..a4b043a13 --- /dev/null +++ b/unittests/framework/test_driver_classifier.py @@ -0,0 +1,60 @@ +# Copyright (c) 2016 Broadcom +# +# 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 (including the next +# paragraph) 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. + +import pytest +import six +from framework import driver_classifier + +class DriverClassifierTester(driver_classifier.DriverClassifier): + """Test class for the driver classifier, taking in a fixed + + renderer string instead of calling glxinfo. + """ + + def __init__(self, renderer): + self.override_renderer = renderer + super(DriverClassifierTester, self).__init__() + + + def collect_driver_info(self): + self.renderer = self.override_renderer + + +class TestDriverClassifier(object): + """Tests for the DriverClassifier class.""" + + @pytest.mark.parametrize( + "renderer, categories", + [ + ('Mesa DRI Intel(R) Haswell Mobile', ['i965-hsw', 'i965', 'mesa']), + ('Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2)', ['i965-skl', 'i965', 'mesa']), + # Old VC4 string + ('Gallium 0.4 on VC4', ['vc4', 'mesa']), + # Modern VC4 string + ('Gallium 0.4 on VC4 V3D 2.1', ['vc4-2.1', 'vc4', 'mesa']), + ], + ids=six.text_type) + def test_renderer_categorization(self, renderer, categories): + """Test that when given a certain renderer string, the correct + + categories list comes back. + """ + assert DriverClassifierTester(renderer).categories == categories -- cgit v1.2.3