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

Side by Side Diff: tools/android/loading/trace_recorder.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: Renames WEBSOCKET_TIMEOUT constants 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 #! /usr/bin/python 1 #! /usr/bin/python
2 # Copyright 2016 The Chromium Authors. All rights reserved. 2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Loading trace recorder.""" 6 """Loading trace recorder."""
7 7
8 import argparse 8 import argparse
9 import datetime 9 import datetime
10 import json 10 import json
(...skipping 13 matching lines...) Expand all
24 24
25 import device_setup 25 import device_setup
26 import devtools_monitor 26 import devtools_monitor
27 import loading_trace 27 import loading_trace
28 import page_track 28 import page_track
29 import request_track 29 import request_track
30 import tracing 30 import tracing
31 31
32 32
33 def MonitorUrl(connection, url, clear_cache=False, 33 def MonitorUrl(connection, url, clear_cache=False,
34 categories=tracing.DEFAULT_CATEGORIES): 34 categories=tracing.DEFAULT_CATEGORIES,
35 timeout=devtools_monitor.DEFAULT_TIMEOUT):
mattcary 2016/02/19 15:40:17 As mentioned elsewhere, this timeout should really
gabadie 2016/02/22 10:05:00 Please see the other comment about this issue.
35 """Monitor a URL via a trace recorder. 36 """Monitor a URL via a trace recorder.
36 37
37 Args: 38 Args:
38 connection: A device_monitor.DevToolsConnection instance. 39 connection: A devtools_monitor.DevToolsConnection instance.
39 url: url to navigate to as string. 40 url: url to navigate to as string.
40 clear_cache: boolean indicating if cache should be cleared before loading. 41 clear_cache: boolean indicating if cache should be cleared before loading.
42 timeout: Websocket timeout.
41 43
42 Returns: 44 Returns:
43 loading_trace.LoadingTrace. 45 loading_trace.LoadingTrace.
44 """ 46 """
45 page = page_track.PageTrack(connection) 47 page = page_track.PageTrack(connection)
46 request = request_track.RequestTrack(connection) 48 request = request_track.RequestTrack(connection)
47 trace = tracing.TracingTrack(connection, categories=categories) 49 trace = tracing.TracingTrack(connection, categories=categories)
48 connection.SetUpMonitoring() 50 connection.SetUpMonitoring()
49 if clear_cache: 51 if clear_cache:
50 connection.ClearCache() 52 connection.ClearCache()
51 connection.SendAndIgnoreResponse('Page.navigate', {'url': url}) 53 connection.SendAndIgnoreResponse('Page.navigate', {'url': url})
52 connection.StartMonitoring() 54 connection.StartMonitoring(timeout=timeout)
53 metadata = {'date': datetime.datetime.utcnow().isoformat(), 55 metadata = {'date': datetime.datetime.utcnow().isoformat(),
54 'seconds_since_epoch': time.time()} 56 'seconds_since_epoch': time.time()}
55 return loading_trace.LoadingTrace(url, metadata, page, request, trace) 57 return loading_trace.LoadingTrace(url, metadata, page, request, trace)
56 58
57 def RecordAndDumpTrace(device, url, output_filename): 59 def RecordAndDumpTrace(device, url, output_filename):
58 with file(output_filename, 'w') as output,\ 60 with file(output_filename, 'w') as output,\
59 device_setup.DeviceConnection(device) as connection: 61 device_setup.DeviceConnection(device) as connection:
60 trace = MonitorUrl(connection, url) 62 trace = MonitorUrl(connection, url)
61 json.dump(trace.ToJsonDict(), output) 63 json.dump(trace.ToJsonDict(), output)
62 64
63 65
64 def main(): 66 def main():
65 logging.basicConfig(level=logging.INFO) 67 logging.basicConfig(level=logging.INFO)
66 devil_chromium.Initialize() 68 devil_chromium.Initialize()
67 69
68 parser = argparse.ArgumentParser() 70 parser = argparse.ArgumentParser()
69 parser.add_argument('--url', required=True) 71 parser.add_argument('--url', required=True)
70 parser.add_argument('--output', required=True) 72 parser.add_argument('--output', required=True)
71 args = parser.parse_args() 73 args = parser.parse_args()
72 url = args.url 74 url = args.url
73 if not url.startswith('http'): 75 if not url.startswith('http'):
74 url = 'http://' + url 76 url = 'http://' + url
75 device = device_utils.DeviceUtils.HealthyDevices()[0] 77 device = device_utils.DeviceUtils.HealthyDevices()[0]
76 RecordAndDumpTrace(device, url, args.output) 78 RecordAndDumpTrace(device, url, args.output)
77 79
78 80
79 if __name__ == '__main__': 81 if __name__ == '__main__':
80 main() 82 main()
OLDNEW
« tools/android/loading/run_sandwich.py ('K') | « tools/android/loading/run_sandwich.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698