[Android] Add --no-timeout to perf sharder.

This delegates timeout logic to the step command.

BUG=
R=bulach@chromium.org, craigdh@chromium.org

Review URL: https://codereview.chromium.org/23784006

git-svn-id: http://src.chromium.org/svn/trunk/src/build@221721 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This commit is contained in:
frankf@chromium.org 2013-09-06 17:11:46 +00:00
Родитель 9643c07e2a
Коммит 4c88902c4f
3 изменённых файлов: 28 добавлений и 17 удалений

Просмотреть файл

@ -10,4 +10,5 @@ PerfOptions = collections.namedtuple('PerfOptions', [
'steps',
'flaky_steps',
'print_step',
'no_timeout',
])

Просмотреть файл

@ -114,9 +114,14 @@ class TestRunner(base_test_runner.BaseTestRunner):
(self._tests[test_name], self.device))
logging.info('%s : %s', test_name, cmd)
start_time = datetime.datetime.now()
timeout = 1800
if self._options.no_timeout:
timeout = None
output, exit_code = pexpect.run(
cmd, cwd=os.path.abspath(constants.DIR_SOURCE_ROOT),
withexitstatus=True, logfile=sys.stdout, timeout=1800,
withexitstatus=True, logfile=sys.stdout, timeout=timeout,
env=os.environ)
end_time = datetime.datetime.now()
if exit_code is None:

Просмотреть файл

@ -4,11 +4,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Runs all types of tests from one unified interface.
TODO(gkanwar):
* Add options to run Monkey tests.
"""
"""Runs all types of tests from one unified interface."""
import collections
import logging
@ -433,14 +429,20 @@ def AddPerfTestOptions(option_parser):
option_parser.command_list = []
option_parser.example = ('%prog perf --steps perf_steps.json')
option_parser.add_option('--steps', help='JSON file containing the list '
'of perf steps to run.')
option_parser.add_option('--flaky-steps',
help='A JSON file containing steps that are flaky '
'and will have its exit code ignored.')
option_parser.add_option('--print-step', help='The name of a previously '
'executed perf step to print.')
option_parser.add_option(
'--steps',
help='JSON file containing the list of perf steps to run.')
option_parser.add_option(
'--flaky-steps',
help=('A JSON file containing steps that are flaky '
'and will have its exit code ignored.'))
option_parser.add_option(
'--print-step',
help='The name of a previously executed perf step to print.')
option_parser.add_option(
'--no-timeout', action='store_true',
help=('Do not impose a timeout. Each perf step is responsible for '
'implementing the timeout logic.'))
AddCommonOptions(option_parser)
@ -458,7 +460,8 @@ def ProcessPerfTestOptions(options, error_func):
if not options.steps and not options.print_step:
error_func('Please specify --steps or --print-step')
return perf_test_options.PerfOptions(
options.steps, options.flaky_steps, options.print_step)
options.steps, options.flaky_steps, options.print_step,
options.no_timeout)
def _RunGTests(options, error_func, devices):
@ -571,7 +574,8 @@ def _RunMonkeyTests(options, error_func, devices):
runner_factory, tests = monkey_setup.Setup(monkey_options)
results, exit_code = test_dispatcher.RunTests(
tests, runner_factory, devices, shard=False, test_timeout=None)
tests, runner_factory, devices, shard=False, test_timeout=None,
num_retries=options.num_retries)
report_results.LogFull(
results=results,
@ -591,7 +595,8 @@ def _RunPerfTests(options, error_func, devices):
runner_factory, tests = perf_setup.Setup(perf_options)
results, _ = test_dispatcher.RunTests(
tests, runner_factory, devices, shard=True, test_timeout=None)
tests, runner_factory, devices, shard=True, test_timeout=None,
num_retries=options.num_retries)
report_results.LogFull(
results=results,