Index: tools/telemetry/telemetry/core/forwarders/android_forwarder.py |
diff --git a/tools/telemetry/telemetry/core/forwarders/android_forwarder.py b/tools/telemetry/telemetry/core/forwarders/android_forwarder.py |
index d0c9edaf9374149489e82c76f235eba3e40f01c6..ed8ed7b9c7560ddcab473d4eb94993f75623d08a 100644 |
--- a/tools/telemetry/telemetry/core/forwarders/android_forwarder.py |
+++ b/tools/telemetry/telemetry/core/forwarders/android_forwarder.py |
@@ -9,6 +9,7 @@ |
import struct |
import subprocess |
+from telemetry.core.backends import adb_commands |
from telemetry.core import forwarders |
from telemetry.core import platform |
from telemetry.core import util |
@@ -16,28 +17,27 @@ |
util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
try: |
- from pylib import forwarder # pylint: disable=import-error |
+ from pylib import forwarder # pylint: disable=F0401 |
except ImportError: |
forwarder = None |
-from pylib.device import device_errors # pylint: disable=import-error |
-from pylib.device import device_utils # pylint: disable=import-error |
+from pylib.device import device_errors # pylint: disable=F0401 |
class AndroidForwarderFactory(forwarders.ForwarderFactory): |
- def __init__(self, device, use_rndis): |
+ def __init__(self, adb, use_rndis): |
super(AndroidForwarderFactory, self).__init__() |
- self._device = device |
+ self._adb = adb |
self._rndis_configurator = None |
if use_rndis: |
- self._rndis_configurator = AndroidRndisConfigurator(self._device) |
+ self._rndis_configurator = AndroidRndisConfigurator(self._adb) |
def Create(self, port_pairs): |
if self._rndis_configurator: |
- return AndroidRndisForwarder(self._device, self._rndis_configurator, |
+ return AndroidRndisForwarder(self._adb, self._rndis_configurator, |
port_pairs) |
- return AndroidForwarder(self._device, port_pairs) |
+ return AndroidForwarder(self._adb, port_pairs) |
@property |
def host_ip(self): |
@@ -52,9 +52,9 @@ |
class AndroidForwarder(forwarders.Forwarder): |
- def __init__(self, device, port_pairs): |
+ def __init__(self, adb, port_pairs): |
super(AndroidForwarder, self).__init__(port_pairs) |
- self._device = device |
+ self._device = adb.device() |
forwarder.Forwarder.Map([(p.remote_port, p.local_port) |
for p in port_pairs if p], self._device) |
self._port_pairs = forwarders.PortPairs(*[ |
@@ -74,10 +74,10 @@ |
class AndroidRndisForwarder(forwarders.Forwarder): |
"""Forwards traffic using RNDIS. Assumes the device has root access.""" |
- def __init__(self, device, rndis_configurator, port_pairs): |
+ def __init__(self, adb, rndis_configurator, port_pairs): |
super(AndroidRndisForwarder, self).__init__(port_pairs) |
- self._device = device |
+ self._adb = adb |
self._rndis_configurator = rndis_configurator |
self._device_iface = rndis_configurator.device_iface |
self._host_ip = rndis_configurator.host_ip |
@@ -103,13 +103,12 @@ |
def _RedirectPorts(self, port_pairs): |
"""Sets the local to remote pair mappings to use for RNDIS.""" |
- # Flush any old nat rules. |
- self._device.RunShellCommand('iptables -F -t nat') |
+ self._adb.RunShellCommand('iptables -F -t nat') # Flush any old nat rules. |
for port_pair in port_pairs: |
if not port_pair or port_pair.local_port == port_pair.remote_port: |
continue |
protocol = 'udp' if port_pair.remote_port == 53 else 'tcp' |
- self._device.RunShellCommand( |
+ self._adb.RunShellCommand( |
'iptables -t nat -A OUTPUT -p %s --dport %d' |
' -j DNAT --to-destination %s:%d' % |
(protocol, port_pair.remote_port, self.host_ip, port_pair.local_port)) |
@@ -130,27 +129,27 @@ |
return # If there is no route, then nobody cares about DNS. |
# DNS proxy in older versions of Android is configured via properties. |
# TODO(szym): run via su -c if necessary. |
- self._device.SetProp('net.dns1', dns1) |
- self._device.SetProp('net.dns2', dns2) |
- dnschange = self._device.GetProp('net.dnschange') |
+ self._adb.device().SetProp('net.dns1', dns1) |
+ self._adb.device().SetProp('net.dns2', dns2) |
+ dnschange = self._adb.device().GetProp('net.dnschange') |
if dnschange: |
- self._device.SetProp('net.dnschange', str(int(dnschange) + 1)) |
+ self._adb.device().SetProp('net.dnschange', str(int(dnschange) + 1)) |
# Since commit 8b47b3601f82f299bb8c135af0639b72b67230e6 to frameworks/base |
# the net.dns1 properties have been replaced with explicit commands for netd |
- self._device.RunShellCommand('netd resolver setifdns %s %s %s' % |
- (iface, dns1, dns2)) |
+ self._adb.RunShellCommand('netd resolver setifdns %s %s %s' % |
+ (iface, dns1, dns2)) |
# TODO(szym): if we know the package UID, we could setifaceforuidrange |
- self._device.RunShellCommand('netd resolver setdefaultif %s' % iface) |
+ self._adb.RunShellCommand('netd resolver setdefaultif %s' % iface) |
def _GetCurrentDns(self): |
"""Returns current gateway, dns1, and dns2.""" |
- routes = self._device.RunShellCommand('cat /proc/net/route')[1:] |
+ routes = self._adb.RunShellCommand('cat /proc/net/route')[1:] |
routes = [route.split() for route in routes] |
default_routes = [route[0] for route in routes if route[1] == '00000000'] |
return ( |
default_routes[0] if default_routes else None, |
- self._device.GetProp('net.dns1'), |
- self._device.GetProp('net.dns2'), |
+ self._adb.device().GetProp('net.dns1'), |
+ self._adb.device().GetProp('net.dns2'), |
) |
def _OverrideDefaultGateway(self): |
@@ -163,11 +162,11 @@ |
(e.g. Telemetry crashes). A power cycle or "adb reboot" is a simple |
workaround around in that case. |
""" |
- self._device.RunShellCommand('route add default gw %s dev %s' % |
+ self._adb.RunShellCommand('route add default gw %s dev %s' % |
(self.host_ip, self._device_iface)) |
def _RestoreDefaultGateway(self): |
- self._device.RunShellCommand('netcfg %s down' % self._device_iface) |
+ self._adb.RunShellCommand('netcfg %s down' % self._device_iface) |
class AndroidRndisConfigurator(object): |
@@ -183,8 +182,8 @@ |
_INTERFACES_INCLUDE = 'source /etc/network/interfaces.d/*.conf' |
_TELEMETRY_INTERFACE_FILE = '/etc/network/interfaces.d/telemetry-{}.conf' |
- def __init__(self, device): |
- self._device = device |
+ def __init__(self, adb): |
+ self._device = adb.device() |
try: |
self._device.EnableRoot() |
@@ -387,8 +386,9 @@ |
""" |
my_device = str(self._device) |
addresses = [] |
- for device in device_utils.DeviceUtils.HealthyDevices(): |
- if device.adb.GetDeviceSerial() == my_device: |
+ for device_serial in adb_commands.GetAttachedDevices(): |
+ device = adb_commands.AdbCommands(device_serial).device() |
+ if device_serial == my_device: |
excluded = excluded_iface |
else: |
excluded = 'no interfaces excluded on other devices' |