OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 # These tests access private methods in the speedindex module. | 5 # These tests access private methods in the speedindex module. |
6 # pylint: disable=W0212 | 6 # pylint: disable=W0212 |
7 | 7 |
8 import json | 8 import json |
9 import os | 9 import os |
10 import unittest | 10 import unittest |
11 | 11 |
12 from telemetry.image_processing import histogram | 12 from telemetry.image_processing import histogram |
13 from telemetry.image_processing import rgba_color | 13 from telemetry.image_processing import rgba_color |
14 from telemetry.timeline import inspector_timeline_data | |
15 from telemetry.timeline import model | 14 from telemetry.timeline import model |
| 15 from telemetry.timeline import trace_data as trace_data_module |
16 from metrics import speedindex | 16 from metrics import speedindex |
17 | 17 |
18 # Sample timeline data in the json format provided by devtools. | 18 # Sample timeline data in the json format provided by devtools. |
19 # The sample events will be used in several tests below. | 19 # The sample events will be used in several tests below. |
20 _TEST_DIR = os.path.join(os.path.dirname(__file__), 'unittest_data') | 20 _TEST_DIR = os.path.join(os.path.dirname(__file__), 'unittest_data') |
21 _SAMPLE_DATA = json.load(open(os.path.join(_TEST_DIR, 'sample_timeline.json'))) | 21 _SAMPLE_DATA = json.load(open(os.path.join(_TEST_DIR, 'sample_timeline.json'))) |
22 _SAMPLE_TIMELINE_DATA = inspector_timeline_data.InspectorTimelineData( | 22 _SAMPLE_TRACE_BUILDER = trace_data_module.TraceDataBuilder() |
23 _SAMPLE_DATA) | 23 _SAMPLE_TRACE_BUILDER.AddEventsTo( |
| 24 trace_data_module.INSPECTOR_TRACE_PART, _SAMPLE_DATA) |
24 _SAMPLE_EVENTS = model.TimelineModel( | 25 _SAMPLE_EVENTS = model.TimelineModel( |
25 timeline_data=_SAMPLE_TIMELINE_DATA).GetAllEvents() | 26 _SAMPLE_TRACE_BUILDER.AsData()).GetAllEvents() |
26 | 27 |
27 | 28 |
28 class FakeImageUtil(object): | 29 class FakeImageUtil(object): |
29 # pylint: disable=W0613 | 30 # pylint: disable=W0613 |
30 def GetColorHistogram(self, image, ignore_color=None, tolerance=None): | 31 def GetColorHistogram(self, image, ignore_color=None, tolerance=None): |
31 return image.ColorHistogram() | 32 return image.ColorHistogram() |
32 | 33 |
33 class FakeTimelineModel(object): | 34 class FakeTimelineModel(object): |
34 def __init__(self): | 35 def __init__(self): |
35 self._events = [] | 36 self._events = [] |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 | 198 |
198 Args: | 199 Args: |
199 filename: Filename of a json file which contains a | 200 filename: Filename of a json file which contains a |
200 expected: The result expected based on the WPT result. | 201 expected: The result expected based on the WPT result. |
201 """ | 202 """ |
202 tab = FakeTab() | 203 tab = FakeTab() |
203 impl = speedindex.PaintRectSpeedIndexImpl() | 204 impl = speedindex.PaintRectSpeedIndexImpl() |
204 file_path = os.path.join(_TEST_DIR, filename) | 205 file_path = os.path.join(_TEST_DIR, filename) |
205 with open(file_path) as json_file: | 206 with open(file_path) as json_file: |
206 raw_events = json.load(json_file) | 207 raw_events = json.load(json_file) |
207 timeline_data = inspector_timeline_data.InspectorTimelineData(raw_events) | 208 trace_data_builder = trace_data_module.TraceDataBuilder() |
| 209 trace_data_builder.AddEventsTo( |
| 210 trace_data_module.INSPECTOR_TRACE_PART, raw_events) |
208 tab.timeline_model.SetAllEvents( | 211 tab.timeline_model.SetAllEvents( |
209 model.TimelineModel(timeline_data=timeline_data).GetAllEvents()) | 212 model.TimelineModel(trace_data_builder.AsData()).GetAllEvents()) |
210 tab.SetEvaluateJavaScriptResult(viewport) | 213 tab.SetEvaluateJavaScriptResult(viewport) |
211 actual = impl.CalculateSpeedIndex(tab) | 214 actual = impl.CalculateSpeedIndex(tab) |
212 # The result might differ by 1 or more milliseconds due to rounding, | 215 # The result might differ by 1 or more milliseconds due to rounding, |
213 # so compare to the nearest 10 milliseconds. | 216 # so compare to the nearest 10 milliseconds. |
214 self.assertAlmostEqual(actual, expected, places=-1) | 217 self.assertAlmostEqual(actual, expected, places=-1) |
215 | 218 |
216 def testCern(self): | 219 def testCern(self): |
217 # Page: http://info.cern.ch/hypertext/WWW/TheProject.html | 220 # Page: http://info.cern.ch/hypertext/WWW/TheProject.html |
218 # This page has only one paint event. | 221 # This page has only one paint event. |
219 self._TestJsonTimelineExpectation( | 222 self._TestJsonTimelineExpectation( |
220 'cern_repeat_timeline.json', (1014, 650), 379.0) | 223 'cern_repeat_timeline.json', (1014, 650), 379.0) |
221 | 224 |
222 def testBaidu(self): | 225 def testBaidu(self): |
223 # Page: http://www.baidu.com/ | 226 # Page: http://www.baidu.com/ |
224 # This page has several paint events, but no nested paint events. | 227 # This page has several paint events, but no nested paint events. |
225 self._TestJsonTimelineExpectation( | 228 self._TestJsonTimelineExpectation( |
226 'baidu_repeat_timeline.json', (1014, 650), 1761.43) | 229 'baidu_repeat_timeline.json', (1014, 650), 1761.43) |
227 | 230 |
228 def test2ch(self): | 231 def test2ch(self): |
229 # Page: http://2ch.net/ | 232 # Page: http://2ch.net/ |
230 # This page has several paint events, including nested paint events. | 233 # This page has several paint events, including nested paint events. |
231 self._TestJsonTimelineExpectation( | 234 self._TestJsonTimelineExpectation( |
232 '2ch_repeat_timeline.json', (997, 650), 674.58) | 235 '2ch_repeat_timeline.json', (997, 650), 674.58) |
233 | 236 |
234 | 237 |
235 if __name__ == "__main__": | 238 if __name__ == "__main__": |
236 unittest.main() | 239 unittest.main() |
OLD | NEW |