| Index: build/android/run_monkey_test.py
 | 
| diff --git a/build/android/run_monkey_test.py b/build/android/run_monkey_test.py
 | 
| deleted file mode 100755
 | 
| index 4957ac6ec7e1135c8801f69a56e132837162c562..0000000000000000000000000000000000000000
 | 
| --- a/build/android/run_monkey_test.py
 | 
| +++ /dev/null
 | 
| @@ -1,170 +0,0 @@
 | 
| -#!/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.
 | 
| -
 | 
| -"""Runs the Monkey tests on one or more devices."""
 | 
| -import logging
 | 
| -import optparse
 | 
| -import random
 | 
| -import sys
 | 
| -
 | 
| -from pylib.base import base_test_result
 | 
| -from pylib.base import test_dispatcher
 | 
| -from pylib.host_driven import test_case
 | 
| -from pylib.host_driven import test_runner
 | 
| -from pylib.utils import report_results
 | 
| -from pylib.utils import test_options_parser
 | 
| -
 | 
| -
 | 
| -class MonkeyTest(test_case.HostDrivenTestCase):
 | 
| -  def __init__(self, test_name, package_name, activity_name, category, seed,
 | 
| -               throttle, event_count, verbosity, extra_args):
 | 
| -    """Create a MonkeyTest object.
 | 
| -
 | 
| -    Args:
 | 
| -      test_name: Name of the method to run for this test object.
 | 
| -      package_name: Allowed package.
 | 
| -      activity_name: Name of the activity to start.
 | 
| -      category: A list of allowed categories.
 | 
| -      seed: Seed value for pseduo-random generator. Same seed value
 | 
| -          generates the same sequence of events. Seed is randomized by default.
 | 
| -      throttle: Delay between events (ms).
 | 
| -      event_count: Number of events to generate.
 | 
| -      verbosity: Verbosity level [0-3].
 | 
| -      extra_args: A string of other args to pass to the command verbatim.
 | 
| -    """
 | 
| -    super(MonkeyTest, self).__init__(test_name)
 | 
| -    self.package_name = package_name
 | 
| -    self.activity_name = activity_name
 | 
| -    self.category = category
 | 
| -    self.seed = seed or random.randint(1, 100)
 | 
| -    self.throttle = throttle
 | 
| -    self.event_count = event_count
 | 
| -    self.verbosity = verbosity
 | 
| -    self.extra_args = extra_args
 | 
| -
 | 
| -  def testMonkey(self):
 | 
| -    # Launch and wait for Chrome to launch.
 | 
| -    self.adb.StartActivity(self.package_name,
 | 
| -                           self.activity_name,
 | 
| -                           wait_for_completion=True,
 | 
| -                           action='android.intent.action.MAIN',
 | 
| -                           force_stop=True)
 | 
| -
 | 
| -    # Chrome crashes are not always caught by Monkey test runner.
 | 
| -    # Verify Chrome has the same PID before and after the test.
 | 
| -    before_pids = self.adb.ExtractPid(self.package_name)
 | 
| -
 | 
| -    # Run the test.
 | 
| -    output = ''
 | 
| -    if before_pids:
 | 
| -      output = '\n'.join(self._LaunchMonkeyTest())
 | 
| -      after_pids = self.adb.ExtractPid(self.package_name)
 | 
| -
 | 
| -    crashed = (not before_pids or not after_pids
 | 
| -               or after_pids[0] != before_pids[0])
 | 
| -
 | 
| -    results = base_test_result.TestRunResults()
 | 
| -    if 'Monkey finished' in output and not crashed:
 | 
| -      result = base_test_result.BaseTestResult(
 | 
| -          self.tagged_name, base_test_result.ResultType.PASS, log=output)
 | 
| -    else:
 | 
| -      result = base_test_result.BaseTestResult(
 | 
| -          self.tagged_name, base_test_result.ResultType.FAIL, log=output)
 | 
| -    results.AddResult(result)
 | 
| -    return results
 | 
| -
 | 
| -  def _LaunchMonkeyTest(self):
 | 
| -    """Runs monkey test for a given package.
 | 
| -
 | 
| -    Returns:
 | 
| -      Output from the monkey command on the device.
 | 
| -    """
 | 
| -
 | 
| -    timeout_ms = self.event_count * self.throttle * 1.5
 | 
| -
 | 
| -    cmd = ['monkey',
 | 
| -           '-p %s' % self.package_name,
 | 
| -           ' '.join(['-c %s' % c for c in self.category]),
 | 
| -           '--throttle %d' % self.throttle,
 | 
| -           '-s %d' % self.seed,
 | 
| -           '-v ' * self.verbosity,
 | 
| -           '--monitor-native-crashes',
 | 
| -           '--kill-process-after-error',
 | 
| -           self.extra_args,
 | 
| -           '%d' % self.event_count]
 | 
| -    return self.adb.RunShellCommand(' '.join(cmd), timeout_time=timeout_ms)
 | 
| -
 | 
| -
 | 
| -def RunMonkeyTests(options):
 | 
| -  """Runs the Monkey tests, replicating it if there multiple devices."""
 | 
| -  logger = logging.getLogger()
 | 
| -  logger.setLevel(logging.DEBUG)
 | 
| -
 | 
| -  # Actually run the tests.
 | 
| -  logging.debug('Running monkey tests.')
 | 
| -  available_tests = [
 | 
| -      MonkeyTest('testMonkey', options.package_name, options.activity_name,
 | 
| -                 category=options.category, seed=options.seed,
 | 
| -                 throttle=options.throttle, event_count=options.event_count,
 | 
| -                 verbosity=options.verbosity, extra_args=options.extra_args)]
 | 
| -
 | 
| -  def TestRunnerFactory(device, shard_index):
 | 
| -    return test_runner.HostDrivenTestRunner(
 | 
| -        device, shard_index, '', options.build_type, False, False)
 | 
| -
 | 
| -  results, exit_code = test_dispatcher.RunTests(
 | 
| -      available_tests, TestRunnerFactory, False, None, shard=False,
 | 
| -      build_type=options.build_type, num_retries=0)
 | 
| -
 | 
| -  report_results.LogFull(
 | 
| -      results=results,
 | 
| -      test_type='Monkey',
 | 
| -      test_package='Monkey',
 | 
| -      build_type=options.build_type)
 | 
| -
 | 
| -  return exit_code
 | 
| -
 | 
| -
 | 
| -def main():
 | 
| -  desc = 'Run the Monkey tests on 1 or more devices.'
 | 
| -  parser = optparse.OptionParser(description=desc)
 | 
| -  test_options_parser.AddBuildTypeOption(parser)
 | 
| -  parser.add_option('--package-name', help='Allowed package.')
 | 
| -  parser.add_option('--activity-name',
 | 
| -                    default='com.google.android.apps.chrome.Main',
 | 
| -                    help='Name of the activity to start [default: %default].')
 | 
| -  parser.add_option('--category', default='',
 | 
| -                    help='A list of allowed categories [default: %default].')
 | 
| -  parser.add_option('--throttle', default=100, type='int',
 | 
| -                    help='Delay between events (ms) [default: %default]. ')
 | 
| -  parser.add_option('--seed', type='int',
 | 
| -                    help=('Seed value for pseudo-random generator. Same seed '
 | 
| -                          'value generates the same sequence of events. Seed '
 | 
| -                          'is randomized by default.'))
 | 
| -  parser.add_option('--event-count', default=10000, type='int',
 | 
| -                    help='Number of events to generate [default: %default].')
 | 
| -  parser.add_option('--verbosity', default=1, type='int',
 | 
| -                    help='Verbosity level [0-3] [default: %default].')
 | 
| -  parser.add_option('--extra-args', default='',
 | 
| -                    help=('String of other args to pass to the command verbatim'
 | 
| -                          ' [default: "%default"].'))
 | 
| -  (options, args) = parser.parse_args()
 | 
| -
 | 
| -  if args:
 | 
| -    parser.print_help(sys.stderr)
 | 
| -    parser.error('Unknown arguments: %s' % args)
 | 
| -
 | 
| -  if not options.package_name:
 | 
| -    parser.print_help(sys.stderr)
 | 
| -    parser.error('Missing package name')
 | 
| -
 | 
| -  if options.category:
 | 
| -    options.category = options.category.split(',')
 | 
| -
 | 
| -  RunMonkeyTests(options)
 | 
| -
 | 
| -
 | 
| -if __name__ == '__main__':
 | 
| -  main()
 | 
| 
 |