| 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 ea1019d3de996f44b6bcb95785541b7570ee4344..ff99fccdc83729d0b3c88199cba46e116401875e 100644
|
| --- a/build/android/pylib/device/device_utils.py
|
| +++ b/build/android/pylib/device/device_utils.py
|
| @@ -9,52 +9,16 @@ Eventually, this will be based on adb_wrapper.
|
| """
|
| # pylint: disable=W0613
|
|
|
| -import multiprocessing
|
| -import os
|
| -import sys
|
| -
|
| import pylib.android_commands
|
| from pylib.device import adb_wrapper
|
| from pylib.device import decorators
|
| from pylib.device import device_errors
|
| -
|
| -CHROME_SRC_DIR = os.path.abspath(
|
| - os.path.join(os.path.dirname(__file__), '..', '..', '..', '..'))
|
| -sys.path.append(os.path.join(
|
| - CHROME_SRC_DIR, 'third_party', 'android_testrunner'))
|
| -import errors
|
| +from pylib.utils import parallelizer
|
|
|
| _DEFAULT_TIMEOUT = 30
|
| _DEFAULT_RETRIES = 3
|
|
|
|
|
| -# multiprocessing map_async requires a top-level function for pickle library.
|
| -def RebootDeviceSafe(device):
|
| - """Reboot a device, wait for it to start, and squelch timeout exceptions."""
|
| - try:
|
| - DeviceUtils(device).old_interface.Reboot(True)
|
| - except errors.DeviceUnresponsiveError as e:
|
| - return e
|
| -
|
| -
|
| -def RebootDevices():
|
| - """Reboot all attached and online devices."""
|
| - devices = pylib.android_commands.GetAttachedDevices()
|
| - print 'Rebooting: %s' % devices
|
| - if devices:
|
| - pool = multiprocessing.Pool(len(devices))
|
| - results = pool.map_async(RebootDeviceSafe, devices).get(99999)
|
| -
|
| - for device, result in zip(devices, results):
|
| - if result:
|
| - print '%s failed to startup.' % device
|
| -
|
| - if any(results):
|
| - print 'RebootDevices() Warning: %s' % results
|
| - else:
|
| - print 'Reboots complete.'
|
| -
|
| -
|
| @decorators.WithExplicitTimeoutAndRetries(
|
| _DEFAULT_TIMEOUT, _DEFAULT_RETRIES)
|
| def GetAVDs():
|
| @@ -150,3 +114,26 @@ class DeviceUtils(object):
|
| raise device_errors.CommandFailedError(
|
| 'adb root', 'Could not enable root.')
|
|
|
| + def __str__(self):
|
| + """Returns the device serial."""
|
| + return self.old_interface.GetDevice()
|
| +
|
| + @staticmethod
|
| + def parallel(devices):
|
| + """ Creates a Parallelizer to operate over the provided list of devices.
|
| +
|
| + If |devices| is either |None| or an empty list, the Parallelizer will
|
| + operate over all attached devices.
|
| +
|
| + Args:
|
| + devices: A list of either DeviceUtils instances or objects from
|
| + from which DeviceUtils instances can be constructed.
|
| + Returns:
|
| + A Parallelizer operating over |devices|.
|
| + """
|
| + if not devices or len(devices) == 0:
|
| + devices = pylib.android_commands.AndroidCommands.GetAttachedDevices()
|
| + return parallelizer.Parallelizer([
|
| + d if isinstance(d, DeviceUtils) else DeviceUtils(d)
|
| + for d in devices])
|
| +
|
|
|