| Index: telemetry/telemetry/internal/platform/network_controller_backend.py
|
| diff --git a/telemetry/telemetry/internal/platform/network_controller_backend.py b/telemetry/telemetry/internal/platform/network_controller_backend.py
|
| index 052be072458065e5a75be8f4007c1a8569d1300d..5b6630c81cad5b428ccbf7b58ef370e822ed6214 100644
|
| --- a/telemetry/telemetry/internal/platform/network_controller_backend.py
|
| +++ b/telemetry/telemetry/internal/platform/network_controller_backend.py
|
| @@ -7,8 +7,8 @@ import os
|
| import shutil
|
| import tempfile
|
|
|
| +from telemetry.internal import forwarders
|
| from telemetry.internal.util import wpr_server
|
| -from telemetry.internal.util import ts_proxy_server
|
| from telemetry.util import wpr_modes
|
|
|
| import certutils
|
| @@ -36,6 +36,8 @@ class NetworkControllerBackend(object):
|
| self._platform_backend = platform_backend
|
| self._wpr_mode = None
|
| self._extra_wpr_args = None
|
| + self._wpr_http = None
|
| + self._wpr_https = None
|
| self._archive_path = None
|
| self._make_javascript_deterministic = None
|
| self._forwarder = None
|
| @@ -45,24 +47,6 @@ class NetworkControllerBackend(object):
|
| self._port_pair = None
|
| self._use_live_traffic = None
|
|
|
| - def InitializeIfNeeded(self, use_live_traffic):
|
| - """
|
| - This may, e.g., install test certificates and perform any needed setup
|
| - on the target platform.
|
| -
|
| - After network interactions are over, clients should call the Close method.
|
| - """
|
| - if self._use_live_traffic is None:
|
| - self._use_live_traffic = use_live_traffic
|
| - assert self._use_live_traffic == use_live_traffic, (
|
| - 'inconsistent state of use_live_traffic')
|
| - assert bool(self._ts_proxy_server) == bool(self._forwarder)
|
| - if self._ts_proxy_server:
|
| - return
|
| - local_port = self._StartTsProxyServer(self._use_live_traffic)
|
| - self._forwarder = self._platform_backend.forwarder_factory.Create(
|
| - self._platform_backend.GetPortPairForForwarding(local_port))
|
| -
|
| @property
|
| def is_open(self):
|
| return self._wpr_mode is not None
|
| @@ -103,6 +87,8 @@ class NetworkControllerBackend(object):
|
| assert not self.is_open, 'Network controller is already open'
|
| self._wpr_mode = wpr_mode
|
| self._extra_wpr_args = extra_wpr_args
|
| + self._wpr_http = forwarders.PortPair(0, 0)
|
| + self._wpr_https = forwarders.PortPair(0, 0)
|
| self._InstallTestCa()
|
|
|
| def Close(self):
|
| @@ -111,11 +97,11 @@ class NetworkControllerBackend(object):
|
| Implicitly stops replay if currently active.
|
| """
|
| self.StopReplay()
|
| - self._StopForwarder()
|
| - self._StopTsProxyServer()
|
| self._RemoveTestCa()
|
| self._make_javascript_deterministic = None
|
| self._archive_path = None
|
| + self._wpr_http = None
|
| + self._wpr_https = None
|
| self._extra_wpr_args = None
|
| self._wpr_mode = None
|
|
|
| @@ -209,8 +195,7 @@ class NetworkControllerBackend(object):
|
| self._archive_path = archive_path
|
| self._make_javascript_deterministic = make_javascript_deterministic
|
| local_ports = self._StartReplayServer()
|
| - self._ts_proxy_server.UpdateOutboundPorts(
|
| - http_port=local_ports.http, https_port=local_ports.https)
|
| + self._StartForwarder(local_ports)
|
|
|
| def _StopForwarder(self):
|
| if self._forwarder:
|
| @@ -222,6 +207,7 @@ class NetworkControllerBackend(object):
|
|
|
| Stops both the replay server and the forwarder if currently active.
|
| """
|
| + self._StopForwarder()
|
| self._StopReplayServer()
|
|
|
| def _StartReplayServer(self):
|
| @@ -230,8 +216,8 @@ class NetworkControllerBackend(object):
|
| self._wpr_server = wpr_server.ReplayServer(
|
| self._archive_path,
|
| self.host_ip,
|
| - http_port=0,
|
| - https_port=0,
|
| + http_port=self._wpr_http.local_port,
|
| + https_port=self._wpr_https.local_port,
|
| dns_port=None,
|
| replay_options=self._ReplayCommandLineArgs())
|
| return self._wpr_server.StartServer()
|
| @@ -242,12 +228,6 @@ class NetworkControllerBackend(object):
|
| self._wpr_server.StopServer()
|
| self._wpr_server = None
|
|
|
| - def _StopTsProxyServer(self):
|
| - """Stop the replay server only."""
|
| - if self._ts_proxy_server:
|
| - self._ts_proxy_server.StopServer()
|
| - self._ts_proxy_server = None
|
| -
|
| def _ReplayCommandLineArgs(self):
|
| wpr_args = list(self._extra_wpr_args)
|
| if self._wpr_mode == wpr_modes.WPR_APPEND:
|
| @@ -262,19 +242,18 @@ class NetworkControllerBackend(object):
|
| '--https_root_ca_cert_path=%s' % self._wpr_ca_cert_path])
|
| return wpr_args
|
|
|
| - def _StartTsProxyServer(self, use_live_traffic):
|
| - assert not self._ts_proxy_server, 'ts_proxy_server is already started'
|
| - host_ip = None
|
| - if not use_live_traffic:
|
| - host_ip = self.host_ip
|
| - self._ts_proxy_server = ts_proxy_server.TsProxyServer(host_ip=host_ip)
|
| - self._ts_proxy_server.StartServer()
|
| - return self._ts_proxy_server.port
|
| + def _StartForwarder(self, local_ports):
|
| + if self._forwarder is not None:
|
| + if (local_ports.http == self._forwarder.http_ports.local_port and
|
| + local_ports.https == self._forwarder.https_ports.local_port):
|
| + return # Safe to reuse existing forwarder.
|
| + self._forwarder.Close()
|
| + self._forwarder = self._platform_backend.forwarder_factory.Create(
|
| + forwarders.PortPair(local_ports.http, self._wpr_http.remote_port),
|
| + forwarders.PortPair(local_ports.https, self._wpr_https.remote_port))
|
| + self._wpr_http = self._forwarder.http_ports
|
| + self._wpr_https = self._forwarder.https_ports
|
|
|
| @property
|
| def forwarder(self):
|
| return self._forwarder
|
| -
|
| - @property
|
| - def ts_proxy_server(self):
|
| - return self._ts_proxy_server
|
|
|