diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2018-05-13 16:30:25 -0400 |
---|---|---|
committer | Thibault Saunier <tsaunier@igalia.com> | 2018-05-13 16:35:41 -0400 |
commit | ef9ff93405705bb9a4676bb6c57ac8504767e74f (patch) | |
tree | d6ef1f5356a62260b86224bd1cc8658537ac68bc | |
parent | b00ab022542c795f8e90952cf015f0de4befcb4f (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.py | 24 |
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. |