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

Unified Diff: build/android/pylib/local/device/local_device_environment.py

Issue 1394173002: Android test_runner.py: Add --enable-device-cache to speed up file pushing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review1 Created 5 years, 2 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 | « no previous file | 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/pylib/local/device/local_device_environment.py
diff --git a/build/android/pylib/local/device/local_device_environment.py b/build/android/pylib/local/device/local_device_environment.py
index ee0ff987afd353f22095d06d3c52f4014dddcf44..25ef5828da1c682aa1d88fea24bb762a5030fbcd 100644
--- a/build/android/pylib/local/device/local_device_environment.py
+++ b/build/android/pylib/local/device/local_device_environment.py
@@ -3,15 +3,22 @@
# found in the LICENSE file.
import logging
+import os
import threading
from devil.android import device_blacklist
from devil.android import device_errors
from devil.android import device_utils
from devil.utils import parallelizer
+from pylib import constants
from pylib.base import environment
+def _DeviceCachePath(device):
+ file_name = 'device_cache_%s.json' % device.adb.GetDeviceSerial()
+ return os.path.join(constants.GetOutDirectory(), file_name)
+
+
class LocalDeviceEnvironment(environment.Environment):
def __init__(self, args, _error_func):
@@ -24,11 +31,12 @@ class LocalDeviceEnvironment(environment.Environment):
self._devices = []
self._max_tries = 1 + args.num_retries
self._tool_name = args.tool
+ self._enable_device_cache = args.enable_device_cache
#override
def SetUp(self):
available_devices = device_utils.DeviceUtils.HealthyDevices(
- self._blacklist)
+ self._blacklist, enable_device_files_cache=self._enable_device_cache)
if not available_devices:
raise device_errors.NoDevicesError
if self._device_serial:
@@ -40,6 +48,15 @@ class LocalDeviceEnvironment(environment.Environment):
else:
self._devices = available_devices
+ if self._enable_device_cache:
+ for d in self._devices:
+ cache_path = _DeviceCachePath(d)
+ if os.path.exists(cache_path):
+ logging.info('Using device cache: %s', cache_path)
+ with open(cache_path) as f:
+ d.LoadCacheData(f.read())
+ os.unlink(cache_path)
+
@property
def devices(self):
if not self._devices:
@@ -60,7 +77,14 @@ class LocalDeviceEnvironment(environment.Environment):
#override
def TearDown(self):
- pass
+ # Write the cache even when not using it so that it will be ready the first
+ # time that it is enabled. Writing it every time is also necessary so that
+ # an invalid cache can be flushed just by disabling it for one run.
+ for d in self._devices:
+ cache_path = _DeviceCachePath(d)
+ with open(cache_path, 'w') as f:
+ f.write(d.DumpCacheData())
+ logging.info('Wrote device cache: %s', cache_path)
def BlacklistDevice(self, device):
if not self._blacklist:
« no previous file with comments | « no previous file | build/android/test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698