| 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 |