diff options
author | ilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 07:47:44 +0000 |
---|---|---|
committer | ilevy@chromium.org <ilevy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-13 07:47:44 +0000 |
commit | cfcd35727e183f94be3312bcccfc3ee32480bb72 (patch) | |
tree | 864f0af796100780c18d52762bcb9df6bf1e833b | |
parent | 847242a46c160f60743f6d010ecb6cfd31c5f226 (diff) | |
download | chromium_src-cfcd35727e183f94be3312bcccfc3ee32480bb72.zip chromium_src-cfcd35727e183f94be3312bcccfc3ee32480bb72.tar.gz chromium_src-cfcd35727e183f94be3312bcccfc3ee32480bb72.tar.bz2 |
Moved RunMonkeyTests out of android_commands.py
(it did not fit)
- simplified calling structure.
R=frankf@chromium.org,bulach@chromium.org,klundberg@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/10908188
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156511 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | build/android/pylib/android_commands.py | 35 | ||||
-rwxr-xr-x | build/android/run_monkey_test.py | 69 |
2 files changed, 52 insertions, 52 deletions
diff --git a/build/android/pylib/android_commands.py b/build/android/pylib/android_commands.py index 2b412f3..740f53c 100644 --- a/build/android/pylib/android_commands.py +++ b/build/android/pylib/android_commands.py @@ -11,7 +11,6 @@ import collections import datetime import logging import os -import random import re import shlex import subprocess @@ -1003,37 +1002,3 @@ class AndroidCommands(object): status = self._adb.SendShellCommand( '\'ls "%s" >/dev/null 2>&1; echo $?\'' % (file_name)) return int(status) == 0 - - def RunMonkey(self, package_name, category=None, throttle=100, seed=None, - event_count=10000, verbosity=1, extra_args=''): - """Runs monkey test for a given package. - - Args: - package_name: Allowed package. - category: A list of allowed categories. - throttle: Delay between events (ms). - seed: Seed value for pseduo-random generator. Same seed value - generates the same sequence of events. Seed is randomized by - default. - 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. - - Returns: - Output of the test run. - """ - category = category or [] - seed = seed or random.randint(1, 100) - - cmd = ['monkey', - '-p %s' % package_name, - ' '.join(['-c %s' % c for c in category]), - '--throttle %d' % throttle, - '-s %d' % seed, - '-v ' * verbosity, - '--monitor-native-crashes', - '--kill-process-after-error', - extra_args, - '%d' % event_count] - return self.RunShellCommand(' '.join(cmd), - timeout_time=event_count*throttle*1.5) diff --git a/build/android/run_monkey_test.py b/build/android/run_monkey_test.py index ab75915..7103cb5 100755 --- a/build/android/run_monkey_test.py +++ b/build/android/run_monkey_test.py @@ -6,11 +6,11 @@ """Runs the Monkey tests on one or more devices.""" import logging import optparse +import random import time from pylib import android_commands from pylib import python_test_base -from pylib import python_test_caller from pylib import python_test_sharder from pylib import test_options_parser from pylib import test_result @@ -25,22 +25,22 @@ class MonkeyTest(python_test_base.PythonTestBase): start_ms = int(time.time()) * 1000 # Launch and wait for Chrome to launch. - self.adb.StartActivity(self.options['package_name'], - self.options.pop('activity_name'), + self.adb.StartActivity(self.options.package_name, + self.options.activity_name, wait_for_completion=True, action='android.intent.action.MAIN') # 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.options['package_name']) + before_pids = self.adb.ExtractPid(self.options.package_name) # Run the test. output = '' duration_ms = 0 if before_pids: - output = '\n'.join(self.adb.RunMonkey(**self.options)) + output = '\n'.join(self._LaunchMonkeyTest()) duration_ms = int(time.time()) * 1000 - start_ms - after_pids = self.adb.ExtractPid(self.options['package_name']) + after_pids = self.adb.ExtractPid(self.options.package_name) crashed = (not before_pids or not after_pids or after_pids[0] != before_pids[0]) @@ -55,13 +55,50 @@ class MonkeyTest(python_test_base.PythonTestBase): return results + def _LaunchMonkeyTest(self): + """Runs monkey test for a given package. + + Looks at the following parameters in the options object provided + in class initializer: + package_name: Allowed package. + category: A list of allowed categories. + throttle: Delay between events (ms). + seed: Seed value for pseduo-random generator. Same seed value + generates the same sequence of events. Seed is randomized by + default. + 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. + """ + + category = self.options.category or [] + seed = self.options.seed or random.randint(1, 100) + throttle = self.options.throttle or 100 + event_count = self.options.event_count or 10000 + verbosity = self.options.verbosity or 1 + extra_args = self.options.extra_args or '' + + timeout_ms = event_count * throttle * 1.5 + + cmd = ['monkey', + '-p %s' % self.options.package_name, + ' '.join(['-c %s' % c for c in category]), + '--throttle %d' % throttle, + '-s %d' % seed, + '-v ' * verbosity, + '--monitor-native-crashes', + '--kill-process-after-error', + extra_args, + '%d' % event_count] + return self.adb.RunShellCommand(' '.join(cmd), timeout_time=timeout_ms) + + def DispatchPythonTests(options): """Dispatches the Monkey tests, sharding it if there multiple devices.""" logger = logging.getLogger() logger.setLevel(logging.DEBUG) - build_type = options.pop('build_type') available_tests = [MonkeyTest('testMonkey', options)] attached_devices = android_commands.GetAttachedDevices() if not attached_devices: @@ -73,16 +110,14 @@ def DispatchPythonTests(options): sharder = python_test_sharder.PythonTestSharder( attached_devices, 1, available_tests) result = sharder.RunShardedTests() - result.LogFull('Monkey', 'Monkey', build_type) + result.LogFull('Monkey', 'Monkey', options.build_type) result.PrintAnnotation() - 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('--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].') @@ -91,16 +126,16 @@ def main(): 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 pseduo-random generator. Same seed' - ' value generates the same sequence of events. Seed is' - ' randomized by default.') + help=('Seed value for pseduo-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"].') + help=('String of other args to pass to the command verbatim' + ' [default: "%default"].')) (options, args) = parser.parse_args() if args: @@ -112,7 +147,7 @@ def main(): if options.category: options.category = options.category.split(',') - DispatchPythonTests(vars(options)) + DispatchPythonTests(options) if __name__ == '__main__': |