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

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: 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 #! /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):
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.
41 categories: List of tracing event categories to record. 42 categories: List of tracing event categories to record.
43 timeout: Websocket timeout.
42 44
43 Returns: 45 Returns:
44 loading_trace.LoadingTrace. 46 loading_trace.LoadingTrace.
45 """ 47 """
46 page = page_track.PageTrack(connection) 48 page = page_track.PageTrack(connection)
47 request = request_track.RequestTrack(connection) 49 request = request_track.RequestTrack(connection)
48 trace = tracing.TracingTrack(connection, categories=categories) 50 trace = tracing.TracingTrack(connection, categories=categories)
49 connection.SetUpMonitoring() 51 connection.SetUpMonitoring()
50 if clear_cache: 52 if clear_cache:
51 connection.ClearCache() 53 connection.ClearCache()
52 connection.SendAndIgnoreResponse('Page.navigate', {'url': url}) 54 connection.SendAndIgnoreResponse('Page.navigate', {'url': url})
53 connection.StartMonitoring() 55 connection.StartMonitoring(timeout=timeout)
54 metadata = {'date': datetime.datetime.utcnow().isoformat(), 56 metadata = {'date': datetime.datetime.utcnow().isoformat(),
55 'seconds_since_epoch': time.time()} 57 'seconds_since_epoch': time.time()}
56 return loading_trace.LoadingTrace(url, metadata, page, request, trace) 58 return loading_trace.LoadingTrace(url, metadata, page, request, trace)
57 59
58 def RecordAndDumpTrace(device, url, output_filename): 60 def RecordAndDumpTrace(device, url, output_filename):
59 with file(output_filename, 'w') as output,\ 61 with file(output_filename, 'w') as output,\
60 device_setup.DeviceConnection(device) as connection: 62 device_setup.DeviceConnection(device) as connection:
61 trace = MonitorUrl(connection, url) 63 trace = MonitorUrl(connection, url)
62 json.dump(trace.ToJsonDict(), output) 64 json.dump(trace.ToJsonDict(), output)
63 65
64 66
65 def main(): 67 def main():
66 logging.basicConfig(level=logging.INFO) 68 logging.basicConfig(level=logging.INFO)
67 devil_chromium.Initialize() 69 devil_chromium.Initialize()
68 70
69 parser = argparse.ArgumentParser() 71 parser = argparse.ArgumentParser()
70 parser.add_argument('--url', required=True) 72 parser.add_argument('--url', required=True)
71 parser.add_argument('--output', required=True) 73 parser.add_argument('--output', required=True)
72 args = parser.parse_args() 74 args = parser.parse_args()
73 url = args.url 75 url = args.url
74 if not url.startswith('http'): 76 if not url.startswith('http'):
75 url = 'http://' + url 77 url = 'http://' + url
76 device = device_utils.DeviceUtils.HealthyDevices()[0] 78 device = device_utils.DeviceUtils.HealthyDevices()[0]
77 RecordAndDumpTrace(device, url, args.output) 79 RecordAndDumpTrace(device, url, args.output)
78 80
79 81
80 if __name__ == '__main__': 82 if __name__ == '__main__':
81 main() 83 main()
OLDNEW
« tools/android/loading/devtools_monitor.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