| Index: build/android/pylib/device/device_utils.py
|
| diff --git a/build/android/pylib/device/device_utils.py b/build/android/pylib/device/device_utils.py
|
| index f7167cea13a20e9401ff03556d1b4e49b8bddfb2..d1897c22445048f8e45b3846d3f8789b0323e372 100644
|
| --- a/build/android/pylib/device/device_utils.py
|
| +++ b/build/android/pylib/device/device_utils.py
|
| @@ -25,6 +25,7 @@ import zipfile
|
| import pylib.android_commands
|
| from pylib import cmd_helper
|
| from pylib import constants
|
| +from pylib import device_signal
|
| from pylib.device import adb_wrapper
|
| from pylib.device import decorators
|
| from pylib.device import device_errors
|
| @@ -573,37 +574,46 @@ class DeviceUtils(object):
|
| return output
|
|
|
| @decorators.WithTimeoutAndRetriesFromInstance()
|
| - def KillAll(self, process_name, signum=9, as_root=False, blocking=False,
|
| - timeout=None, retries=None):
|
| + def KillAll(self, process_name, signum=device_signal.SIGKILL, as_root=False,
|
| + blocking=False, quiet=False, timeout=None, retries=None):
|
| """Kill all processes with the given name on the device.
|
|
|
| Args:
|
| process_name: A string containing the name of the process to kill.
|
| signum: An integer containing the signal number to send to kill. Defaults
|
| - to 9 (SIGKILL).
|
| + to SIGKILL (9).
|
| as_root: A boolean indicating whether the kill should be executed with
|
| root privileges.
|
| blocking: A boolean indicating whether we should wait until all processes
|
| with the given |process_name| are dead.
|
| + quiet: A boolean indicating whether to ignore the fact that no processes
|
| + to kill were found.
|
| timeout: timeout in seconds
|
| retries: number of retries
|
|
|
| + Returns:
|
| + The number of processes attempted to kill.
|
| +
|
| Raises:
|
| - CommandFailedError if no process was killed.
|
| + CommandFailedError if no process was killed and |quiet| is False.
|
| CommandTimeoutError on timeout.
|
| DeviceUnreachableError on missing device.
|
| """
|
| - pids = self._GetPidsImpl(process_name)
|
| + pids = self.GetPids(process_name)
|
| if not pids:
|
| - raise device_errors.CommandFailedError(
|
| - 'No process "%s"' % process_name, str(self))
|
| + if quiet:
|
| + return 0
|
| + else:
|
| + raise device_errors.CommandFailedError(
|
| + 'No process "%s"' % process_name, str(self))
|
|
|
| cmd = ['kill', '-%d' % signum] + pids.values()
|
| self.RunShellCommand(cmd, as_root=as_root, check_return=True)
|
|
|
| if blocking:
|
| + # TODO(perezu): use timeout_retry.WaitFor
|
| wait_period = 0.1
|
| - while self._GetPidsImpl(process_name):
|
| + while self.GetPids(process_name):
|
| time.sleep(wait_period)
|
|
|
| return len(pids)
|
| @@ -1353,9 +1363,6 @@ class DeviceUtils(object):
|
| CommandTimeoutError on timeout.
|
| DeviceUnreachableError on missing device.
|
| """
|
| - return self._GetPidsImpl(process_name)
|
| -
|
| - def _GetPidsImpl(self, process_name):
|
| procs_pids = {}
|
| for line in self.RunShellCommand('ps', check_return=True):
|
| try:
|
|
|