Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Unified Diff: build/android/pylib/forwarder.py

Issue 10977050: Revert 158940 - Adapt python scripts to use the new Forwarder2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/pylib/base_test_runner.py ('k') | build/android/pylib/run_java_tests.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/forwarder.py
===================================================================
--- build/android/pylib/forwarder.py (revision 158959)
+++ build/android/pylib/forwarder.py (working copy)
@@ -9,17 +9,12 @@
import sys
import android_commands
-import cmd_helper
import constants
-import ports
class Forwarder(object):
"""Class to manage port forwards from the device to the host."""
- _DEVICE_FORWARDER_PATH = constants.TEST_EXECUTABLE_DIR + '/device_forwarder'
-
- # Unix Abstract socket path:
- _DEVICE_ADB_CONTROL_PORT = 'chrome_device_forwarder'
+ _FORWARDER_PATH = constants.TEST_EXECUTABLE_DIR + '/forwarder'
_TIMEOUT_SECS = 30
def __init__(self, adb, port_pairs, tool, host_name, build_type):
@@ -45,125 +40,67 @@
"""
self._adb = adb
self._host_to_device_port_map = dict()
- self._host_process = None
- self._device_process = None
- self._adb_forward_process = None
-
- self._host_adb_control_port = ports.AllocateTestServerPort()
+ self._process = None
adb.PushIfNeeded(
- os.path.join(constants.CHROME_DIR, 'out', build_type,
- 'device_forwarder'),
- Forwarder._DEVICE_FORWARDER_PATH)
- self._host_forwarder_path = os.path.join(constants.CHROME_DIR,
- 'out',
- build_type,
- 'host_forwarder')
+ os.path.join(constants.CHROME_DIR, 'out', build_type, 'forwarder'),
+ Forwarder._FORWARDER_PATH)
forward_string = ['%d:%d:%s' %
(device, host, host_name) for device, host in port_pairs]
- logging.info('Forwarding ports: %s', forward_string)
- # Kill off any existing device forwarders on conflicting non-dynamically
- # allocated ports.
+
+ # Kill off any existing forwarders on conflicting non-dynamically allocated
+ # ports.
for device_port, _ in port_pairs:
if device_port != 0:
self._KillForwardersUsingDevicePort(device_port)
- # Kill any existing host forwarders.
- cmd_helper.RunCmd(['killall', 'host_forwarder'])
- self._adb_forward_process = pexpect.spawn(
- 'adb', ['-s',
- adb._adb.GetSerialNumber(),
- 'forward',
- 'tcp:%s' % self._host_adb_control_port,
- 'localabstract:%s' % Forwarder._DEVICE_ADB_CONTROL_PORT])
- self._device_process = pexpect.spawn(
- 'adb', ['-s',
- adb._adb.GetSerialNumber(),
- 'shell',
- '%s %s -D --adb_sock=%s' % (
- tool.GetUtilWrapper(),
- Forwarder._DEVICE_FORWARDER_PATH,
- Forwarder._DEVICE_ADB_CONTROL_PORT)])
+ logging.info('Forwarding ports: %s' % (forward_string))
+ process = pexpect.spawn(
+ 'adb', ['-s', adb._adb.GetSerialNumber(),
+ 'shell', '%s %s -D %s' % (
+ tool.GetUtilWrapper(), Forwarder._FORWARDER_PATH,
+ ' '.join(forward_string))])
- device_success_re = re.compile('Starting Device Forwarder.')
- device_failure_re = re.compile('.*:ERROR:(.*)')
- index = self._device_process.expect([device_success_re,
- device_failure_re,
- pexpect.EOF,
- pexpect.TIMEOUT],
- Forwarder._TIMEOUT_SECS)
- if index == 1:
- # Failure
- error_msg = str(self._device_process.match.group(1))
- logging.error(self._device_process.before)
- self._CloseProcess()
- raise Exception('Failed to start Device Forwarder with Error: %s' %
- error_msg)
- elif index == 2:
- logging.error(self._device_process.before)
- self._CloseProcess()
- raise Exception('Unexpected EOF while trying to start Device Forwarder.')
- elif index == 3:
- logging.error(self._device_process.before)
- self._CloseProcess()
- raise Exception('Timeout while trying start Device Forwarder')
-
- self._host_process = pexpect.spawn(self._host_forwarder_path,
- ['--adb_port=%s' % (
- self._host_adb_control_port),
- ' '.join(forward_string)])
-
# Read the output of the command to determine which device ports where
# forwarded to which host ports (necessary if
- host_success_re = re.compile('Forwarding device port (\d+) to host (\d+):')
- host_failure_re = re.compile('Couldn\'t start forwarder server for port '
- 'spec: (\d+):(\d+)')
+ success_re = re.compile('Forwarding device port (\d+) to host (\d+):')
+ failure_re = re.compile('Couldn\'t start forwarder server for port spec: '
+ '(\d+):(\d+)')
for pair in port_pairs:
- index = self._host_process.expect([host_success_re,
- host_failure_re,
- pexpect.EOF,
- pexpect.TIMEOUT],
- Forwarder._TIMEOUT_SECS)
+ index = process.expect([success_re, failure_re, pexpect.EOF,
+ pexpect.TIMEOUT],
+ Forwarder._TIMEOUT_SECS)
if index == 0:
# Success
- device_port = int(self._host_process.match.group(1))
- host_port = int(self._host_process.match.group(2))
+ device_port = int(process.match.group(1))
+ host_port = int(process.match.group(2))
self._host_to_device_port_map[host_port] = device_port
logging.info("Forwarding device port: %d to host port: %d." %
(device_port, host_port))
elif index == 1:
# Failure
- device_port = int(self._host_process.match.group(1))
- host_port = int(self._host_process.match.group(2))
- self._CloseProcess()
+ device_port = int(process.match.group(1))
+ host_port = int(process.match.group(2))
+ process.close()
raise Exception('Failed to forward port %d to %d' % (device_port,
host_port))
elif index == 2:
- logging.error(self._host_process.before)
- self._CloseProcess()
+ logging.error(process.before)
+ process.close()
raise Exception('Unexpected EOF while trying to forward ports %s' %
port_pairs)
elif index == 3:
- logging.error(self._host_process.before)
- self._CloseProcess()
+ logging.error(process.before)
+ process.close()
raise Exception('Timeout while trying to forward ports %s' % port_pairs)
- def _CloseProcess(self):
- if self._host_process:
- self._host_process.close()
- if self._device_process:
- self._device_process.close()
- if self._adb_forward_process:
- self._adb_forward_process.close()
- self._host_process = None
- self._device_process = None
- self._adb_forward_process = None
+ self._process = process
def _KillForwardersUsingDevicePort(self, device_port):
"""Check if the device port is in use and if it is try to terminate the
forwarder process (if any) that may already be forwarding it"""
processes = self._adb.ProcessesUsingDevicePort(device_port)
for pid, name in processes:
- if name == 'device_forwarder':
+ if name == 'forwarder':
logging.warning(
'Killing forwarder process with pid %d using device_port %d' % (
pid, device_port))
@@ -179,4 +116,6 @@
def Close(self):
"""Terminate the forwarder process."""
- self._CloseProcess()
+ if self._process:
+ self._process.close()
+ self._process = None
« no previous file with comments | « build/android/pylib/base_test_runner.py ('k') | build/android/pylib/run_java_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698