summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoragrieve <agrieve@chromium.org>2016-02-08 15:25:14 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-08 23:27:05 +0000
commitcd243a271a150e4e68c988e0bf96865f6ff79a06 (patch)
tree196bbc7c5e944cd797e4c369df78898b8c63b375
parent407d1de019d5baadbd5eda34cc8f852da1ec41fc (diff)
downloadchromium_src-cd243a271a150e4e68c988e0bf96865f6ff79a06.zip
chromium_src-cd243a271a150e4e68c988e0bf96865f6ff79a06.tar.gz
chromium_src-cd243a271a150e4e68c988e0bf96865f6ff79a06.tar.bz2
Adds --skip-clear-data flag to android's test_runner.py
Meant to be used to speed up local development. Mostly applicable when running instrumentation tests against _incremental .apks. BUG=540857 Review URL: https://codereview.chromium.org/1570043004 Cr-Commit-Position: refs/heads/master@{#374211}
-rw-r--r--build/android/pylib/gtest/gtest_test_instance.py5
-rw-r--r--build/android/pylib/instrumentation/test_options.py3
-rw-r--r--build/android/pylib/instrumentation/test_runner.py3
-rw-r--r--build/android/pylib/local/device/local_device_gtest_run.py4
-rw-r--r--build/android/pylib/local/device/local_device_instrumentation_test_run.py2
-rwxr-xr-xbuild/android/test_runner.py7
-rw-r--r--build/config/android/internal_rules.gni1
7 files changed, 18 insertions, 7 deletions
diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py
index 538376d..ce5af45 100644
--- a/build/android/pylib/gtest/gtest_test_instance.py
+++ b/build/android/pylib/gtest/gtest_test_instance.py
@@ -135,6 +135,7 @@ class GtestTestInstance(test_instance.TestInstance):
raise ValueError('Platform mode currently supports only 1 gtest suite')
self._extract_test_list_from_filter = args.extract_test_list_from_filter
self._shard_timeout = args.shard_timeout
+ self._skip_clear_data = args.skip_clear_data
self._suite = args.suite_name[0]
incremental_part = '_incremental' if args.incremental_install else ''
@@ -248,6 +249,10 @@ class GtestTestInstance(test_instance.TestInstance):
return self._shard_timeout
@property
+ def skip_clear_data(self):
+ return self._skip_clear_data
+
+ @property
def suite(self):
return self._suite
diff --git a/build/android/pylib/instrumentation/test_options.py b/build/android/pylib/instrumentation/test_options.py
index 0d9c46d..e280c33 100644
--- a/build/android/pylib/instrumentation/test_options.py
+++ b/build/android/pylib/instrumentation/test_options.py
@@ -28,4 +28,5 @@ InstrumentationOptions = collections.namedtuple('InstrumentationOptions', [
'timeout_scale',
'apk_under_test',
'additional_apks',
- 'strict_mode'])
+ 'strict_mode',
+ 'skip_clear_data'])
diff --git a/build/android/pylib/instrumentation/test_runner.py b/build/android/pylib/instrumentation/test_runner.py
index b4bbb62..795e817 100644
--- a/build/android/pylib/instrumentation/test_runner.py
+++ b/build/android/pylib/instrumentation/test_runner.py
@@ -229,11 +229,12 @@ class TestRunner(base_test_runner.BaseTestRunner):
self.coverage_device_file, self.coverage_host_file)
self.device.RunShellCommand(
'rm -f %s' % self.coverage_device_file)
- elif self.package_info:
+ elif self.package_info and not self.options.skip_clear_data:
apk_under_test = self.test_pkg.GetApkUnderTest()
permissions = apk_under_test.GetPermissions() if apk_under_test else None
self.device.ClearApplicationState(
self.package_info.package, permissions=permissions)
+ self.device.ClearApplicationState(self.package_info.package)
def TearDownPerfMonitoring(self, test):
"""Cleans up performance monitoring if the specified test required it.
diff --git a/build/android/pylib/local/device/local_device_gtest_run.py b/build/android/pylib/local/device/local_device_gtest_run.py
index 740a8c3..4217890 100644
--- a/build/android/pylib/local/device/local_device_gtest_run.py
+++ b/build/android/pylib/local/device/local_device_gtest_run.py
@@ -345,9 +345,7 @@ class LocalDeviceGtestRun(local_device_test_run.LocalDeviceTestRun):
if self._test_instance.app_files:
self._delegate.PullAppFiles(device, self._test_instance.app_files,
self._test_instance.app_file_dir)
- # Clearing data when using incremental install wipes out cached optimized
- # dex files (and shouldn't be necessary by tests anyways).
- if not self._env.incremental_install:
+ if not self._test_instance.skip_clear_data:
self._delegate.Clear(device)
# Parse the output.
diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
index ef78c89..c0850fa 100644
--- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py
+++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py
@@ -219,7 +219,7 @@ class LocalDeviceInstrumentationTestRun(
if r.GetType() == base_test_result.ResultType.UNKNOWN:
r.SetType(base_test_result.ResultType.CRASH)
# TODO(jbudorick): ClearApplicationState on failure before switching
- # instrumentation tests to platform mode.
+ # instrumentation tests to platform mode (but respect --skip-clear-data).
return results
#override
diff --git a/build/android/test_runner.py b/build/android/test_runner.py
index 6921ded..e16acbf 100755
--- a/build/android/test_runner.py
+++ b/build/android/test_runner.py
@@ -216,6 +216,10 @@ def AddDeviceOptions(parser):
group.add_argument('--enable-concurrent-adb', action='store_true',
help='Run multiple adb commands at the same time, even '
'for the same device.')
+ group.add_argument('--skip-clear-data', action='store_true',
+ help='Do not wipe app data between tests. Use this to '
+ 'speed up local development and never on bots '
+ '(increases flakiness)')
def AddGTestOptions(parser):
@@ -467,7 +471,8 @@ def ProcessInstrumentationOptions(args):
args.timeout_scale,
args.apk_under_test,
args.additional_apks,
- args.strict_mode)
+ args.strict_mode,
+ args.skip_clear_data)
def AddUIAutomatorTestOptions(parser):
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 7e279c3..25b9a00 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -2100,6 +2100,7 @@ template("test_runner_script") {
"--enable-device-cache",
"--extract-test-list-from-filter",
"--num_retries=0",
+ "--skip-clear-data", # Clearing wipes optimized dex files.
]
}
if (is_asan) {