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

This delegates timeout logic to the step command.

BUG=
[email protected], [email protected]

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221721 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/build/android/test_runner.py b/build/android/test_runner.py
index 2c87df9..e2505ab 100755
--- a/build/android/test_runner.py
+++ b/build/android/test_runner.py
@@ -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 @@
   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 @@
   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 @@
   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 @@
   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,