[Piglit] [RFC v2 34/39] framework: Override run_concurrent for CL test classes
Dylan Baker
baker.dylan.c at gmail.com
Mon Feb 2 17:37:39 PST 2015
This patch changes where the OpenCL tests get their run_concurrent flag
from. After this patch it is computed automatically, leaving no need to
set the flag manually unless one wants to force a non default behavior
for their platform.
XXX: This assumes Thomas Stellard's
"opencv: Automatically run tests concurrently..." patch
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
framework/test/opencv.py | 3 ++-
framework/test/piglit_test.py | 22 +++++++++++++++++-----
tests/cl.py | 26 ++++----------------------
3 files changed, 23 insertions(+), 28 deletions(-)
diff --git a/framework/test/opencv.py b/framework/test/opencv.py
index 3490c8a..157102e 100644
--- a/framework/test/opencv.py
+++ b/framework/test/opencv.py
@@ -29,6 +29,7 @@ from os import path
from .gtest import GTest
from framework.core import PIGLIT_CONFIG
+from framework.test import CL_CONCURRENT
import framework.grouptools as grouptools
__all__ = [
@@ -42,7 +43,7 @@ class OpenCVTest(GTest):
options = [test_prog, '--gtest_filter=' + testname, '--gtest_color=no']
if PIGLIT_CONFIG.has_option('opencv', 'workdir'):
options.append('-w {}'.format(PIGLIT_CONFIG.get('opencv', 'workdir')))
- GTest.__init__(self, options)
+ GTest.__init__(self, options, run_concurrent=CL_CONCURRENT)
def add_opencv_tests(profile):
diff --git a/framework/test/piglit_test.py b/framework/test/piglit_test.py
index 7511df2..2f6282d 100644
--- a/framework/test/piglit_test.py
+++ b/framework/test/piglit_test.py
@@ -24,6 +24,8 @@
from __future__ import print_function, absolute_import
import os
+import sys
+import glob
try:
import simplejson as json
except ImportError:
@@ -34,9 +36,10 @@ import framework.core as core
__all__ = [
- 'PiglitGLTest',
'PiglitCLTest',
- 'TEST_BIN_DIR'
+ 'PiglitGLTest',
+ 'CL_CONCURRENT',
+ 'TEST_BIN_DIR',
]
if 'PIGLIT_BUILD_DIR' in os.environ:
@@ -46,6 +49,10 @@ else:
'../../bin'))
+CL_CONCURRENT = (not sys.platform.startswith('linux') or
+ glob.glob('/dev/dri/render*'))
+
+
class PiglitBaseTest(Test):
"""
PiglitTest: Run a "native" piglit test executable
@@ -136,6 +143,11 @@ class PiglitGLTest(WindowResizeMixin, PiglitBaseTest):
return super(PiglitGLTest, self).command + ['-auto', '-fbo']
-class PiglitCLTest(PiglitBaseTest):
- """ OpenCL specific Test class """
- pass
+class PiglitCLTest(PiglitBaseTest): # pylint: disable=too-few-public-methods
+ """ OpenCL specific Test class.
+
+ Set concurrency based on CL requirements.
+
+ """
+ def __init__(self, command, run_concurrent=CL_CONCURRENT, **kwargs):
+ super(PiglitCLTest, self).__init__(command, run_concurrent, **kwargs)
diff --git a/tests/cl.py b/tests/cl.py
index 68c18a1..14fa2e3 100644
--- a/tests/cl.py
+++ b/tests/cl.py
@@ -10,8 +10,6 @@
from __future__ import division, absolute_import, print_function
import os
-import sys
-import glob
from framework.profile import TestProfile
from framework.test import PiglitCLTest
@@ -21,34 +19,18 @@ from .py_modules.constants import TESTS_DIR, GENERATED_TESTS_DIR
__all__ = ['profile']
-can_do_concurrent = (not sys.platform.startswith('linux') or
- glob.glob('/dev/dri/render*'))
-
-
-def cl_test(*args, **kwargs):
- """Wrapper for PiglitCLTest that sets run_concurrent.
-
- Always set concurrent to can_do_concurrent, but allow it to be turned off
- explicitely.
-
- """
- if 'run_concurrent' is not False:
- kwargs['run_concurrent'] = can_do_concurrent
- return PiglitCLTest(*args, **kwargs)
-
-
profile = TestProfile()
# Custom
-with profile.group_manager(cl_test, 'custom') as g:
+with profile.group_manager(PiglitCLTest, 'custom') as g:
g(['cl-custom-run-simple-kernel'], 'Run simple kernel')
g(['cl-custom-flush-after-enqueue-kernel'], 'Flush after enqueue kernel')
g(['cl-custom-r600-create-release-buffer-bug'],
'r600 create release buffer bug')
g(['cl-custom-buffer-flags'], 'Buffer flags')
-with profile.group_manager(cl_test, 'api') as g:
+with profile.group_manager(PiglitCLTest, 'api') as g:
# Platform
g(['cl-api-get-platform-ids'], 'clGetPlatformIDs')
g(['cl-api-get-platform-info'], 'clGetPlatformInfo')
@@ -105,7 +87,7 @@ with profile.group_manager(cl_test, 'api') as g:
g(['cl-api-get-event-info'], 'clGetEventInfo')
g(['cl-api-retain_release-event'], 'clRetainEvent and clReleaseEvent')
-with profile.group_manager(cl_test, 'program') as g:
+with profile.group_manager(PiglitCLTest, 'program') as g:
g(['cl-program-max-work-item-sizes'],
'Run kernel with max work item sizes')
g(['cl-program-bitcoin-phatk'], 'Bitcoin: phatk kernel')
@@ -117,7 +99,7 @@ def add_program_test_dir(group, dirpath):
if ext not in ['.cl', '.program_test']:
continue
- profile.test_list[grouptools.join(group, testname)] = cl_test(
+ profile.test_list[grouptools.join(group, testname)] = PiglitCLTest(
['cl-program-tester', os.path.join(dirpath, filename)])
--
2.2.2
More information about the Piglit
mailing list