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

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

Issue 1084533005: Support total and per-second task/threadtime timeline metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 5 years, 7 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
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 telemetry.timeline import model as model_module 7 from telemetry.timeline import model as model_module
8 from telemetry.unittest_util import test_page_test_results 8 from telemetry.unittest_util import test_page_test_results
9 from telemetry.web_perf import timeline_interaction_record as tir_module 9 from telemetry.web_perf import timeline_interaction_record as tir_module
10 10
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 102 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
103 renderer_main.name = 'CrRendererMain' 103 renderer_main.name = 'CrRendererMain'
104 104
105 metric = timeline.ThreadTimesTimelineMetric() 105 metric = timeline.ThreadTimesTimelineMetric()
106 metric.details_to_report = timeline.ReportMainThreadOnly 106 metric.details_to_report = timeline.ReportMainThreadOnly
107 results = self.GetResults(metric, model, renderer_main.parent, 107 results = self.GetResults(metric, model, renderer_main.parent,
108 [_GetInteractionRecord(1,2)]) 108 [_GetInteractionRecord(1,2)])
109 109
110 # Test that all result thread categories exist 110 # Test that all result thread categories exist
111 for name in timeline.TimelineThreadCategories.values(): 111 for name in timeline.TimelineThreadCategories.values():
112 results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) 112 results.GetPageSpecificValueNamed(metric.ThreadCpuTimeResultName(name))
113 113
114 def testBasic(self): 114 def testBasic(self):
115 model = model_module.TimelineModel() 115 model = model_module.TimelineModel()
116 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 116 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
117 renderer_main.name = 'CrRendererMain' 117 renderer_main.name = 'CrRendererMain'
118 118
119 # Create two frame swaps (Results times should be divided by two) 119 # Create two frame swaps (Results times should be divided by two)
120 cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) 120 cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3)
121 cc_main.name = 'Compositor' 121 cc_main.name = 'Compositor'
122 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10) 122 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10)
(...skipping 14 matching lines...) Expand all
137 # Exclude 'Z' using an action-range. 137 # Exclude 'Z' using an action-range.
138 metric = timeline.ThreadTimesTimelineMetric() 138 metric = timeline.ThreadTimesTimelineMetric()
139 metric.details_to_report = timeline.ReportMainThreadOnly 139 metric.details_to_report = timeline.ReportMainThreadOnly
140 results = self.GetResults(metric, model, renderer_main.parent, 140 results = self.GetResults(metric, model, renderer_main.parent,
141 [_GetInteractionRecord(10, 30)]) 141 [_GetInteractionRecord(10, 30)])
142 142
143 # Test for the results we expect. 143 # Test for the results we expect.
144 main_thread = "renderer_main" 144 main_thread = "renderer_main"
145 cc_thread = 'renderer_compositor' 145 cc_thread = 'renderer_compositor'
146 assert_results = [ 146 assert_results = [
147 (timeline.ThreadCpuTimeResultName(main_thread), 'ms', 9.75), 147 (metric.ThreadCpuTimeResultName(main_thread), 'ms', 9.75),
148 (timeline.ThreadTasksResultName(main_thread), 'tasks', 0.5), 148 (metric.ThreadTasksResultName(main_thread), 'tasks', 0.5),
149 (timeline.ThreadMeanFrameTimeResultName(cc_thread), 'ms', 10.0), 149 (metric.ThreadFrameTimeResultName(cc_thread), 'ms', 10.0),
150 (timeline.ThreadDetailResultName(main_thread,'cat1'), 'ms', 9.5), 150 (metric.ThreadDetailResultName(main_thread,'cat1'), 'ms', 9.5),
151 (timeline.ThreadDetailResultName(main_thread,'cat2'), 'ms', 0.5), 151 (metric.ThreadDetailResultName(main_thread,'cat2'), 'ms', 0.5),
152 (timeline.ThreadDetailResultName(main_thread,'idle'), 'ms', 0) 152 (metric.ThreadDetailResultName(main_thread,'idle'), 'ms', 0)
153 ] 153 ]
154 for name, unit, value in assert_results: 154 for name, unit, value in assert_results:
155 results.AssertHasPageSpecificScalarValue(name, unit, value) 155 results.AssertHasPageSpecificScalarValue(name, unit, value)
156 156
157 def testOverheadIsRemoved(self): 157 def testOverheadIsRemoved(self):
158 model = model_module.TimelineModel() 158 model = model_module.TimelineModel()
159 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) 159 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
160 renderer_main.name = 'CrRendererMain' 160 renderer_main.name = 'CrRendererMain'
161 161
162 # Create one frame swap. 162 # Create one frame swap.
(...skipping 13 matching lines...) Expand all
176 model.FinalizeImport() 176 model.FinalizeImport()
177 177
178 # Include everything in an action-range. 178 # Include everything in an action-range.
179 metric = timeline.ThreadTimesTimelineMetric() 179 metric = timeline.ThreadTimesTimelineMetric()
180 metric.details_to_report = timeline.ReportMainThreadOnly 180 metric.details_to_report = timeline.ReportMainThreadOnly
181 results = self.GetResults(metric, model, renderer_main.parent, 181 results = self.GetResults(metric, model, renderer_main.parent,
182 [_GetInteractionRecord(10, 30)]) 182 [_GetInteractionRecord(10, 30)])
183 183
184 # Test a couple specific results. 184 # Test a couple specific results.
185 assert_results = { 185 assert_results = {
186 timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, 186 metric.ThreadCpuTimeResultName('renderer_main') : 9.0,
187 } 187 }
188 for name, value in assert_results.iteritems(): 188 for name, value in assert_results.iteritems():
189 results.AssertHasPageSpecificScalarValue(name, 'ms', value) 189 results.AssertHasPageSpecificScalarValue(name, 'ms', value)
190
191 def testMeasureTotalThreadTime(self):
192 model = model_module.TimelineModel()
193 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2)
194 renderer_main.name = 'CrRendererMain'
195
196 # Create two frame swaps (Results times should accumulate both frames)
197 cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3)
198 cc_main.name = 'Compositor'
199 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10)
200 cc_main.EndSlice(11, 11)
201 cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 12, 12)
202 cc_main.EndSlice(13, 13)
203
204 # [ X ] [ Z ]
205 # [ Y ]
206 renderer_main.BeginSlice('cat1', 'X', 10, 0)
207 renderer_main.BeginSlice('cat2', 'Y', 15, 5)
208 renderer_main.EndSlice(16, 5.5)
209 renderer_main.BeginSlice('cat1', 'Z', 20, 9)
210 renderer_main.BeginSlice('cat1', 'Z', 21, 10)
211 renderer_main.EndSlice(30, 19.5)
212 model.FinalizeImport()
213
214 metric = timeline.ThreadTimesTimelineMetric(measure_per_frame=False)
215 metric.details_to_report = timeline.ReportMainThreadOnly
216 results = self.GetResults(metric, model, renderer_main.parent,
217 [_GetInteractionRecord(10, 30)])
218
219 # Test for the results we expect.
220 main_thread = "renderer_main"
221 cc_thread = 'renderer_compositor'
222 assert_results = [
223 (metric.ThreadCpuTimeResultName(main_thread), 'ms', 19.5),
224 (metric.ThreadTasksResultName(main_thread), 'tasks', 1.0),
225 (metric.ThreadFrameTimeResultName(cc_thread), 'ms', 20.0),
226 (metric.ThreadDetailResultName(main_thread,'cat1'), 'ms', 19.0),
227 (metric.ThreadDetailResultName(main_thread,'cat2'), 'ms', 1.0)]
228 for name, unit, value in assert_results:
229 results.AssertHasPageSpecificScalarValue(name, unit, value)
OLDNEW
« tools/perf/metrics/timeline.py ('K') | « tools/perf/metrics/timeline.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698