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

Unified Diff: build/android/run_monkey_test.py

Issue 10908188: Moved RunMonkeyTests out of android_commands.py (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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/android_commands.py ('k') | no next file » | 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
index ab759156d1b190adf4479ccaa53a1389797073f7..faa6c33dfb468b008a06d6206a3ce4bebd1cc806 100755
--- a/build/android/run_monkey_test.py
+++ b/build/android/run_monkey_test.py
@@ -7,6 +7,7 @@
import logging
import optparse
import time
+import random
frankf 2012/09/11 17:36:51 not alphabetical. Please run gpylint.
from pylib import android_commands
from pylib import python_test_base
@@ -25,22 +26,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(RunMonkey(self.adb, self.options))
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])
@@ -61,7 +62,6 @@ def DispatchPythonTests(options):
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 +73,52 @@ 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 RunMonkey(adb, options):
bulach 2012/09/11 11:08:49 nit: if nothing else will use this, please make it
frankf 2012/09/11 17:36:51 I prefer to have explicit parameters with default
Isaac (away) 2012/09/13 03:06:18 This style of defaults is consistent with the rest
Isaac (away) 2012/09/13 03:06:18 Done.
+ """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.
bulach 2012/09/11 11:08:49 if this is becomes a method, please remove this Ar
Isaac (away) 2012/09/13 03:06:18 Done.
+
+ Returns:
+ Output of the test run.
+ """
+ category = options.category or []
+ seed = options.seed or random.randint(1, 100)
+ throttle = options.throttle or 100
+ event_count = options.event_count or 10000
+ verbosity = options.verbosity or 1
+ extra_args = options.extra_args or ''
+
+ cmd = ['monkey',
+ '-p %s' % 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 adb.RunShellCommand(' '.join(cmd),
+ timeout_time=event_count*throttle*1.5)
+
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].')
@@ -112,7 +148,7 @@ def main():
if options.category:
options.category = options.category.split(',')
- DispatchPythonTests(vars(options))
+ DispatchPythonTests(options)
if __name__ == '__main__':
« no previous file with comments | « build/android/pylib/android_commands.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698