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

Unified Diff: build/android/pylib/device/adb_wrapper.py

Issue 1101603002: [Android] Rework device filtering and add DeviceUtils.HealthyDevices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: perezju comments Created 5 years, 8 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/provision_devices.py ('k') | build/android/pylib/device/device_filter.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/device/adb_wrapper.py
diff --git a/build/android/pylib/device/adb_wrapper.py b/build/android/pylib/device/adb_wrapper.py
index fa430f55e32f59da51b1e8664fb3cad0881c7222..20787c19dc7b665d3140f3af4867da8d0d39f9b5 100644
--- a/build/android/pylib/device/adb_wrapper.py
+++ b/build/android/pylib/device/adb_wrapper.py
@@ -12,18 +12,22 @@ import collections
import errno
import logging
import os
+import re
from pylib import cmd_helper
from pylib import constants
from pylib.device import decorators
from pylib.device import device_errors
-from pylib.device import device_filter
from pylib.utils import timeout_retry
_DEFAULT_TIMEOUT = 30
_DEFAULT_RETRIES = 2
+_EMULATOR_RE = re.compile(r'^emulator-[0-9]+$')
+
+_READY_STATE = 'device'
+
def _VerifyLocalFileExists(path):
"""Verifies a local file exists.
@@ -160,22 +164,17 @@ class AdbWrapper(object):
cpu_affinity=0)
@classmethod
- def GetDevices(cls, filters=None, timeout=_DEFAULT_TIMEOUT,
- retries=_DEFAULT_RETRIES):
+ def GetDevices(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES):
"""DEPRECATED. Refer to Devices(...) below."""
# TODO(jbudorick): Remove this function once no more clients are using it.
- return cls.Devices(filters=filters, timeout=timeout, retries=retries)
+ return cls.Devices(timeout=timeout, retries=retries)
@classmethod
- def Devices(cls, filters=None, timeout=_DEFAULT_TIMEOUT,
+ def Devices(cls, is_ready=True, timeout=_DEFAULT_TIMEOUT,
retries=_DEFAULT_RETRIES):
"""Get the list of active attached devices.
Args:
- filters: (optional) A list of binary functions that take an AdbWrapper
- instance and a string description. Any device for which all provided
- filter functions do not return True will not be included in the
- returned list.
timeout: (optional) Timeout per try in seconds.
retries: (optional) Number of retries to attempt.
@@ -184,17 +183,8 @@ class AdbWrapper(object):
"""
output = cls._RunAdbCmd(['devices'], timeout=timeout, retries=retries)
lines = (line.split() for line in output.splitlines())
- devices = (AdbWrapper(line[0]) for line in lines if len(line) == 2)
-
- def matches_all_filters(device):
- for f in filters or ():
- if not f(device):
- logging.info('Device %s failed filter %s', device.GetDeviceSerial(),
- f.__name__)
- return False
- return True
-
- return [d for d in devices if matches_all_filters(d)]
+ return [AdbWrapper(line[0]) for line in lines
+ if len(line) == 2 and (not is_ready or line[1] == _READY_STATE)]
def GetDeviceSerial(self):
"""Gets the device serial number associated with this object.
@@ -551,3 +541,15 @@ class AdbWrapper(object):
if 'cannot' in output:
raise device_errors.AdbCommandFailedError(
['root'], output, device_serial=self._device_serial)
+
+ @property
+ def is_emulator(self):
+ return _EMULATOR_RE.match(self._device_serial)
+
+ @property
+ def is_ready(self):
+ try:
+ return self.GetState() == _READY_STATE
+ except device_errors.CommandFailedError:
+ return False
+
« no previous file with comments | « build/android/provision_devices.py ('k') | build/android/pylib/device/device_filter.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698