OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 import os | 4 import os |
5 import unittest | 5 import unittest |
6 | 6 |
7 from telemetry import tab_test_case | 7 from telemetry.core import util |
8 from telemetry import util | 8 from telemetry.core.chrome import inspector_timeline |
9 from telemetry.inspector_timeline import InspectorTimeline | 9 from telemetry.test import tab_test_case |
10 | 10 |
11 _SAMPLE_MESSAGE = { | 11 _SAMPLE_MESSAGE = { |
12 'children': [ | 12 'children': [ |
13 {'data': {}, | 13 {'data': {}, |
14 'startTime': 1352783525921.823, | 14 'startTime': 1352783525921.823, |
15 'type': 'BeginFrame', | 15 'type': 'BeginFrame', |
16 'usedHeapSize': 1870736}, | 16 'usedHeapSize': 1870736}, |
17 {'children': [], | 17 {'children': [], |
18 'data': {'height': 723, | 18 'data': {'height': 723, |
19 'width': 1272, | 19 'width': 1272, |
(...skipping 22 matching lines...) Expand all Loading... |
42 'type': 'Paint', | 42 'type': 'Paint', |
43 'usedHeapSize': 1870736} | 43 'usedHeapSize': 1870736} |
44 ], | 44 ], |
45 'data': {}, | 45 'data': {}, |
46 'endTime': 1352783525928.041, | 46 'endTime': 1352783525928.041, |
47 'startTime': 1352783525921.8049, | 47 'startTime': 1352783525921.8049, |
48 'type': 'Program'} | 48 'type': 'Program'} |
49 | 49 |
50 class InspectorEventParsingTest(unittest.TestCase): | 50 class InspectorEventParsingTest(unittest.TestCase): |
51 def testParsingWithSampleData(self): | 51 def testParsingWithSampleData(self): |
52 root_event = InspectorTimeline.RawEventToTimelineEvent(_SAMPLE_MESSAGE) | 52 root_event = inspector_timeline.InspectorTimeline.RawEventToTimelineEvent( |
| 53 _SAMPLE_MESSAGE) |
53 self.assertTrue(root_event) | 54 self.assertTrue(root_event) |
54 decode_image_event = [ | 55 decode_image_event = [ |
55 child for child in root_event.GetAllChildrenRecursive() | 56 child for child in root_event.GetAllChildrenRecursive() |
56 if child.name == 'DecodeImage'][0] | 57 if child.name == 'DecodeImage'][0] |
57 self.assertEquals(decode_image_event.args['data']['imageType'], 'PNG') | 58 self.assertEquals(decode_image_event.args['data']['imageType'], 'PNG') |
58 self.assertTrue(decode_image_event.duration_ms > 0) | 59 self.assertTrue(decode_image_event.duration_ms > 0) |
59 | 60 |
60 def testParsingWithSimpleData(self): | 61 def testParsingWithSimpleData(self): |
61 raw_event = {'type': 'Foo', | 62 raw_event = {'type': 'Foo', |
62 'startTime': 1, | 63 'startTime': 1, |
63 'endTime': 3, | 64 'endTime': 3, |
64 'children': []} | 65 'children': []} |
65 event = InspectorTimeline.RawEventToTimelineEvent(raw_event) | 66 event = inspector_timeline.InspectorTimeline.RawEventToTimelineEvent( |
| 67 raw_event) |
66 self.assertEquals('Foo', event.name) | 68 self.assertEquals('Foo', event.name) |
67 self.assertEquals(1, event.start_time_ms) | 69 self.assertEquals(1, event.start_time_ms) |
68 self.assertEquals(3, event.end_time_ms) | 70 self.assertEquals(3, event.end_time_ms) |
69 self.assertEquals(2, event.duration_ms) | 71 self.assertEquals(2, event.duration_ms) |
70 self.assertEquals([], event.children) | 72 self.assertEquals([], event.children) |
71 | 73 |
72 def testParsingWithArgs(self): | 74 def testParsingWithArgs(self): |
73 raw_event = {'type': 'Foo', | 75 raw_event = {'type': 'Foo', |
74 'startTime': 1, | 76 'startTime': 1, |
75 'endTime': 3, | 77 'endTime': 3, |
76 'foo': 7, | 78 'foo': 7, |
77 'bar': {'x': 1}} | 79 'bar': {'x': 1}} |
78 event = InspectorTimeline.RawEventToTimelineEvent(raw_event) | 80 event = inspector_timeline.InspectorTimeline.RawEventToTimelineEvent( |
| 81 raw_event) |
79 self.assertEquals('Foo', event.name) | 82 self.assertEquals('Foo', event.name) |
80 self.assertEquals(1, event.start_time_ms) | 83 self.assertEquals(1, event.start_time_ms) |
81 self.assertEquals(3, event.end_time_ms) | 84 self.assertEquals(3, event.end_time_ms) |
82 self.assertEquals(2, event.duration_ms) | 85 self.assertEquals(2, event.duration_ms) |
83 self.assertEquals([], event.children) | 86 self.assertEquals([], event.children) |
84 self.assertEquals(7, event.args['foo']) | 87 self.assertEquals(7, event.args['foo']) |
85 self.assertEquals(1, event.args['bar']['x']) | 88 self.assertEquals(1, event.args['bar']['x']) |
86 | 89 |
87 def testEventsWithNoStartTimeAreDropped(self): | 90 def testEventsWithNoStartTimeAreDropped(self): |
88 raw_event = {'type': 'Foo', | 91 raw_event = {'type': 'Foo', |
89 'endTime': 1, | 92 'endTime': 1, |
90 'children': []} | 93 'children': []} |
91 event = InspectorTimeline.RawEventToTimelineEvent(raw_event) | 94 event = inspector_timeline.InspectorTimeline.RawEventToTimelineEvent( |
| 95 raw_event) |
92 self.assertEquals(None, event) | 96 self.assertEquals(None, event) |
93 | 97 |
94 def testEventsWithNoEndTimeAreDropped(self): | 98 def testEventsWithNoEndTimeAreDropped(self): |
95 raw_event = {'type': 'Foo', | 99 raw_event = {'type': 'Foo', |
96 'endTime': 1, | 100 'endTime': 1, |
97 'children': []} | 101 'children': []} |
98 event = InspectorTimeline.RawEventToTimelineEvent(raw_event) | 102 event = inspector_timeline.InspectorTimeline.RawEventToTimelineEvent( |
| 103 raw_event) |
99 self.assertEquals(None, event) | 104 self.assertEquals(None, event) |
100 | 105 |
101 | 106 |
102 class InspectorTimelineTabTest(tab_test_case.TabTestCase): | 107 class InspectorTimelineTabTest(tab_test_case.TabTestCase): |
103 def _StartServer(self): | 108 def _StartServer(self): |
104 base_dir = os.path.dirname(__file__) | 109 base_dir = os.path.dirname(__file__) |
105 self._browser.SetHTTPServerDirectory(os.path.join(base_dir, '..', | 110 self._browser.SetHTTPServerDirectory(os.path.join(base_dir, '..', '..', |
106 'unittest_data')) | 111 'unittest_data')) |
107 | 112 |
108 def _WaitForAnimationFrame(self): | 113 def _WaitForAnimationFrame(self): |
109 def _IsDone(): | 114 def _IsDone(): |
110 js_is_done = """done""" | 115 js_is_done = """done""" |
111 return bool(self._tab.EvaluateJavaScript(js_is_done)) | 116 return bool(self._tab.EvaluateJavaScript(js_is_done)) |
112 util.WaitFor(_IsDone, 5) | 117 util.WaitFor(_IsDone, 5) |
113 | 118 |
114 def testGotTimeline(self): | 119 def testGotTimeline(self): |
115 with InspectorTimeline.Recorder(self._tab): | 120 with inspector_timeline.InspectorTimeline.Recorder(self._tab): |
116 self._tab.ExecuteJavaScript( | 121 self._tab.ExecuteJavaScript( |
117 """ | 122 """ |
118 var done = false; | 123 var done = false; |
119 window.webkitRequestAnimationFrame(function() { done = true; }); | 124 window.webkitRequestAnimationFrame(function() { done = true; }); |
120 """) | 125 """) |
121 self._WaitForAnimationFrame() | 126 self._WaitForAnimationFrame() |
122 | 127 |
123 r = self._tab.timeline_model.GetAllOfName('FireAnimationFrame') | 128 r = self._tab.timeline_model.GetAllOfName('FireAnimationFrame') |
124 self.assertTrue(len(r) > 0) | 129 self.assertTrue(len(r) > 0) |
125 self.assertTrue(r[0].duration_ms > 0) | 130 self.assertTrue(r[0].duration_ms > 0) |
OLD | NEW |