summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2018-05-13 16:30:25 -0400
committerThibault Saunier <tsaunier@igalia.com>2018-05-13 16:35:41 -0400
commitef9ff93405705bb9a4676bb6c57ac8504767e74f (patch)
treed6ef1f5356a62260b86224bd1cc8658537ac68bc
parentb00ab022542c795f8e90952cf015f0de4befcb4f (diff)
validate:launcher: Add a way to check if a gst feature is present
And make sure iqa is present to run IQA tests.
-rw-r--r--validate/launcher/baseclasses.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/validate/launcher/baseclasses.py b/validate/launcher/baseclasses.py
index 9a28291..c7cf6ed 100644
--- a/validate/launcher/baseclasses.py
+++ b/validate/launcher/baseclasses.py
@@ -1017,6 +1017,10 @@ class GstValidateEncodingTestInterface(object):
Runs IQA test if @reference_file_path exists
@test: The test to run tests on
"""
+ if not GstValidateBaseTestManager.has_feature('iqa'):
+ self.debug('Iqa element not present, not running extra test.')
+ return
+
pipeline_desc = """
uridecodebin uri=%s !
iqa name=iqa do-dssim=true dssim-error-threshold=1.0 ! fakesink
@@ -1948,6 +1952,7 @@ class ScenarioManager(Loggable):
class GstValidateBaseTestManager(TestsManager):
scenarios_manager = ScenarioManager()
+ features_cache = {}
def __init__(self):
super(GstValidateBaseTestManager, self).__init__()
@@ -1959,9 +1964,26 @@ class GstValidateBaseTestManager(TestsManager):
for varname, cmd in {'': 'gst-validate',
'TRANSCODING_': 'gst-validate-transcoding',
'MEDIA_CHECK_': 'gst-validate-media-check',
- 'RTSP_SERVER_': 'gst-validate-rtsp-server'}.items():
+ 'RTSP_SERVER_': 'gst-validate-rtsp-server',
+ 'INSPECT_': 'gst-inspect'}.items():
setattr(cls, varname + 'COMMAND', which(cmd + '-1.0', extra_paths))
+ @classmethod
+ def has_feature(cls, featurename):
+ try:
+ return cls.features_cache[featurename]
+ except KeyError:
+ pass
+
+ try:
+ subprocess.check_output([cls.INSPECT_COMMAND, featurename])
+ res = True
+ except subprocess.CalledProcessError:
+ res = False
+
+ cls.features_cache[featurename] = res
+ return res
+
def add_scenarios(self, scenarios):
"""
@scenarios A list or a unic scenario name(s) to be run on the tests.