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

Side by Side Diff: build/android/pylib/android_commands.py

Issue 117333008: Silence warning about falling back to checked-in adb binary (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/pylib/constants.py » ('j') | build/android/pylib/constants.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 """Provides an interface to communicate with the device via the adb command. 5 """Provides an interface to communicate with the device via the adb command.
6 6
7 Assumes adb binary is currently on system path. 7 Assumes adb binary is currently on system path.
8 """ 8 """
9 9
10 import collections 10 import collections
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 027c10494100b4d7 device 93 027c10494100b4d7 device
94 emulator-5554 offline 94 emulator-5554 offline
95 95
96 Args: 96 Args:
97 hardware: Include attached actual devices that are online. 97 hardware: Include attached actual devices that are online.
98 emulator: Include emulators (i.e. AVD's) currently on host. 98 emulator: Include emulators (i.e. AVD's) currently on host.
99 offline: Include devices and emulators that are offline. 99 offline: Include devices and emulators that are offline.
100 100
101 Returns: List of devices. 101 Returns: List of devices.
102 """ 102 """
103 adb_devices_output = cmd_helper.GetCmdOutput([constants.ADB_PATH, 'devices']) 103 adb_devices_output = cmd_helper.GetCmdOutput([constants.GetAdbPath(),
104 'devices'])
104 105
105 re_device = re.compile('^([a-zA-Z0-9_:.-]+)\tdevice$', re.MULTILINE) 106 re_device = re.compile('^([a-zA-Z0-9_:.-]+)\tdevice$', re.MULTILINE)
106 online_devices = re_device.findall(adb_devices_output) 107 online_devices = re_device.findall(adb_devices_output)
107 108
108 re_device = re.compile('^(emulator-[0-9]+)\tdevice', re.MULTILINE) 109 re_device = re.compile('^(emulator-[0-9]+)\tdevice', re.MULTILINE)
109 emulator_devices = re_device.findall(adb_devices_output) 110 emulator_devices = re_device.findall(adb_devices_output)
110 111
111 re_device = re.compile('^([a-zA-Z0-9_:.-]+)\toffline$', re.MULTILINE) 112 re_device = re.compile('^([a-zA-Z0-9_:.-]+)\toffline$', re.MULTILINE)
112 offline_devices = re_device.findall(adb_devices_output) 113 offline_devices = re_device.findall(adb_devices_output)
113 114
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 235
235 def __init__(self, device=None, api_strict_mode=False): 236 def __init__(self, device=None, api_strict_mode=False):
236 """Constructor. 237 """Constructor.
237 238
238 Args: 239 Args:
239 device: If given, adb commands are only send to the device of this ID. 240 device: If given, adb commands are only send to the device of this ID.
240 Otherwise commands are sent to all attached devices. 241 Otherwise commands are sent to all attached devices.
241 api_strict_mode: A boolean indicating whether fatal errors should be 242 api_strict_mode: A boolean indicating whether fatal errors should be
242 raised if this API is used improperly. 243 raised if this API is used improperly.
243 """ 244 """
244 adb_dir = os.path.dirname(constants.ADB_PATH) 245 adb_dir = os.path.dirname(constants.GetAdbPath())
245 if adb_dir and adb_dir not in os.environ['PATH'].split(os.pathsep): 246 if adb_dir and adb_dir not in os.environ['PATH'].split(os.pathsep):
246 # Required by third_party/android_testrunner to call directly 'adb'. 247 # Required by third_party/android_testrunner to call directly 'adb'.
247 os.environ['PATH'] += os.pathsep + adb_dir 248 os.environ['PATH'] += os.pathsep + adb_dir
248 self._adb = adb_interface.AdbInterface() 249 self._adb = adb_interface.AdbInterface()
249 if device: 250 if device:
250 self._adb.SetTargetSerial(device) 251 self._adb.SetTargetSerial(device)
251 self._device = device 252 self._device = device
252 self._logcat = None 253 self._logcat = None
253 self.logcat_process = None 254 self.logcat_process = None
254 self._logcat_tmpoutfile = None 255 self._logcat_tmpoutfile = None
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 ret = self.KillAdbServer() 505 ret = self.KillAdbServer()
505 if ret != 0: 506 if ret != 0:
506 raise errors.MsgException('KillAdbServer: %d' % ret) 507 raise errors.MsgException('KillAdbServer: %d' % ret)
507 508
508 ret = self.StartAdbServer() 509 ret = self.StartAdbServer()
509 if ret != 0: 510 if ret != 0:
510 raise errors.MsgException('StartAdbServer: %d' % ret) 511 raise errors.MsgException('StartAdbServer: %d' % ret)
511 512
512 def KillAdbServer(self): 513 def KillAdbServer(self):
513 """Kill adb server.""" 514 """Kill adb server."""
514 adb_cmd = [constants.ADB_PATH, 'kill-server'] 515 adb_cmd = [constants.GetAdbPath(), 'kill-server']
515 ret = cmd_helper.RunCmd(adb_cmd) 516 ret = cmd_helper.RunCmd(adb_cmd)
516 retry = 0 517 retry = 0
517 while retry < 3: 518 while retry < 3:
518 ret = cmd_helper.RunCmd(['pgrep', 'adb']) 519 ret = cmd_helper.RunCmd(['pgrep', 'adb'])
519 if ret != 0: 520 if ret != 0:
520 # pgrep didn't find adb, kill-server succeeded. 521 # pgrep didn't find adb, kill-server succeeded.
521 return 0 522 return 0
522 retry += 1 523 retry += 1
523 time.sleep(retry) 524 time.sleep(retry)
524 return ret 525 return ret
525 526
526 def StartAdbServer(self): 527 def StartAdbServer(self):
527 """Start adb server.""" 528 """Start adb server."""
528 adb_cmd = ['taskset', '-c', '0', constants.ADB_PATH, 'start-server'] 529 adb_cmd = ['taskset', '-c', '0', constants.GetAdbPath(), 'start-server']
529 ret = cmd_helper.RunCmd(adb_cmd) 530 ret = cmd_helper.RunCmd(adb_cmd)
530 retry = 0 531 retry = 0
531 while retry < 3: 532 while retry < 3:
532 ret = cmd_helper.RunCmd(['pgrep', 'adb']) 533 ret = cmd_helper.RunCmd(['pgrep', 'adb'])
533 if ret == 0: 534 if ret == 0:
534 # pgrep found adb, start-server succeeded. 535 # pgrep found adb, start-server succeeded.
535 # Waiting for device to reconnect before returning success. 536 # Waiting for device to reconnect before returning success.
536 self._adb.SendCommand('wait-for-device') 537 self._adb.SendCommand('wait-for-device')
537 return 0 538 return 0
538 retry += 1 539 retry += 1
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 if filters: 1255 if filters:
1255 args.extend(filters) 1256 args.extend(filters)
1256 else: 1257 else:
1257 args.append('*:v') 1258 args.append('*:v')
1258 1259
1259 if logfile: 1260 if logfile:
1260 logfile = NewLineNormalizer(logfile) 1261 logfile = NewLineNormalizer(logfile)
1261 1262
1262 # Spawn logcat and synchronize with it. 1263 # Spawn logcat and synchronize with it.
1263 for _ in range(4): 1264 for _ in range(4):
1264 self._logcat = pexpect.spawn(constants.ADB_PATH, args, timeout=10, 1265 self._logcat = pexpect.spawn(constants.GetAdbPath(), args, timeout=10,
1265 logfile=logfile) 1266 logfile=logfile)
1266 if not clear or self.SyncLogCat(): 1267 if not clear or self.SyncLogCat():
1267 break 1268 break
1268 self._logcat.close(force=True) 1269 self._logcat.close(force=True)
1269 else: 1270 else:
1270 logging.critical('Error reading from logcat: ' + str(self._logcat.match)) 1271 logging.critical('Error reading from logcat: ' + str(self._logcat.match))
1271 sys.exit(1) 1272 sys.exit(1)
1272 1273
1273 def SyncLogCat(self): 1274 def SyncLogCat(self):
1274 """Synchronize with logcat. 1275 """Synchronize with logcat.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1336 'to debug)' % 1337 'to debug)' %
1337 (timeout, success_re.pattern)) 1338 (timeout, success_re.pattern))
1338 except pexpect.EOF: 1339 except pexpect.EOF:
1339 # It seems that sometimes logcat can end unexpectedly. This seems 1340 # It seems that sometimes logcat can end unexpectedly. This seems
1340 # to happen during Chrome startup after a reboot followed by a cache 1341 # to happen during Chrome startup after a reboot followed by a cache
1341 # clean. I don't understand why this happens, but this code deals with 1342 # clean. I don't understand why this happens, but this code deals with
1342 # getting EOF in logcat. 1343 # getting EOF in logcat.
1343 logging.critical('Found EOF in adb logcat. Restarting...') 1344 logging.critical('Found EOF in adb logcat. Restarting...')
1344 # Rerun spawn with original arguments. Note that self._logcat.args[0] is 1345 # Rerun spawn with original arguments. Note that self._logcat.args[0] is
1345 # the path of adb, so we don't want it in the arguments. 1346 # the path of adb, so we don't want it in the arguments.
1346 self._logcat = pexpect.spawn(constants.ADB_PATH, 1347 self._logcat = pexpect.spawn(constants.GetAdbPath(),
1347 self._logcat.args[1:], 1348 self._logcat.args[1:],
1348 timeout=self._logcat.timeout, 1349 timeout=self._logcat.timeout,
1349 logfile=self._logcat.logfile) 1350 logfile=self._logcat.logfile)
1350 1351
1351 def StartRecordingLogcat(self, clear=True, filters=['*:v']): 1352 def StartRecordingLogcat(self, clear=True, filters=['*:v']):
1352 """Starts recording logcat output to eventually be saved as a string. 1353 """Starts recording logcat output to eventually be saved as a string.
1353 1354
1354 This call should come before some series of tests are run, with either 1355 This call should come before some series of tests are run, with either
1355 StopRecordingLogcat or SearchLogcatRecord following the tests. 1356 StopRecordingLogcat or SearchLogcatRecord following the tests.
1356 1357
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1799 """ 1800 """
1800 def __init__(self, output): 1801 def __init__(self, output):
1801 self._output = output 1802 self._output = output
1802 1803
1803 def write(self, data): 1804 def write(self, data):
1804 data = data.replace('\r\r\n', '\n') 1805 data = data.replace('\r\r\n', '\n')
1805 self._output.write(data) 1806 self._output.write(data)
1806 1807
1807 def flush(self): 1808 def flush(self):
1808 self._output.flush() 1809 self._output.flush()
OLDNEW
« no previous file with comments | « no previous file | build/android/pylib/constants.py » ('j') | build/android/pylib/constants.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698