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

Side by Side Diff: build/android/pylib/device/adb_wrapper.py

Issue 1108173002: Roll //build, //native_client, and a few more targets of opportunity. Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Test fix 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 unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """This module wraps Android's adb tool. 5 """This module wraps Android's adb tool.
6 6
7 This is a thin wrapper around the adb interface. Any additional complexity 7 This is a thin wrapper around the adb interface. Any additional complexity
8 should be delegated to a higher level (ex. DeviceUtils). 8 should be delegated to a higher level (ex. DeviceUtils).
9 """ 9 """
10 10
11 import collections 11 import collections
12 import errno 12 import errno
13 import logging 13 import logging
14 import os 14 import os
15 import re
15 16
16 from pylib import cmd_helper 17 from pylib import cmd_helper
17 from pylib import constants 18 from pylib import constants
18 from pylib.device import decorators 19 from pylib.device import decorators
19 from pylib.device import device_errors 20 from pylib.device import device_errors
20 from pylib.utils import timeout_retry 21 from pylib.utils import timeout_retry
21 22
22 23
23 _DEFAULT_TIMEOUT = 30 24 _DEFAULT_TIMEOUT = 30
24 _DEFAULT_RETRIES = 2 25 _DEFAULT_RETRIES = 2
25 26
27 _EMULATOR_RE = re.compile(r'^emulator-[0-9]+$')
28
29 _READY_STATE = 'device'
30
26 31
27 def _VerifyLocalFileExists(path): 32 def _VerifyLocalFileExists(path):
28 """Verifies a local file exists. 33 """Verifies a local file exists.
29 34
30 Args: 35 Args:
31 path: Path to the local file. 36 path: Path to the local file.
32 37
33 Raises: 38 Raises:
34 IOError: If the file doesn't exist. 39 IOError: If the file doesn't exist.
35 """ 40 """
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 @classmethod 156 @classmethod
152 def KillServer(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES): 157 def KillServer(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES):
153 cls._RunAdbCmd(['kill-server'], timeout=timeout, retries=retries) 158 cls._RunAdbCmd(['kill-server'], timeout=timeout, retries=retries)
154 159
155 @classmethod 160 @classmethod
156 def StartServer(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES): 161 def StartServer(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES):
157 # CPU affinity is used to reduce adb instability http://crbug.com/268450 162 # CPU affinity is used to reduce adb instability http://crbug.com/268450
158 cls._RunAdbCmd(['start-server'], timeout=timeout, retries=retries, 163 cls._RunAdbCmd(['start-server'], timeout=timeout, retries=retries,
159 cpu_affinity=0) 164 cpu_affinity=0)
160 165
161 # TODO(craigdh): Determine the filter criteria that should be supported.
162 @classmethod 166 @classmethod
163 def GetDevices(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES): 167 def GetDevices(cls, timeout=_DEFAULT_TIMEOUT, retries=_DEFAULT_RETRIES):
168 """DEPRECATED. Refer to Devices(...) below."""
169 # TODO(jbudorick): Remove this function once no more clients are using it.
170 return cls.Devices(timeout=timeout, retries=retries)
171
172 @classmethod
173 def Devices(cls, is_ready=True, timeout=_DEFAULT_TIMEOUT,
174 retries=_DEFAULT_RETRIES):
164 """Get the list of active attached devices. 175 """Get the list of active attached devices.
165 176
166 Args: 177 Args:
167 timeout: (optional) Timeout per try in seconds. 178 timeout: (optional) Timeout per try in seconds.
168 retries: (optional) Number of retries to attempt. 179 retries: (optional) Number of retries to attempt.
169 180
170 Yields: 181 Yields:
171 AdbWrapper instances. 182 AdbWrapper instances.
172 """ 183 """
173 output = cls._RunAdbCmd(['devices'], timeout=timeout, retries=retries) 184 output = cls._RunAdbCmd(['devices'], timeout=timeout, retries=retries)
174 lines = [line.split() for line in output.splitlines()] 185 lines = (line.split() for line in output.splitlines())
175 return [AdbWrapper(line[0]) for line in lines 186 return [AdbWrapper(line[0]) for line in lines
176 if len(line) == 2 and line[1] == 'device'] 187 if len(line) == 2 and (not is_ready or line[1] == _READY_STATE)]
177 188
178 def GetDeviceSerial(self): 189 def GetDeviceSerial(self):
179 """Gets the device serial number associated with this object. 190 """Gets the device serial number associated with this object.
180 191
181 Returns: 192 Returns:
182 Device serial number as a string. 193 Device serial number as a string.
183 """ 194 """
184 return self._device_serial 195 return self._device_serial
185 196
186 def Push(self, local, remote, timeout=60*5, retries=_DEFAULT_RETRIES): 197 def Push(self, local, remote, timeout=60*5, retries=_DEFAULT_RETRIES):
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 """Restarts the adbd daemon with root permissions, if possible. 534 """Restarts the adbd daemon with root permissions, if possible.
524 535
525 Args: 536 Args:
526 timeout: (optional) Timeout per try in seconds. 537 timeout: (optional) Timeout per try in seconds.
527 retries: (optional) Number of retries to attempt. 538 retries: (optional) Number of retries to attempt.
528 """ 539 """
529 output = self._RunDeviceAdbCmd(['root'], timeout, retries) 540 output = self._RunDeviceAdbCmd(['root'], timeout, retries)
530 if 'cannot' in output: 541 if 'cannot' in output:
531 raise device_errors.AdbCommandFailedError( 542 raise device_errors.AdbCommandFailedError(
532 ['root'], output, device_serial=self._device_serial) 543 ['root'], output, device_serial=self._device_serial)
544
545 @property
546 def is_emulator(self):
547 return _EMULATOR_RE.match(self._device_serial)
548
549 @property
550 def is_ready(self):
551 try:
552 return self.GetState() == _READY_STATE
553 except device_errors.CommandFailedError:
554 return False
555
OLDNEW
« no previous file with comments | « build/android/pylib/constants/keyevent.py ('k') | build/android/pylib/device/adb_wrapper_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698