Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: tools/perf/metrics/timeline_unittest.py

Issue 199733007: Remove start & stop logic from timeline_metric. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/perf/metrics/timeline.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import unittest 5 import unittest
6 6
7 from metrics import timeline 7 from metrics import timeline
8 from telemetry.core.timeline import bounds 8 from telemetry.core.timeline import bounds
9 from telemetry.core.timeline import model as model_module 9 from telemetry.core.timeline import model as model_module
10 from telemetry.page import page as page_module 10 from telemetry.page import page as page_module
(...skipping 17 matching lines...) Expand all
28 def AssertHasPageSpecificScalarValue(self, name, units, expected_value): 28 def AssertHasPageSpecificScalarValue(self, name, units, expected_value):
29 value = self.GetPageSpecificValueNamed(name) 29 value = self.GetPageSpecificValueNamed(name)
30 self.test.assertEquals(units, value.units) 30 self.test.assertEquals(units, value.units)
31 self.test.assertTrue(isinstance(value, scalar.ScalarValue)) 31 self.test.assertTrue(isinstance(value, scalar.ScalarValue))
32 self.test.assertEquals(expected_value, value.value) 32 self.test.assertEquals(expected_value, value.value)
33 33
34 def __str__(self): 34 def __str__(self):
35 return '\n'.join([repr(x) for x in self.all_page_specific_values]) 35 return '\n'.join([repr(x) for x in self.all_page_specific_values])
36 36
37 class LoadTimesTimelineMetric(unittest.TestCase): 37 class LoadTimesTimelineMetric(unittest.TestCase):
38 def GetResultsForModel(self, metric, model): 38 def GetResults(self, metric):
39 metric.model = model
40 results = TestPageMeasurementResults(self) 39 results = TestPageMeasurementResults(self)
41 tab = None 40 tab = None
42 metric.AddResults(tab, results) 41 metric.AddResults(tab, results)
43 return results 42 return results
44 43
45 def testSanitizing(self): 44 def testSanitizing(self):
46 model = model_module.TimelineModel() 45 model = model_module.TimelineModel()
47 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
48 renderer_main.name = 'CrRendererMain' 47 renderer_main.name = 'CrRendererMain'
49 48
50 # [ X ] 49 # [ X ]
51 # [ Y ] 50 # [ Y ]
52 renderer_main.BeginSlice('cat1', 'x.y', 10, 0) 51 renderer_main.BeginSlice('cat1', 'x.y', 10, 0)
53 renderer_main.EndSlice(20, 20) 52 renderer_main.EndSlice(20, 20)
54 model.FinalizeImport() 53 model.FinalizeImport()
55 54
56 metric = timeline.LoadTimesTimelineMetric() 55 metric = timeline.LoadTimesTimelineMetric(model, renderer_main.parent)
57 metric.renderer_process = renderer_main.parent 56 results = self.GetResults(metric)
58 results = self.GetResultsForModel(metric, model)
59 results.AssertHasPageSpecificScalarValue( 57 results.AssertHasPageSpecificScalarValue(
60 'CrRendererMain|x_y', 'ms', 10) 58 'CrRendererMain|x_y', 'ms', 10)
61 results.AssertHasPageSpecificScalarValue( 59 results.AssertHasPageSpecificScalarValue(
62 'CrRendererMain|x_y_max', 'ms', 10) 60 'CrRendererMain|x_y_max', 'ms', 10)
63 results.AssertHasPageSpecificScalarValue( 61 results.AssertHasPageSpecificScalarValue(
64 'CrRendererMain|x_y_avg', 'ms', 10) 62 'CrRendererMain|x_y_avg', 'ms', 10)
65 63
66 def testCounterSanitizing(self): 64 def testCounterSanitizing(self):
67 model = model_module.TimelineModel() 65 model = model_module.TimelineModel()
68 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 66 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
69 renderer_main.name = 'CrRendererMain' 67 renderer_main.name = 'CrRendererMain'
70 68
71 x_counter = renderer_main.parent.GetOrCreateCounter('cat', 'x.y') 69 x_counter = renderer_main.parent.GetOrCreateCounter('cat', 'x.y')
72 x_counter.samples += [1, 2] 70 x_counter.samples += [1, 2]
73 x_counter.series_names += ['a'] 71 x_counter.series_names += ['a']
74 x_counter.timestamps += [0, 1] 72 x_counter.timestamps += [0, 1]
75 model.FinalizeImport() 73 model.FinalizeImport()
76 74
77 metric = timeline.LoadTimesTimelineMetric() 75 metric = timeline.LoadTimesTimelineMetric(model, renderer_main.parent)
78 metric.renderer_process = renderer_main.parent 76 results = self.GetResults(metric)
79 results = self.GetResultsForModel(metric, model)
80 results.AssertHasPageSpecificScalarValue( 77 results.AssertHasPageSpecificScalarValue(
81 'cat_x_y', 'count', 3) 78 'cat_x_y', 'count', 3)
82 results.AssertHasPageSpecificScalarValue( 79 results.AssertHasPageSpecificScalarValue(
83 'cat_x_y_avg', 'count', 1.5) 80 'cat_x_y_avg', 'count', 1.5)
84 81
85 82
86 class ThreadTimesTimelineMetricUnittest(unittest.TestCase): 83 class ThreadTimesTimelineMetricUnittest(unittest.TestCase):
87 def GetResultsForModel(self, metric, model): 84 def GetResults(self, metric):
88 metric.model = model
89 results = TestPageMeasurementResults(self) 85 results = TestPageMeasurementResults(self)
90 tab = None 86 tab = None
91 metric.AddResults(tab, results) 87 metric.AddResults(tab, results)
92 return results 88 return results
93 89
94 def GetActionRange(self, start, end): 90 def GetActionRange(self, start, end):
95 action_range = bounds.Bounds() 91 action_range = bounds.Bounds()
96 action_range.AddValue(start) 92 action_range.AddValue(start)
97 action_range.AddValue(end) 93 action_range.AddValue(end)
98 return action_range 94 return action_range
99 95
100 def testResults(self): 96 def testResults(self):
101 model = model_module.TimelineModel() 97 model = model_module.TimelineModel()
102 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 98 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
103 renderer_main.name = 'CrRendererMain' 99 renderer_main.name = 'CrRendererMain'
104 100
105 metric = timeline.ThreadTimesTimelineMetric() 101 metric = timeline.ThreadTimesTimelineMetric(model, renderer_main.parent,
106 metric._action_ranges = [self.GetActionRange(1, 2)] 102 [self.GetActionRange(1, 2)])
107 metric.details_to_report = timeline.ReportMainThreadOnly 103 metric.details_to_report = timeline.ReportMainThreadOnly
108 results = self.GetResultsForModel(metric, model) 104 results = self.GetResults(metric)
109 105
110 # Test that all result thread categories exist 106 # Test that all result thread categories exist
111 for name in timeline.TimelineThreadCategories.values(): 107 for name in timeline.TimelineThreadCategories.values():
112 results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) 108 results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name))
113 109
114 def testBasic(self): 110 def testBasic(self):
115 model = model_module.TimelineModel() 111 model = model_module.TimelineModel()
116 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 112 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
117 renderer_main.name = 'CrRendererMain' 113 renderer_main.name = 'CrRendererMain'
118 114
119 # Create two frame swaps (Results times should be divided by two) 115 # Create two frame swaps (Results times should be divided by two)
120 cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) 116 cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3)
121 cc_main.name = 'Compositor' 117 cc_main.name = 'Compositor'
122 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10) 118 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10)
123 cc_main.EndSlice(11, 11) 119 cc_main.EndSlice(11, 11)
124 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 12, 12) 120 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 12, 12)
125 cc_main.EndSlice(13, 13) 121 cc_main.EndSlice(13, 13)
126 122
127 # [ X ] [ Z ] 123 # [ X ] [ Z ]
128 # [ Y ] 124 # [ Y ]
129 renderer_main.BeginSlice('cat1', 'X', 10, 0) 125 renderer_main.BeginSlice('cat1', 'X', 10, 0)
130 renderer_main.BeginSlice('cat2', 'Y', 15, 5) 126 renderer_main.BeginSlice('cat2', 'Y', 15, 5)
131 renderer_main.EndSlice(16, 5.5) 127 renderer_main.EndSlice(16, 5.5)
132 renderer_main.EndSlice(30, 19.5) 128 renderer_main.EndSlice(30, 19.5)
133 renderer_main.BeginSlice('cat1', 'Z', 31, 20) 129 renderer_main.BeginSlice('cat1', 'Z', 31, 20)
134 renderer_main.BeginSlice('cat1', 'Z', 33, 21) 130 renderer_main.BeginSlice('cat1', 'Z', 33, 21)
135 model.FinalizeImport() 131 model.FinalizeImport()
136 132
137 # Exclude 'Z' using an action-range. 133 # Exclude 'Z' using an action-range.
138 metric = timeline.ThreadTimesTimelineMetric() 134 metric = timeline.ThreadTimesTimelineMetric(
139 metric._action_ranges = [self.GetActionRange(10, 30)] 135 model, renderer_main.parent, action_ranges=[self.GetActionRange(10, 30)])
140 metric.details_to_report = timeline.ReportMainThreadOnly 136 metric.details_to_report = timeline.ReportMainThreadOnly
141 results = self.GetResultsForModel(metric, model) 137 results = self.GetResults(metric)
142 138
143 # Test a couple specific results. 139 # Test a couple specific results.
144 assert_results = { 140 assert_results = {
145 timeline.ThreadCpuTimeResultName('renderer_main') : 9.75, 141 timeline.ThreadCpuTimeResultName('renderer_main') : 9.75,
146 timeline.ThreadDetailResultName('renderer_main','cat1') : 9.5, 142 timeline.ThreadDetailResultName('renderer_main','cat1') : 9.5,
147 timeline.ThreadDetailResultName('renderer_main','cat2') : 0.5, 143 timeline.ThreadDetailResultName('renderer_main','cat2') : 0.5,
148 timeline.ThreadDetailResultName('renderer_main','idle') : 0 144 timeline.ThreadDetailResultName('renderer_main','idle') : 0
149 } 145 }
150 for name, value in assert_results.iteritems(): 146 for name, value in assert_results.iteritems():
151 results.AssertHasPageSpecificScalarValue(name, 'ms', value) 147 results.AssertHasPageSpecificScalarValue(name, 'ms', value)
(...skipping 13 matching lines...) Expand all
165 # [Overhead] 161 # [Overhead]
166 overhead_category = timeline.OverheadTraceCategory 162 overhead_category = timeline.OverheadTraceCategory
167 overhead_name = timeline.OverheadTraceName 163 overhead_name = timeline.OverheadTraceName
168 renderer_main.BeginSlice('cat1', 'X', 10, 0) 164 renderer_main.BeginSlice('cat1', 'X', 10, 0)
169 renderer_main.BeginSlice(overhead_category, overhead_name, 15, 5) 165 renderer_main.BeginSlice(overhead_category, overhead_name, 15, 5)
170 renderer_main.EndSlice(16, 6) 166 renderer_main.EndSlice(16, 6)
171 renderer_main.EndSlice(30, 10) 167 renderer_main.EndSlice(30, 10)
172 model.FinalizeImport() 168 model.FinalizeImport()
173 169
174 # Include everything in an action-range. 170 # Include everything in an action-range.
175 metric = timeline.ThreadTimesTimelineMetric() 171 metric = timeline.ThreadTimesTimelineMetric(
176 metric._action_ranges = [self.GetActionRange(10, 30)] 172 model, renderer_main.parent, action_ranges=[self.GetActionRange(10, 30)])
177 metric.details_to_report = timeline.ReportMainThreadOnly 173 metric.details_to_report = timeline.ReportMainThreadOnly
178 results = self.GetResultsForModel(metric, model) 174 results = self.GetResults(metric)
179 175
180 # Test a couple specific results. 176 # Test a couple specific results.
181 assert_results = { 177 assert_results = {
182 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, 178 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0,
183 } 179 }
184 for name, value in assert_results.iteritems(): 180 for name, value in assert_results.iteritems():
185 results.AssertHasPageSpecificScalarValue(name, 'ms', value) 181 results.AssertHasPageSpecificScalarValue(name, 'ms', value)
OLDNEW
« no previous file with comments | « tools/perf/metrics/timeline.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698