OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 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 import copy | 5 import copy |
6 import json | 6 import json |
7 import os | 7 import os |
8 import shutil | 8 import shutil |
9 import subprocess | 9 import subprocess |
10 import tempfile | 10 import tempfile |
11 import unittest | 11 import unittest |
12 | 12 |
13 import loading_trace | 13 import loading_trace |
14 import page_track | 14 import page_track |
15 import sandwich_metrics as puller | 15 import sandwich_metrics as puller |
| 16 import sandwich_runner |
16 import request_track | 17 import request_track |
17 import tracing | 18 import tracing |
18 | 19 |
19 | 20 |
20 _BLINK_CAT = 'blink.user_timing' | 21 _BLINK_CAT = 'blink.user_timing' |
21 _MEM_CAT = 'disabled-by-default-memory-infra' | 22 _MEM_CAT = 'disabled-by-default-memory-infra' |
22 _START='requestStart' | 23 _START='requestStart' |
23 _LOADS='loadEventStart' | 24 _LOADS='loadEventStart' |
24 _LOADE='loadEventEnd' | 25 _LOADE='loadEventEnd' |
25 _UNLOAD='unloadEventEnd' | 26 _UNLOAD='unloadEventEnd' |
(...skipping 13 matching lines...) Expand all Loading... |
39 {'cat': _MEM_CAT, 'name': 'periodic_interval', 'pid': 1, 'ph': 'v', | 40 {'cat': _MEM_CAT, 'name': 'periodic_interval', 'pid': 1, 'ph': 'v', |
40 'ts': 1, 'args': {'dumps': {'allocators': {'malloc': {'attrs': {'size':{ | 41 'ts': 1, 'args': {'dumps': {'allocators': {'malloc': {'attrs': {'size':{ |
41 'units': 'bytes', 'value': 'd704', }}}}}}}, | 42 'units': 'bytes', 'value': 'd704', }}}}}}}, |
42 {'ph': 'M', 'cat': '__metadata', 'pid': 1, 'name': 'process_name', 'ts': 1, | 43 {'ph': 'M', 'cat': '__metadata', 'pid': 1, 'name': 'process_name', 'ts': 1, |
43 'args': {'name': 'Browser'}}] | 44 'args': {'name': 'Browser'}}] |
44 | 45 |
45 | 46 |
46 def TracingTrack(events): | 47 def TracingTrack(events): |
47 return tracing.TracingTrack.FromJsonDict({ | 48 return tracing.TracingTrack.FromJsonDict({ |
48 'events': events, | 49 'events': events, |
49 'categories': tracing.INITIAL_CATEGORIES + puller.ADDITIONAL_CATEGORIES}) | 50 'categories': (tracing.INITIAL_CATEGORIES + |
| 51 sandwich_runner.ADDITIONAL_CATEGORIES)}) |
50 | 52 |
51 | 53 |
52 def LoadingTrace(events): | 54 def LoadingTrace(events): |
53 return loading_trace.LoadingTrace('http://a.com/', {}, | 55 return loading_trace.LoadingTrace('http://a.com/', {}, |
54 page_track.PageTrack(None), | 56 page_track.PageTrack(None), |
55 request_track.RequestTrack(None), | 57 request_track.RequestTrack(None), |
56 TracingTrack(events)) | 58 TracingTrack(events)) |
57 | 59 |
58 | 60 |
59 class PageTrackTest(unittest.TestCase): | 61 class PageTrackTest(unittest.TestCase): |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 {'pid': 123, 'ts': 4000, 'cat': _MEM_CAT, 'ph': 'v', 'name': 'foo'}, | 100 {'pid': 123, 'ts': 4000, 'cat': _MEM_CAT, 'ph': 'v', 'name': 'foo'}, |
99 {'pid': 123, 'ts': 5000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, | 101 {'pid': 123, 'ts': 5000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, |
100 {'pid': 123, 'ts': 6000, 'cat': _MEM_CAT, 'ph': 'V'}, | 102 {'pid': 123, 'ts': 6000, 'cat': _MEM_CAT, 'ph': 'V'}, |
101 {'pid': 672, 'ts': 7000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, | 103 {'pid': 672, 'ts': 7000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, |
102 {'pid': 354, 'ts': 8000, 'cat': _MEM_CAT, 'ph': 'v', 'name': 'foo'}, | 104 {'pid': 354, 'ts': 8000, 'cat': _MEM_CAT, 'ph': 'v', 'name': 'foo'}, |
103 {'pid': 123, 'ts': 9000, 'cat': 'whatever1', 'ph': 'v', 'name': NAME}, | 105 {'pid': 123, 'ts': 9000, 'cat': 'whatever1', 'ph': 'v', 'name': NAME}, |
104 {'pid': 123, 'ts': 10000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, | 106 {'pid': 123, 'ts': 10000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}, |
105 {'pid': 354, 'ts': 11000, 'cat': 'whatever0', 'ph': 'R'}, | 107 {'pid': 354, 'ts': 11000, 'cat': 'whatever0', 'ph': 'R'}, |
106 {'pid': 672, 'ts': 12000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}] | 108 {'pid': 672, 'ts': 12000, 'cat': _MEM_CAT, 'ph': 'v', 'name': NAME}] |
107 | 109 |
108 self.assertTrue(_MEM_CAT in puller.ADDITIONAL_CATEGORIES) | 110 self.assertTrue(_MEM_CAT in sandwich_runner.ADDITIONAL_CATEGORIES) |
109 | 111 |
110 bump_events = RunHelper(TRACE_EVENTS, 123) | 112 bump_events = RunHelper(TRACE_EVENTS, 123) |
111 self.assertEquals(2, len(bump_events)) | 113 self.assertEquals(2, len(bump_events)) |
112 self.assertEquals(5, bump_events[0].start_msec) | 114 self.assertEquals(5, bump_events[0].start_msec) |
113 self.assertEquals(10, bump_events[1].start_msec) | 115 self.assertEquals(10, bump_events[1].start_msec) |
114 | 116 |
115 bump_events = RunHelper(TRACE_EVENTS, 354) | 117 bump_events = RunHelper(TRACE_EVENTS, 354) |
116 self.assertEquals(1, len(bump_events)) | 118 self.assertEquals(1, len(bump_events)) |
117 self.assertEquals(1, bump_events[0].start_msec) | 119 self.assertEquals(1, bump_events[0].start_msec) |
118 | 120 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 point(230, 1.0), | 227 point(230, 1.0), |
226 ] | 228 ] |
227 with self.assertRaises(ValueError): | 229 with self.assertRaises(ValueError): |
228 puller.ComputeSpeedIndex(completness_record) | 230 puller.ComputeSpeedIndex(completness_record) |
229 | 231 |
230 def testCommandLine(self): | 232 def testCommandLine(self): |
231 tmp_dir = tempfile.mkdtemp() | 233 tmp_dir = tempfile.mkdtemp() |
232 for dirname in ['1', '2', 'whatever']: | 234 for dirname in ['1', '2', 'whatever']: |
233 os.mkdir(os.path.join(tmp_dir, dirname)) | 235 os.mkdir(os.path.join(tmp_dir, dirname)) |
234 LoadingTrace(_MINIMALIST_TRACE_EVENTS).ToJsonFile( | 236 LoadingTrace(_MINIMALIST_TRACE_EVENTS).ToJsonFile( |
235 os.path.join(tmp_dir, dirname, 'trace.json')) | 237 os.path.join(tmp_dir, dirname, sandwich_runner.TRACE_FILENAME)) |
236 | 238 |
237 process = subprocess.Popen(['python', puller.__file__, tmp_dir]) | 239 process = subprocess.Popen(['python', puller.__file__, tmp_dir]) |
238 process.wait() | 240 process.wait() |
239 shutil.rmtree(tmp_dir) | 241 shutil.rmtree(tmp_dir) |
240 | 242 |
241 self.assertEquals(0, process.returncode) | 243 self.assertEquals(0, process.returncode) |
242 | 244 |
243 | 245 |
244 if __name__ == '__main__': | 246 if __name__ == '__main__': |
245 unittest.main() | 247 unittest.main() |
OLD | NEW |