OLD | NEW |
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 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 reboots_left -= 1 | 458 reboots_left -= 1 |
459 | 459 |
460 def MakeSystemFolderWritable(self): | 460 def MakeSystemFolderWritable(self): |
461 """Remounts the /system folder rw.""" | 461 """Remounts the /system folder rw.""" |
462 out = self._adb.SendCommand('remount') | 462 out = self._adb.SendCommand('remount') |
463 if out.strip() != 'remount succeeded': | 463 if out.strip() != 'remount succeeded': |
464 raise errors.MsgException('Remount failed: %s' % out) | 464 raise errors.MsgException('Remount failed: %s' % out) |
465 | 465 |
466 def RestartAdbdOnDevice(self): | 466 def RestartAdbdOnDevice(self): |
467 logging.info('Killing adbd on the device...') | 467 logging.info('Killing adbd on the device...') |
468 adb_pids = self.KillAll('adbd', signal=signal.SIGTERM, with_su=True) | 468 adb_pids = self.ExtractPid('adbd') |
469 assert adb_pids, 'Unable to obtain adbd pid' | 469 if not adb_pids: |
470 logging.info('Waiting for device to settle...') | 470 raise errors.MsgException('Unable to obtain adbd pid') |
471 self._adb.SendCommand('wait-for-device') | 471 try: |
| 472 self.KillAll('adbd', signal=signal.SIGTERM, with_su=True) |
| 473 logging.info('Waiting for device to settle...') |
| 474 self._adb.SendCommand('wait-for-device') |
| 475 new_adb_pids = self.ExtractPid('adbd') |
| 476 if new_adb_pids == adb_pids: |
| 477 logging.error('adbd on the device may not have been restarted.') |
| 478 except Exception as e: |
| 479 logging.error('Exception when trying to kill adbd on the device [%s]', e) |
472 | 480 |
473 def RestartAdbServer(self): | 481 def RestartAdbServer(self): |
474 """Restart the adb server.""" | 482 """Restart the adb server.""" |
475 ret = self.KillAdbServer() | 483 ret = self.KillAdbServer() |
476 if ret != 0: | 484 if ret != 0: |
477 raise errors.MsgException('KillAdbServer: %d' % ret) | 485 raise errors.MsgException('KillAdbServer: %d' % ret) |
478 | 486 |
479 ret = self.StartAdbServer() | 487 ret = self.StartAdbServer() |
480 if ret != 0: | 488 if ret != 0: |
481 raise errors.MsgException('StartAdbServer: %d' % ret) | 489 raise errors.MsgException('StartAdbServer: %d' % ret) |
(...skipping 1221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1703 """ | 1711 """ |
1704 def __init__(self, output): | 1712 def __init__(self, output): |
1705 self._output = output | 1713 self._output = output |
1706 | 1714 |
1707 def write(self, data): | 1715 def write(self, data): |
1708 data = data.replace('\r\r\n', '\n') | 1716 data = data.replace('\r\r\n', '\n') |
1709 self._output.write(data) | 1717 self._output.write(data) |
1710 | 1718 |
1711 def flush(self): | 1719 def flush(self): |
1712 self._output.flush() | 1720 self._output.flush() |
OLD | NEW |