Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Unified Diff: build/android/run_monkey_test.py

Issue 22617003: Converts monkey test to its own test type (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Inlines TEST_TOKEN Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/pylib/monkey/test_runner.py ('k') | build/android/test_runner.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()
« no previous file with comments | « build/android/pylib/monkey/test_runner.py ('k') | build/android/test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698