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

Side by Side Diff: tools/android/loading/devtools_monitor.py

Issue 1707363002: sandwich: Implements network condition on WPR server and browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@i00
Patch Set: Rebase Created 4 years, 10 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 (c) 2016 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2016 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 """Library handling DevTools websocket interaction. 5 """Library handling DevTools websocket interaction.
6 """ 6 """
7 7
8 import httplib 8 import httplib
9 import json 9 import json
10 import logging 10 import logging
11 import os 11 import os
12 import sys 12 import sys
13 13
14 file_dir = os.path.dirname(__file__) 14 file_dir = os.path.dirname(__file__)
15 sys.path.append(os.path.join(file_dir, '..', '..', 'perf')) 15 sys.path.append(os.path.join(file_dir, '..', '..', 'perf'))
16 from chrome_telemetry_build import chromium_config 16 from chrome_telemetry_build import chromium_config
17 sys.path.append(chromium_config.GetTelemetryDir()) 17 sys.path.append(chromium_config.GetTelemetryDir())
18 18
19 from telemetry.internal.backends.chrome_inspector import inspector_websocket 19 from telemetry.internal.backends.chrome_inspector import inspector_websocket
20 from telemetry.internal.backends.chrome_inspector import websocket 20 from telemetry.internal.backends.chrome_inspector import websocket
21 21
22 22
23 DEFAULT_TIMEOUT = 10 # seconds
Benoit L 2016/02/22 14:11:26 I usually prefer to have the unit in the name, suc
24
25
23 class DevToolsConnectionException(Exception): 26 class DevToolsConnectionException(Exception):
24 def __init__(self, message): 27 def __init__(self, message):
25 super(DevToolsConnectionException, self).__init__(message) 28 super(DevToolsConnectionException, self).__init__(message)
26 logging.warning("DevToolsConnectionException: " + message) 29 logging.warning("DevToolsConnectionException: " + message)
27 30
28 31
29 # Taken from telemetry.internal.backends.chrome_inspector.tracing_backend. 32 # Taken from telemetry.internal.backends.chrome_inspector.tracing_backend.
30 # TODO(mattcary): combine this with the above and export? 33 # TODO(mattcary): combine this with the above and export?
31 class _StreamReader(object): 34 class _StreamReader(object):
32 def __init__(self, inspector, stream_handle): 35 def __init__(self, inspector, stream_handle):
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 if domain != self.TRACING_DOMAIN: 213 if domain != self.TRACING_DOMAIN:
211 self.SyncRequestNoResponse('%s.enable' % domain) 214 self.SyncRequestNoResponse('%s.enable' % domain)
212 # Tracing setup must be done by the tracing track to control filtering 215 # Tracing setup must be done by the tracing track to control filtering
213 # and output. 216 # and output.
214 for scoped_state in self._scoped_states: 217 for scoped_state in self._scoped_states:
215 self.SyncRequestNoResponse(scoped_state, 218 self.SyncRequestNoResponse(scoped_state,
216 self._scoped_states[scoped_state][0]) 219 self._scoped_states[scoped_state][0])
217 self._tearing_down_tracing = False 220 self._tearing_down_tracing = False
218 self._set_up = True 221 self._set_up = True
219 222
220 def StartMonitoring(self): 223 def StartMonitoring(self, timeout=DEFAULT_TIMEOUT):
221 """Starts monitoring. 224 """Starts monitoring.
222 225
223 DevToolsConnection.SetUpMonitoring() has to be called first. 226 DevToolsConnection.SetUpMonitoring() has to be called first.
224 """ 227 """
225 assert self._set_up, 'DevToolsConnection.SetUpMonitoring not called.' 228 assert self._set_up, 'DevToolsConnection.SetUpMonitoring not called.'
226 self._Dispatch() 229 self._Dispatch(timeout=timeout)
227 self._TearDownMonitoring() 230 self._TearDownMonitoring()
228 231
229 def StopMonitoring(self): 232 def StopMonitoring(self):
230 """Stops the monitoring.""" 233 """Stops the monitoring."""
231 self._please_stop = True 234 self._please_stop = True
232 235
233 def _Dispatch(self, kind='Monitoring', timeout=10): 236 def _Dispatch(self, kind='Monitoring',
237 timeout=DEFAULT_TIMEOUT):
234 self._please_stop = False 238 self._please_stop = False
235 while not self._please_stop: 239 while not self._please_stop:
236 try: 240 try:
237 self._ws.DispatchNotifications(timeout=timeout) 241 self._ws.DispatchNotifications(timeout=timeout)
238 except websocket.WebSocketTimeoutException: 242 except websocket.WebSocketTimeoutException:
239 break 243 break
240 if not self._please_stop: 244 if not self._please_stop:
241 logging.warning('%s stopped on a timeout.' % kind) 245 logging.warning('%s stopped on a timeout.' % kind)
242 246
243 def _TearDownMonitoring(self): 247 def _TearDownMonitoring(self):
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 """Returns a Track instance constructed from data dumped by 361 """Returns a Track instance constructed from data dumped by
358 Track.ToJsonDict(). 362 Track.ToJsonDict().
359 363
360 Args: 364 Args:
361 json_data: (dict) Parsed from a JSON file using the json module. 365 json_data: (dict) Parsed from a JSON file using the json module.
362 366
363 Returns: 367 Returns:
364 a Track instance. 368 a Track instance.
365 """ 369 """
366 pass 370 pass
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698