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

Side by Side Diff: telemetry/telemetry/internal/platform/network_controller_backend.py

Issue 3016693002: Remove support for legacy wpr_server in Telemetry
Patch Set: Created 3 years, 2 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 6
7 from telemetry.internal.util import wpr_server
8 from telemetry.internal.util import webpagereplay_go_server 7 from telemetry.internal.util import webpagereplay_go_server
9 from telemetry.internal.util import ts_proxy_server 8 from telemetry.internal.util import ts_proxy_server
10 from telemetry.util import wpr_modes 9 from telemetry.util import wpr_modes
11 10
12 11
13 class ArchiveDoesNotExistError(Exception): 12 class ArchiveDoesNotExistError(Exception):
14 """Raised when the archive path does not exist for replay mode.""" 13 """Raised when the archive path does not exist for replay mode."""
15 pass 14 pass
16 15
17 16
18 class ReplayAndBrowserPortsError(Exception): 17 class ReplayAndBrowserPortsError(Exception):
19 """Raised an existing browser would get different remote replay ports.""" 18 """Raised an existing browser would get different remote replay ports."""
20 pass 19 pass
21 20
22 21
23 class NetworkControllerBackend(object): 22 class NetworkControllerBackend(object):
24 """Control network settings and servers to simulate the Web. 23 """Control network settings and servers to simulate the Web.
25 24
26 Network changes include forwarding device ports to host platform ports. 25 Network changes include forwarding device ports to host platform ports.
27 Web Page Replay is used to record and replay HTTP/HTTPS responses. 26 Web Page Replay is used to record and replay HTTP/HTTPS responses.
28 """ 27 """
29 28
30 def __init__(self, platform_backend): 29 def __init__(self, platform_backend):
31 self._platform_backend = platform_backend 30 self._platform_backend = platform_backend
32 self._wpr_mode = None 31 self._wpr_mode = None
33 self._extra_wpr_args = None 32 self._extra_wpr_args = None
34 self._use_wpr_go = False
35 self._archive_path = None 33 self._archive_path = None
36 self._make_javascript_deterministic = None 34 self._make_javascript_deterministic = None
37 self._forwarder = None 35 self._forwarder = None
38 self._wpr_server = None 36 self._wpr_server = None
39 self._ts_proxy_server = None 37 self._ts_proxy_server = None
40 self._port_pair = None 38 self._port_pair = None
41 self._use_live_traffic = None 39 self._use_live_traffic = None
42 40
43 def InitializeIfNeeded(self, use_live_traffic): 41 def InitializeIfNeeded(self, use_live_traffic):
44 """ 42 """
(...skipping 25 matching lines...) Expand all
70 def host_ip(self): 68 def host_ip(self):
71 return self._platform_backend.forwarder_factory.host_ip 69 return self._platform_backend.forwarder_factory.host_ip
72 70
73 @property 71 @property
74 def wpr_device_ports(self): 72 def wpr_device_ports(self):
75 try: 73 try:
76 return self._forwarder.port_pairs.remote_ports 74 return self._forwarder.port_pairs.remote_ports
77 except AttributeError: 75 except AttributeError:
78 return None 76 return None
79 77
80 def Open(self, wpr_mode, extra_wpr_args, use_wpr_go=False): 78 def Open(self, wpr_mode, extra_wpr_args):
81 """Configure and prepare target platform for network control. 79 """Configure and prepare target platform for network control.
82 80
83 This may, e.g., install test certificates and perform any needed setup 81 This may, e.g., install test certificates and perform any needed setup
84 on the target platform. 82 on the target platform.
85 83
86 After network interactions are over, clients should call the Close method. 84 After network interactions are over, clients should call the Close method.
87 85
88 Args: 86 Args:
89 wpr_mode: a mode for web page replay; available modes are 87 wpr_mode: a mode for web page replay; available modes are
90 wpr_modes.WPR_OFF, wpr_modes.APPEND, wpr_modes.WPR_REPLAY, or 88 wpr_modes.WPR_OFF, wpr_modes.APPEND, wpr_modes.WPR_REPLAY, or
91 wpr_modes.WPR_RECORD. 89 wpr_modes.WPR_RECORD.
92 extra_wpr_args: an list of extra arguments for web page replay. 90 extra_wpr_args: an list of extra arguments for web page replay.
93 """ 91 """
94 assert not self.is_open, 'Network controller is already open' 92 assert not self.is_open, 'Network controller is already open'
95 self._wpr_mode = wpr_mode 93 self._wpr_mode = wpr_mode
96 self._extra_wpr_args = extra_wpr_args 94 self._extra_wpr_args = extra_wpr_args
97 self._use_wpr_go = use_wpr_go
98 95
99 def Close(self): 96 def Close(self):
100 """Undo changes in the target platform used for network control. 97 """Undo changes in the target platform used for network control.
101 98
102 Implicitly stops replay if currently active. 99 Implicitly stops replay if currently active.
103 """ 100 """
104 self.StopReplay() 101 self.StopReplay()
105 self._StopForwarder() 102 self._StopForwarder()
106 self._StopTsProxyServer() 103 self._StopTsProxyServer()
107 self._make_javascript_deterministic = None 104 self._make_javascript_deterministic = None
108 self._archive_path = None 105 self._archive_path = None
109 self._extra_wpr_args = None 106 self._extra_wpr_args = None
110 self._use_wpr_go = False
111 self._wpr_mode = None 107 self._wpr_mode = None
112 108
113 def StartReplay(self, archive_path, make_javascript_deterministic=False): 109 def StartReplay(self, archive_path, make_javascript_deterministic=False):
114 """Start web page replay from a given replay archive. 110 """Start web page replay from a given replay archive.
115 111
116 Starts as needed, and reuses if possible, the replay server on the host and 112 Starts as needed, and reuses if possible, the replay server on the host and
117 a forwarder from the host to the target platform. 113 a forwarder from the host to the target platform.
118 114
119 Implementation details 115 Implementation details
120 ---------------------- 116 ----------------------
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 def StopReplay(self): 166 def StopReplay(self):
171 """Stop web page replay. 167 """Stop web page replay.
172 168
173 Stops both the replay server and the forwarder if currently active. 169 Stops both the replay server and the forwarder if currently active.
174 """ 170 """
175 self._StopReplayServer() 171 self._StopReplayServer()
176 172
177 def _StartReplayServer(self): 173 def _StartReplayServer(self):
178 """Start the replay server and return the started local_ports.""" 174 """Start the replay server and return the started local_ports."""
179 self._StopReplayServer() # In case it was already running. 175 self._StopReplayServer() # In case it was already running.
180 if self._use_wpr_go: 176 self._wpr_server = webpagereplay_go_server.ReplayServer(
181 self._wpr_server = webpagereplay_go_server.ReplayServer( 177 self._archive_path,
182 self._archive_path, 178 self.host_ip,
183 self.host_ip, 179 http_port=0,
184 http_port=0, 180 https_port=0,
185 https_port=0, 181 replay_options=self._ReplayCommandLineArgs())
186 replay_options=self._ReplayCommandLineArgs())
187 else:
188 self._wpr_server = wpr_server.ReplayServer(
189 self._archive_path,
190 self.host_ip,
191 http_port=0,
192 https_port=0,
193 dns_port=None,
194 replay_options=self._ReplayCommandLineArgs())
195 return self._wpr_server.StartServer() 182 return self._wpr_server.StartServer()
196 183
197 def _StopReplayServer(self): 184 def _StopReplayServer(self):
198 """Stop the replay server only.""" 185 """Stop the replay server only."""
199 if self._wpr_server: 186 if self._wpr_server:
200 self._wpr_server.StopServer() 187 self._wpr_server.StopServer()
201 self._wpr_server = None 188 self._wpr_server = None
202 189
203 def _StopTsProxyServer(self): 190 def _StopTsProxyServer(self):
204 """Stop the replay server only.""" 191 """Stop the replay server only."""
(...skipping 20 matching lines...) Expand all
225 self._ts_proxy_server.StartServer() 212 self._ts_proxy_server.StartServer()
226 return self._ts_proxy_server.port 213 return self._ts_proxy_server.port
227 214
228 @property 215 @property
229 def forwarder(self): 216 def forwarder(self):
230 return self._forwarder 217 return self._forwarder
231 218
232 @property 219 @property
233 def ts_proxy_server(self): 220 def ts_proxy_server(self):
234 return self._ts_proxy_server 221 return self._ts_proxy_server
OLDNEW
« no previous file with comments | « telemetry/telemetry/core/network_controller.py ('k') | telemetry/telemetry/page/shared_page_state.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698