From ef9ff93405705bb9a4676bb6c57ac8504767e74f Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sun, 13 May 2018 16:30:25 -0400 Subject: [PATCH] validate:launcher: Add a way to check if a gst feature is present And make sure iqa is present to run IQA tests. --- validate/launcher/baseclasses.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/validate/launcher/baseclasses.py b/validate/launcher/baseclasses.py index 9a28291f7f..c7cf6edccc 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.