OLD | NEW |
1 # Copyright 2014 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 import unittest | 5 import unittest |
6 | 6 |
7 from metrics import timeline | 7 from metrics import timeline |
8 from telemetry.core.timeline import model as model_module | 8 from telemetry.core.timeline import model as model_module |
9 from telemetry.page import page as page_module | 9 from telemetry.page import page as page_module |
10 from telemetry.page import page_measurement_results | 10 from telemetry.page import page_measurement_results |
11 from telemetry.value import scalar | 11 from telemetry.value import scalar |
(...skipping 27 matching lines...) Expand all Loading... |
39 results = TestPageMeasurementResults(self) | 39 results = TestPageMeasurementResults(self) |
40 tab = None | 40 tab = None |
41 metric.AddResults(tab, results) | 41 metric.AddResults(tab, results) |
42 return results | 42 return results |
43 | 43 |
44 def testBasic(self): | 44 def testBasic(self): |
45 model = model_module.TimelineModel() | 45 model = model_module.TimelineModel() |
46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | 46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
47 renderer_main.name = 'CrRendererMain' | 47 renderer_main.name = 'CrRendererMain' |
48 | 48 |
| 49 # Create two frame swaps (Results times should be divided by two) |
| 50 gpu_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) |
| 51 gpu_main.name = 'CrGPUMain' |
| 52 gpu_main.BeginSlice('gpucat', ':RealSwapBuffers', 10, 10) |
| 53 gpu_main.EndSlice(11, 11) |
| 54 gpu_main.BeginSlice('gpucat', ':RealSwapBuffers', 12, 12) |
| 55 gpu_main.EndSlice(13, 13) |
| 56 |
49 # [ X ] | 57 # [ X ] |
50 # [ Y ] | 58 # [ Y ] |
51 renderer_main.BeginSlice('cat1', 'X', 10, 0) | 59 renderer_main.BeginSlice('cat1', 'X', 10, 0) |
52 renderer_main.BeginSlice('cat2', 'Y', 15, 5) | 60 renderer_main.BeginSlice('cat2', 'Y', 15, 5) |
53 renderer_main.EndSlice(16, 0.5) | 61 renderer_main.EndSlice(16, 0.5) |
54 renderer_main.EndSlice(30, 19.5) | 62 renderer_main.EndSlice(30, 19.5) |
55 model.FinalizeImport() | 63 model.FinalizeImport() |
56 | 64 |
57 metric = timeline.ThreadTimesTimelineMetric() | 65 metric = timeline.ThreadTimesTimelineMetric() |
58 metric.report_renderer_main_details = True | 66 metric.details_to_report = timeline.MainThread |
59 results = self.GetResultsForModel(metric, model) | |
60 results.AssertHasPageSpecificScalarValue( | |
61 'thread_renderer_main_clock_time_percentage', '%', 100) | |
62 results.AssertHasPageSpecificScalarValue( | |
63 'renderer_main|cat1', 'ms', 19) | |
64 results.AssertHasPageSpecificScalarValue( | |
65 'renderer_main|cat2', 'ms', 1) | |
66 results.AssertHasPageSpecificScalarValue( | |
67 'renderer_main|idle', 'ms', 0) | |
68 | |
69 def testPercentage(self): | |
70 model = model_module.TimelineModel() | |
71 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | |
72 renderer_main.name = 'CrRendererMain' | |
73 | |
74 # [ X ] [ Z ] | |
75 # X is 20ms, then 10ms delay, then Z is 10ms | |
76 renderer_main.BeginSlice('cat', 'X', 10, 0) | |
77 renderer_main.EndSlice(30, 19.5) | |
78 renderer_main.BeginSlice('cat', 'Z', 40, 20) | |
79 renderer_main.EndSlice(50, 30) | |
80 model.FinalizeImport() | |
81 | |
82 metric = timeline.ThreadTimesTimelineMetric() | |
83 metric.report_renderer_main_details = True | |
84 results = self.GetResultsForModel(metric, model) | 67 results = self.GetResultsForModel(metric, model) |
85 | 68 |
86 results.AssertHasPageSpecificScalarValue( | 69 # Test that all categories exist |
87 'thread_renderer_main_clock_time_percentage', '%', 75) | 70 for name in timeline.TimelineThreadCategories.values(): |
88 results.AssertHasPageSpecificScalarValue( | 71 results.GetPageSpecificValueNamed(timeline.ThreadTimeResultName(name)) |
89 'renderer_main|cat', 'ms', 30) | 72 results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) |
90 results.AssertHasPageSpecificScalarValue( | 73 |
91 'renderer_main|idle', 'ms', 10) | 74 # Test a couple specific results. |
| 75 assert_results = { |
| 76 timeline.ThreadTimeResultName('renderer_main') : 10, |
| 77 timeline.ThreadDetailResultName('renderer_main','cat1') : 9.5, |
| 78 timeline.ThreadDetailResultName('renderer_main','cat2') : 0.5, |
| 79 timeline.ThreadDetailResultName('renderer_main','idle') : 0 |
| 80 } |
| 81 for name, value in assert_results.iteritems(): |
| 82 results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
OLD | NEW |