85 lines
2.6 KiB
Python
Executable File
85 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""Defer to run_test_cases.py."""
|
|
|
|
import os
|
|
import optparse
|
|
import sys
|
|
|
|
ROOT_DIR = os.path.dirname(
|
|
os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
|
|
def pop_known_arguments(args):
|
|
"""Extracts known arguments from the args if present."""
|
|
rest = []
|
|
run_test_cases_extra_args = []
|
|
for arg in args:
|
|
if arg.startswith(('--gtest_filter=', '--gtest_output=')):
|
|
run_test_cases_extra_args.append(arg)
|
|
elif arg == '--run-manual':
|
|
run_test_cases_extra_args.append(arg)
|
|
elif arg == '--gtest_print_time':
|
|
# Ignore.
|
|
pass
|
|
elif 'interactive_ui_tests' in arg:
|
|
# Run this test in a single thread. It is useful to run it under
|
|
# run_test_cases so automatic flaky test workaround is still used.
|
|
run_test_cases_extra_args.append('-j1')
|
|
rest.append(arg)
|
|
elif 'browser_tests' in arg:
|
|
# Test cases in this executable fire up *a lot* of child processes,
|
|
# causing huge memory bottleneck. So use less than N-cpus jobs.
|
|
run_test_cases_extra_args.append('--use-less-jobs')
|
|
rest.append(arg)
|
|
else:
|
|
rest.append(arg)
|
|
return run_test_cases_extra_args, rest
|
|
|
|
|
|
def main():
|
|
parser = optparse.OptionParser()
|
|
|
|
group = optparse.OptionGroup(
|
|
parser, 'Compability flag with the old sharding_supervisor')
|
|
group.add_option(
|
|
'--no-color', action='store_true', help='Ignored')
|
|
group.add_option(
|
|
'--retry-failed', action='store_true', help='Ignored')
|
|
group.add_option(
|
|
'-t', '--timeout', type='int', help='Kept as --timeout')
|
|
group.add_option(
|
|
'--total-slaves', type='int', default=1, help='Converted to --index')
|
|
group.add_option(
|
|
'--slave-index', type='int', default=0, help='Converted to --shards')
|
|
parser.add_option_group(group)
|
|
|
|
parser.disable_interspersed_args()
|
|
options, args = parser.parse_args()
|
|
|
|
swarm_client_dir = os.path.join(
|
|
ROOT_DIR, 'tools', 'swarm_client', 'googletest')
|
|
sys.path.insert(0, swarm_client_dir)
|
|
|
|
cmd = [
|
|
'--shards', str(options.total_slaves),
|
|
'--index', str(options.slave_index),
|
|
'--no-dump',
|
|
'--no-cr',
|
|
]
|
|
if options.timeout is not None:
|
|
cmd.extend(['--timeout', str(options.timeout)])
|
|
|
|
run_test_cases_extra_args, rest = pop_known_arguments(args)
|
|
|
|
import run_test_cases # pylint: disable=F0401
|
|
|
|
return run_test_cases.main(cmd + run_test_cases_extra_args + ['--'] + rest)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|