MB: Add a way to run tests on swarming without using gtest-parallel.

Adds a new test_type 'raw' to run tests on swarming without wrapping it
on gtest-parallel.

This will be used to run webrtc_perf_tests directly.

Bug: chromium:755660
Change-Id: I8558faadf242d1db1ad3e13083941886c92b1bd9
Reviewed-on: https://webrtc-review.googlesource.com/49360
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21962}
This commit is contained in:
Edward Lemur 2018-02-07 18:09:44 +01:00 committed by Commit Bot
parent 8e545eee1e
commit 2b67f5c65f
2 changed files with 69 additions and 32 deletions

View File

@ -1042,7 +1042,7 @@ class MetaBuildWrapper(object):
self.WriteFailureAndRaise('We should not be isolating %s.' % target,
output_path=None)
if test_type not in ('console_test_launcher', 'windowed_test_launcher',
'non_parallel_console_test_launcher',
'non_parallel_console_test_launcher', 'raw',
'additional_compile_target', 'junit_test', 'script'):
self.WriteFailureAndRaise('No command line for %s found (test type %s).'
% (target, test_type), output_path=None)
@ -1071,21 +1071,23 @@ class MetaBuildWrapper(object):
'../../testing/xvfb.py',
]
# Memcheck is only supported for linux. Ignore in other platforms.
memcheck = is_linux and 'rtc_use_memcheck=true' in vals['gn_args']
memcheck_cmdline = [
'bash',
'../../tools_webrtc/valgrind/webrtc_tests.sh',
'--tool',
'memcheck',
'--target',
'Release',
'--build-dir',
'..',
'--test',
]
cmdline = (['../../testing/xvfb.py'] if xvfb else
['../../testing/test_env.py'])
if not memcheck:
# Memcheck is only supported for linux. Ignore in other platforms.
if is_linux and 'rtc_use_memcheck=true' in vals['gn_args']:
cmdline += [
'bash',
'../../tools_webrtc/valgrind/webrtc_tests.sh',
'--tool',
'memcheck',
'--target',
'Release',
'--build-dir',
'..',
'--test',
]
elif test_type != 'raw':
extra_files += [
'../../third_party/gtest-parallel/gtest-parallel',
'../../third_party/gtest-parallel/gtest_parallel.py',
@ -1094,7 +1096,7 @@ class MetaBuildWrapper(object):
sep = '\\' if self.platform == 'win32' else '/'
output_dir = '${ISOLATED_OUTDIR}' + sep + 'test_logs'
timeout = isolate_map[target].get('timeout', 900)
gtest_parallel_wrapper = [
cmdline += [
'../../tools_webrtc/gtest-parallel-wrapper.py',
'--output_dir=%s' % output_dir,
'--gtest_color=no',
@ -1104,27 +1106,25 @@ class MetaBuildWrapper(object):
'--timeout=%s' % timeout,
'--retry_failed=3',
]
if test_type == 'non_parallel_console_test_launcher':
# Still use the gtest-parallel-wrapper.py script since we need it to
# run tests on swarming, but don't execute tests in parallel.
cmdline.append('--workers=1')
executable_prefix = '.\\' if self.platform == 'win32' else './'
executable_suffix = '.exe' if self.platform == 'win32' else ''
executable = executable_prefix + target + executable_suffix
cmdline.append(executable)
if test_type != 'raw':
cmdline.append('--')
asan = 'is_asan=true' in vals['gn_args']
lsan = 'is_lsan=true' in vals['gn_args']
msan = 'is_msan=true' in vals['gn_args']
tsan = 'is_tsan=true' in vals['gn_args']
executable_prefix = '.\\' if self.platform == 'win32' else './'
executable_suffix = '.exe' if self.platform == 'win32' else ''
executable = executable_prefix + target + executable_suffix
cmdline = (['../../testing/xvfb.py'] if xvfb else
['../../testing/test_env.py'])
cmdline += memcheck_cmdline if memcheck else gtest_parallel_wrapper
cmdline.append(executable)
if test_type == 'non_parallel_console_test_launcher' and not memcheck:
# Still use the gtest-parallel-wrapper.py script since we need it to
# run tests on swarming, but don't execute tests in parallel.
cmdline.append('--workers=1')
cmdline.extend([
'--',
'--asan=%d' % asan,
'--lsan=%d' % lsan,
'--msan=%d' % msan,

View File

@ -457,8 +457,8 @@ class UnitTest(unittest.TestCase):
'--gtest_color=no',
'--timeout=500',
'--retry_failed=3',
'./base_unittests',
'--workers=1',
'./base_unittests',
'--',
'--asan=0',
'--lsan=0',
@ -501,6 +501,43 @@ class UnitTest(unittest.TestCase):
'../../base/base_unittests_script.py',
])
def test_gn_gen_raw(self):
test_files = {
'/tmp/swarming_targets': 'base_unittests\n',
'/fake_src/testing/buildbot/gn_isolate_map.pyl': (
"{'base_unittests': {"
" 'label': '//base:base_unittests',"
" 'type': 'raw',"
"}}\n"
),
'/fake_src/out/Default/base_unittests.runtime_deps': (
"base_unittests\n"
),
}
mbw = self.check(['gen', '-c', 'gn_debug_goma', '//out/Default',
'--swarming-targets-file', '/tmp/swarming_targets',
'--isolate-map-file',
'/fake_src/testing/buildbot/gn_isolate_map.pyl'],
files=test_files, ret=0)
isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
isolate_file_contents = ast.literal_eval(isolate_file)
files = isolate_file_contents['variables']['files']
command = isolate_file_contents['variables']['command']
self.assertEqual(files, [
'../../testing/test_env.py',
'base_unittests',
])
self.assertEqual(command, [
'../../testing/test_env.py',
'./base_unittests',
'--asan=0',
'--lsan=0',
'--msan=0',
'--tsan=0',
])
def test_gn_gen_non_parallel_console_test_launcher(self):
test_files = {
'/tmp/swarming_targets': 'base_unittests\n',
@ -539,8 +576,8 @@ class UnitTest(unittest.TestCase):
'--gtest_color=no',
'--timeout=900',
'--retry_failed=3',
'./base_unittests',
'--workers=1',
'./base_unittests',
'--',
'--asan=0',
'--lsan=0',