mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-28 09:15:08 +00:00
validate: launcher: Add option to run tests in parallel
Patch 4/4 to implement parallel test execution. https://bugzilla.gnome.org/show_bug.cgi?id=743063
This commit is contained in:
parent
1f981762c2
commit
c0cefecd23
|
@ -197,6 +197,11 @@ class Test(Loggable):
|
||||||
"""
|
"""
|
||||||
Returns True when process has finished running or has timed out.
|
Returns True when process has finished running or has timed out.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if self.process is None:
|
||||||
|
# Process has not started running yet
|
||||||
|
return False
|
||||||
|
|
||||||
self.process.poll()
|
self.process.poll()
|
||||||
if self.process.returncode is not None:
|
if self.process.returncode is not None:
|
||||||
return True
|
return True
|
||||||
|
@ -819,19 +824,26 @@ class TestsManager(Loggable):
|
||||||
self.total_num_tests = total_num_tests
|
self.total_num_tests = total_num_tests
|
||||||
self.starting_test_num = starting_test_num
|
self.starting_test_num = starting_test_num
|
||||||
|
|
||||||
|
num_jobs = min(self.options.num_jobs, len(self.tests))
|
||||||
tests_left = list(self.tests)
|
tests_left = list(self.tests)
|
||||||
|
jobs_running = 0
|
||||||
|
|
||||||
while True:
|
for i in range(num_jobs):
|
||||||
if not self.start_new_job(tests_left):
|
if not self.start_new_job(tests_left):
|
||||||
break
|
break
|
||||||
|
jobs_running += 1
|
||||||
|
|
||||||
|
while jobs_running != 0:
|
||||||
test = self.tests_wait()
|
test = self.tests_wait()
|
||||||
|
jobs_running -= 1
|
||||||
self.print_test_num(test)
|
self.print_test_num(test)
|
||||||
res = test.test_end()
|
res = test.test_end()
|
||||||
self.reporter.after_test(test)
|
self.reporter.after_test(test)
|
||||||
if res != Result.PASSED and (self.options.forever or
|
if res != Result.PASSED and (self.options.forever or
|
||||||
self.options.fatal_error):
|
self.options.fatal_error):
|
||||||
return test.result
|
return test.result
|
||||||
|
if self.start_new_job(tests_left):
|
||||||
|
jobs_running += 1
|
||||||
|
|
||||||
return Result.PASSED
|
return Result.PASSED
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,7 @@ class LauncherConfig(Loggable):
|
||||||
self.output_dir = None
|
self.output_dir = None
|
||||||
self.logsdir = None
|
self.logsdir = None
|
||||||
self.redirect_logs = False
|
self.redirect_logs = False
|
||||||
|
self.num_jobs = 1
|
||||||
self.dest = None
|
self.dest = None
|
||||||
self._using_default_paths = False
|
self._using_default_paths = False
|
||||||
self.paths = []
|
self.paths = []
|
||||||
|
@ -421,6 +422,9 @@ Note that all testsuite should be inside python modules, so the directory should
|
||||||
" default is MAIN_DIR/gst-integration-testsuites")
|
" default is MAIN_DIR/gst-integration-testsuites")
|
||||||
dir_group.add_argument("-rl", "--redirect-logs", dest="redirect_logs",
|
dir_group.add_argument("-rl", "--redirect-logs", dest="redirect_logs",
|
||||||
help="Redirect logs to 'stdout' or 'sdterr'.")
|
help="Redirect logs to 'stdout' or 'sdterr'.")
|
||||||
|
dir_group.add_argument("-j", "--jobs", dest="num_jobs",
|
||||||
|
help="Number of tests to execute simultaneously",
|
||||||
|
type=int)
|
||||||
|
|
||||||
http_server_group = parser.add_argument_group(
|
http_server_group = parser.add_argument_group(
|
||||||
"Handle the HTTP server to be created")
|
"Handle the HTTP server to be created")
|
||||||
|
|
Loading…
Reference in a new issue