mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 11:32:38 +00:00
validate: tools: Create a class for scenarios
This commit is contained in:
parent
ba1f428351
commit
2391a56714
3 changed files with 75 additions and 33 deletions
|
@ -23,7 +23,7 @@ import subprocess
|
|||
import utils
|
||||
from urllib import unquote
|
||||
import xml.etree.ElementTree as ET
|
||||
from baseclasses import GstValidateTest, TestsManager
|
||||
from baseclasses import GstValidateTest, TestsManager, Scenario
|
||||
|
||||
DURATION_TOLERANCE = utils.GST_SECOND / 2
|
||||
DEFAULT_GES_LAUNCH = "ges-launch-1.0"
|
||||
|
@ -207,11 +207,15 @@ class GESTestsManager(TestsManager):
|
|||
else:
|
||||
projects.append(utils.path2url(proj))
|
||||
|
||||
SCENARIOS = ["play_15s", "seek_forward", "seek_backward", "scrub_forward_seeking"]
|
||||
SCENARIOS = [Scenario.get_scenario("play_15s"),
|
||||
Scenario.get_scenario("seek_forward"),
|
||||
Scenario.get_scenario("seek_backward"),
|
||||
Scenario.get_scenario("scrub_forward_seeking")]
|
||||
for proj in projects:
|
||||
# First playback casses
|
||||
for scenario in SCENARIOS:
|
||||
classname = "ges.playback.%s.%s" % (scenario, os.path.basename(proj).replace(".xges", ""))
|
||||
classname = "ges.playback.%s.%s" % (scenario.name,
|
||||
os.path.basename(proj).replace(".xges", ""))
|
||||
self.add_test(GESPlaybackTest(classname,
|
||||
self.options,
|
||||
self.reporter,
|
||||
|
|
|
@ -22,7 +22,7 @@ import subprocess
|
|||
import ConfigParser
|
||||
from loggable import Loggable
|
||||
|
||||
from baseclasses import GstValidateTest, TestsManager, Test
|
||||
from baseclasses import GstValidateTest, TestsManager, Test, Scenario, NamedDic
|
||||
from utils import MediaFormatCombination, get_profile,\
|
||||
path2url, get_current_position, get_current_size, \
|
||||
DEFAULT_TIMEOUT, which, GST_SECOND, Result, \
|
||||
|
@ -45,15 +45,28 @@ COMBINATIONS = [
|
|||
MediaFormatCombination("mp4", "mp3", "h264"),
|
||||
MediaFormatCombination("mkv", "vorbis", "h264")]
|
||||
|
||||
|
||||
class NamedDic(object):
|
||||
|
||||
def __init__(self, props):
|
||||
for name, value in props.iteritems():
|
||||
setattr(self, name, value)
|
||||
PROTOCOL_TIMEOUTS = {"http": 60,
|
||||
"hls": 60}
|
||||
|
||||
G_V_SCENARIOS = {"file": [Scenario.get_scenario("play_15s"),
|
||||
Scenario.get_scenario("simple_backward"),
|
||||
Scenario.get_scenario("fast_forward"),
|
||||
Scenario.get_scenario("seek_forward"),
|
||||
Scenario.get_scenario("seek_backward"),
|
||||
Scenario.get_scenario("scrub_forward_seeking")],
|
||||
"http": [Scenario.get_scenario("play_15s"),
|
||||
Scenario.get_scenario("fast_forward"),
|
||||
Scenario.get_scenario("seek_forward"),
|
||||
Scenario.get_scenario("seek_backward"),
|
||||
Scenario.get_scenario("simple_backward")],
|
||||
"hls": [Scenario.get_scenario("play_15s"),
|
||||
Scenario.get_scenario("fast_forward"),
|
||||
Scenario.get_scenario("seek_forward"),
|
||||
Scenario.get_scenario("seek_backward")],
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
class GstValidateLaunchTest(GstValidateTest):
|
||||
def __init__(self, classname, options, reporter, pipeline_desc,
|
||||
|
@ -78,10 +91,10 @@ class GstValidateLaunchTest(GstValidateTest):
|
|||
|
||||
|
||||
class GstValidateMediaCheckTest(Test):
|
||||
def __init__(self, classname, options, reporter, media_info_path, uri):
|
||||
def __init__(self, classname, options, reporter, media_info_path, uri, timeout=DEFAULT_TIMEOUT):
|
||||
super(GstValidateMediaCheckTest, self).__init__(DISCOVERER_COMMAND[0], classname,
|
||||
options, reporter,
|
||||
timeout=30)
|
||||
timeout=timeout)
|
||||
self._uri = uri
|
||||
self._media_info_path = urlparse.urlparse(media_info_path).path
|
||||
|
||||
|
@ -115,6 +128,7 @@ class GstValidateTranscodingTest(GstValidateTest):
|
|||
self.add_arguments("-o", profile)
|
||||
|
||||
def build_arguments(self):
|
||||
GstValidateTest.build_arguments(self)
|
||||
self.set_rendering_info()
|
||||
self.add_arguments(self.uri, self.dest_file)
|
||||
|
||||
|
@ -146,13 +160,8 @@ class GstValidateManager(TestsManager, Loggable):
|
|||
return False
|
||||
|
||||
def list_tests(self):
|
||||
SCENARIOS = ["play_15s", "simple_backward",
|
||||
"fast_forward", "seek_forward",
|
||||
"seek_backward", "scrub_forward_seeking"]
|
||||
|
||||
for test_pipeline in PLAYBACK_TESTS:
|
||||
for scenario in SCENARIOS:
|
||||
self._add_playback_test(scenario, test_pipeline)
|
||||
self._add_playback_test(test_pipeline)
|
||||
|
||||
for uri, mediainfo in self._list_uris():
|
||||
classname = "validate.media_check.%s" % (os.path.splitext(os.path.basename(uri))[0].replace(".", "_"))
|
||||
|
@ -160,7 +169,8 @@ class GstValidateManager(TestsManager, Loggable):
|
|||
self.options,
|
||||
self.reporter,
|
||||
mediainfo.path,
|
||||
uri))
|
||||
uri,
|
||||
timeout=timeout))
|
||||
|
||||
for uri, mediainfo in self._list_uris():
|
||||
if mediainfo.config.getboolean("media-info", "is-image") is True:
|
||||
|
@ -246,12 +256,12 @@ class GstValidateManager(TestsManager, Loggable):
|
|||
return self._uris
|
||||
|
||||
def _get_fname(self, scenario, protocol=None):
|
||||
if scenario is not None and scenario.lower() != "none":
|
||||
return "%s.%s.%s.%s" % ("validate", protocol, "playback", scenario)
|
||||
if scenario is not None and scenario.name.lower() != "none":
|
||||
return "%s.%s.%s.%s" % ("validate", protocol, "playback", scenario.name)
|
||||
|
||||
return "%s.%s.%s" % ("validate", protocol, "playback")
|
||||
|
||||
def _add_playback_test(self, scenario, pipe):
|
||||
def _add_playback_test(self, pipe):
|
||||
if self.options.mute:
|
||||
if "autovideosink" in pipe:
|
||||
pipe = pipe.replace("autovideosink", "fakesink")
|
||||
|
@ -263,7 +273,7 @@ class GstValidateManager(TestsManager, Loggable):
|
|||
npipe = pipe
|
||||
protocol = minfo.config.get("file-info", "protocol")
|
||||
|
||||
if scenario != "none":
|
||||
for scenario in G_V_SCENARIOS[protocol]:
|
||||
if minfo.config.getboolean("media-info", "seekable") is False:
|
||||
self.debug("Do not run %s as %s does not support seeking",
|
||||
scenario, uri)
|
||||
|
@ -274,17 +284,17 @@ class GstValidateManager(TestsManager, Loggable):
|
|||
# is run sync, otherwize some tests will fail
|
||||
npipe = pipe.replace("fakesink", "'fakesink sync=true'")
|
||||
|
||||
fname = "%s.%s" % (self._get_fname(scenario,
|
||||
protocol),
|
||||
os.path.basename(uri).replace(".", "_"))
|
||||
self.debug("Adding: %s", fname)
|
||||
fname = "%s.%s" % (self._get_fname(scenario,
|
||||
protocol),
|
||||
os.path.basename(uri).replace(".", "_"))
|
||||
self.debug("Adding: %s", fname)
|
||||
|
||||
self.add_test(GstValidateLaunchTest(fname,
|
||||
self.options,
|
||||
self.reporter,
|
||||
npipe.replace("__uri__", uri),
|
||||
scenario=scenario,
|
||||
file_infos=minfo.config)
|
||||
self.add_test(GstValidateLaunchTest(fname,
|
||||
self.options,
|
||||
self.reporter,
|
||||
npipe.replace("__uri__", uri),
|
||||
scenario=scenario,
|
||||
file_infos=minfo.config)
|
||||
)
|
||||
else:
|
||||
self.add_test(GstValidateLaunchTest(self._get_fname(scenario, "testing"),
|
||||
|
|
|
@ -433,3 +433,31 @@ class _TestsLauncher(Loggable):
|
|||
for tester in self.testers:
|
||||
if tester.needs_http_server():
|
||||
return True
|
||||
|
||||
|
||||
class NamedDic(object):
|
||||
|
||||
def __init__(self, props):
|
||||
if props:
|
||||
for name, value in props.iteritems():
|
||||
setattr(self, name, value)
|
||||
|
||||
|
||||
class Scenario(NamedDic):
|
||||
|
||||
def __init__(self, name, props=None):
|
||||
self.name = name
|
||||
NamedDic.__init__(self, props)
|
||||
|
||||
@classmethod
|
||||
def get_scenario(cls, name):
|
||||
return [scenario for scenario in ALL_SCENARIOS if scenario.name == name][0]
|
||||
|
||||
ALL_SCENARIOS = [
|
||||
Scenario("play_15s", {"max_duration": 15}),
|
||||
Scenario("simple_backward"),
|
||||
Scenario("fast_forward"),
|
||||
Scenario("seek_forward"),
|
||||
Scenario("seek_backward"),
|
||||
Scenario("scrub_forward_seeking")
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue