| Index: build/android/pylib/forwarder.py
|
| diff --git a/build/android/pylib/forwarder.py b/build/android/pylib/forwarder.py
|
| index b59ae9aff32942b4d85c4711ce5832844641991e..f4fb65003bddb37a242889f41e0c8bdaa77dd913 100644
|
| --- a/build/android/pylib/forwarder.py
|
| +++ b/build/android/pylib/forwarder.py
|
| @@ -13,6 +13,10 @@ from pylib import cmd_helper
|
| from pylib import constants
|
| from pylib import valgrind_tools
|
|
|
| +# TODO(jbudorick) Remove once telemetry gets switched over.
|
| +import pylib.android_commands
|
| +import pylib.device.device_utils
|
| +
|
|
|
| def _GetProcessStartTime(pid):
|
| return psutil.Process(pid).create_time
|
| @@ -60,7 +64,7 @@ class Forwarder(object):
|
| os.environ[Forwarder._MULTIPROCESSING_ENV_VAR] = '1'
|
|
|
| @staticmethod
|
| - def Map(port_pairs, adb, tool=None):
|
| + def Map(port_pairs, device, tool=None):
|
| """Runs the forwarder.
|
|
|
| Args:
|
| @@ -69,20 +73,23 @@ class Forwarder(object):
|
| port will by dynamically assigned on the device. You can
|
| get the number of the assigned port using the
|
| DevicePortForHostPort method.
|
| - adb: An AndroidCommands instance.
|
| + device: A DeviceUtils instance.
|
| tool: Tool class to use to get wrapper, if necessary, for executing the
|
| forwarder (see valgrind_tools.py).
|
|
|
| Raises:
|
| Exception on failure to forward the port.
|
| """
|
| + # TODO(jbudorick) Remove once telemetry gets switched over.
|
| + if isinstance(device, pylib.android_commands.AndroidCommands):
|
| + device = pylib.device.device_utils.DeviceUtils(device)
|
| if not tool:
|
| - tool = valgrind_tools.CreateTool(None, adb)
|
| + tool = valgrind_tools.CreateTool(None, device)
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| instance = Forwarder._GetInstanceLocked(tool)
|
| - instance._InitDeviceLocked(adb, tool)
|
| + instance._InitDeviceLocked(device, tool)
|
|
|
| - device_serial = adb.Adb().GetSerialNumber()
|
| + device_serial = device.old_interface.Adb().GetSerialNumber()
|
| redirection_commands = [
|
| ['--serial-id=' + device_serial, '--map', str(device),
|
| str(host)] for device, host in port_pairs]
|
| @@ -113,38 +120,41 @@ class Forwarder(object):
|
| device_port, host_port)
|
|
|
| @staticmethod
|
| - def UnmapDevicePort(device_port, adb):
|
| + def UnmapDevicePort(device_port, device):
|
| """Unmaps a previously forwarded device port.
|
|
|
| Args:
|
| - adb: An AndroidCommands instance.
|
| + device: A DeviceUtils instance.
|
| device_port: A previously forwarded port (through Map()).
|
| """
|
| + # TODO(jbudorick) Remove once telemetry gets switched over.
|
| + if isinstance(device, pylib.android_commands.AndroidCommands):
|
| + device = pylib.device.device_utils.DeviceUtils(device)
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| - Forwarder._UnmapDevicePortLocked(device_port, adb)
|
| + Forwarder._UnmapDevicePortLocked(device_port, device)
|
|
|
| @staticmethod
|
| - def UnmapAllDevicePorts(adb):
|
| + def UnmapAllDevicePorts(device):
|
| """Unmaps all the previously forwarded ports for the provided device.
|
|
|
| Args:
|
| - adb: An AndroidCommands instance.
|
| + device: A DeviceUtils instance.
|
| port_pairs: A list of tuples (device_port, host_port) to unmap.
|
| """
|
| with _FileLock(Forwarder._LOCK_PATH):
|
| if not Forwarder._instance:
|
| return
|
| - adb_serial = adb.Adb().GetSerialNumber()
|
| + adb_serial = device.old_interface.Adb().GetSerialNumber()
|
| if adb_serial not in Forwarder._instance._initialized_devices:
|
| return
|
| port_map = Forwarder._GetInstanceLocked(
|
| None)._device_to_host_port_map
|
| for (device_serial, device_port) in port_map.keys():
|
| if adb_serial == device_serial:
|
| - Forwarder._UnmapDevicePortLocked(device_port, adb)
|
| + Forwarder._UnmapDevicePortLocked(device_port, device)
|
| # There are no more ports mapped, kill the device_forwarder.
|
| - tool = valgrind_tools.CreateTool(None, adb)
|
| - Forwarder._KillDeviceLocked(adb, tool)
|
| + tool = valgrind_tools.CreateTool(None, device)
|
| + Forwarder._KillDeviceLocked(device, tool)
|
| Forwarder._instance._initialized_devices.remove(adb_serial)
|
|
|
|
|
| @@ -205,13 +215,13 @@ class Forwarder(object):
|
| self._InitHostLocked()
|
|
|
| @staticmethod
|
| - def _UnmapDevicePortLocked(device_port, adb):
|
| + def _UnmapDevicePortLocked(device_port, device):
|
| """Internal method used by UnmapDevicePort().
|
|
|
| Note that the global lock must be acquired before calling this method.
|
| """
|
| instance = Forwarder._GetInstanceLocked(None)
|
| - serial = adb.Adb().GetSerialNumber()
|
| + serial = device.old_interface.Adb().GetSerialNumber()
|
| serial_with_port = (serial, device_port)
|
| if not serial_with_port in instance._device_to_host_port_map:
|
| logging.error('Trying to unmap non-forwarded port %d' % device_port)
|
| @@ -260,7 +270,7 @@ class Forwarder(object):
|
| pid_file.write(
|
| '%s:%s' % (pid_for_lock, str(_GetProcessStartTime(pid_for_lock))))
|
|
|
| - def _InitDeviceLocked(self, adb, tool):
|
| + def _InitDeviceLocked(self, device, tool):
|
| """Initializes the device_forwarder daemon for a specific device (once).
|
|
|
| Note that the global lock must be acquired before calling this method. This
|
| @@ -269,18 +279,18 @@ class Forwarder(object):
|
| it.
|
|
|
| Args:
|
| - adb: An AndroidCommands instance.
|
| + device: A DeviceUtils instance.
|
| tool: Tool class to use to get wrapper, if necessary, for executing the
|
| forwarder (see valgrind_tools.py).
|
| """
|
| - device_serial = adb.Adb().GetSerialNumber()
|
| + device_serial = device.old_interface.Adb().GetSerialNumber()
|
| if device_serial in self._initialized_devices:
|
| return
|
| - Forwarder._KillDeviceLocked(adb, tool)
|
| - adb.PushIfNeeded(
|
| + Forwarder._KillDeviceLocked(device, tool)
|
| + device.old_interface.PushIfNeeded(
|
| self._device_forwarder_path_on_host,
|
| Forwarder._DEVICE_FORWARDER_FOLDER)
|
| - (exit_code, output) = adb.GetShellCommandStatusAndOutput(
|
| + (exit_code, output) = device.old_interface.GetShellCommandStatusAndOutput(
|
| '%s %s %s' % (Forwarder._LD_LIBRARY_PATH, tool.GetUtilWrapper(),
|
| Forwarder._DEVICE_FORWARDER_PATH))
|
| if exit_code != 0:
|
| @@ -304,28 +314,30 @@ class Forwarder(object):
|
| self._host_forwarder_path, exit_code, '\n'.join(output)))
|
|
|
| @staticmethod
|
| - def _KillDeviceLocked(adb, tool):
|
| + def _KillDeviceLocked(device, tool):
|
| """Kills the forwarder process running on the device.
|
|
|
| Note that the global lock must be acquired before calling this method.
|
|
|
| Args:
|
| - adb: Instance of AndroidCommands for talking to the device.
|
| + device: Instance of DeviceUtils for talking to the device.
|
| tool: Wrapper tool (e.g. valgrind) that can be used to execute the device
|
| forwarder (see valgrind_tools.py).
|
| """
|
| logging.info('Killing device_forwarder.')
|
| - if not adb.FileExistsOnDevice(Forwarder._DEVICE_FORWARDER_PATH):
|
| + if not device.old_interface.FileExistsOnDevice(
|
| + Forwarder._DEVICE_FORWARDER_PATH):
|
| return
|
| - adb.GetShellCommandStatusAndOutput(
|
| + device.old_interface.GetShellCommandStatusAndOutput(
|
| '%s %s --kill-server' % (tool.GetUtilWrapper(),
|
| Forwarder._DEVICE_FORWARDER_PATH))
|
| # TODO(pliard): Remove the following call to KillAllBlocking() when we are
|
| # sure that the old version of device_forwarder (not supporting
|
| # 'kill-server') is not running on the bots anymore.
|
| timeout_sec = 5
|
| - processes_killed = adb.KillAllBlocking('device_forwarder', timeout_sec)
|
| + processes_killed = device.old_interface.KillAllBlocking(
|
| + 'device_forwarder', timeout_sec)
|
| if not processes_killed:
|
| - pids = adb.ExtractPid('device_forwarder')
|
| + pids = device.old_interface.ExtractPid('device_forwarder')
|
| if pids:
|
| raise Exception('Timed out while killing device_forwarder')
|
|
|