diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-04-16 18:15:09 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-04-16 18:15:09 +0000 |
commit | 404449cf55ec6de2f989864cf8ea2b315d651438 (patch) | |
tree | b9a6b60023b853553ae095370bf251a2f1f7640e /catapult/devil/devil/android/sdk/adb_wrapper.py | |
parent | 977f880b2fd00c647f646cd7d89cc99fc40785b0 (diff) | |
parent | ef2f29d2b3cf25a46be203d6b12ad0eceaf270b2 (diff) | |
download | chromium-trace-404449cf55ec6de2f989864cf8ea2b315d651438.tar.gz |
Merge changes I195c394b,Iff693cf6 am: b101eec5e1 am: d5085cc096 am: 19f3aab438 am: ef2f29d2b3
Original change: https://android-review.googlesource.com/c/platform/external/chromium-trace/+/1677030
Change-Id: I0db46c49b8612a35c20dda4fda86e5070c194102
Diffstat (limited to 'catapult/devil/devil/android/sdk/adb_wrapper.py')
-rw-r--r-- | catapult/devil/devil/android/sdk/adb_wrapper.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/catapult/devil/devil/android/sdk/adb_wrapper.py b/catapult/devil/devil/android/sdk/adb_wrapper.py index 71928d58..d8992242 100644 --- a/catapult/devil/devil/android/sdk/adb_wrapper.py +++ b/catapult/devil/devil/android/sdk/adb_wrapper.py @@ -18,6 +18,8 @@ import posixpath import re import subprocess +import six + from devil import base_error from devil import devil_env from devil.android import decorators @@ -127,6 +129,30 @@ def _IsExtraneousLine(line, send_cmd): return send_cmd.rstrip() in line +@decorators.WithExplicitTimeoutAndRetries(timeout=60, retries=3) +def RestartServer(): + """Restarts the adb server. + + Raises: + CommandFailedError if we fail to kill or restart the server. + """ + + def adb_killed(): + return not AdbWrapper.IsServerOnline() + + def adb_started(): + return AdbWrapper.IsServerOnline() + + AdbWrapper.KillServer() + if not timeout_retry.WaitFor(adb_killed, wait_period=1, max_tries=5): + # TODO(crbug.com/442319): Switch this to raise an exception if we + # figure out why sometimes not all adb servers on bots get killed. + logger.warning('Failed to kill adb server') + AdbWrapper.StartServer() + if not timeout_retry.WaitFor(adb_started, wait_period=1, max_tries=5): + raise device_errors.CommandFailedError('Failed to start adb server') + + class AdbWrapper(object): """A wrapper around a local Android Debug Bridge executable.""" @@ -1105,7 +1131,7 @@ class AdbWrapper(object): Returns: The output of the emulator console command. """ - if isinstance(cmd, basestring): + if isinstance(cmd, six.string_types): cmd = [cmd] return self._RunDeviceAdbCmd(['emu'] + cmd, timeout, retries) |