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

Side by Side Diff: tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py

Issue 707453002: Reland "Switch telemetry over to use typ to run the unit tests." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/telemetry/telemetry/unittest/run_tests_unittest.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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 os 5 import os
6 import unittest 6 import unittest
7 7
8 from telemetry import benchmark 8 from telemetry import benchmark
9 from telemetry.core import platform 9 from telemetry.core import platform
10 from telemetry.core import wpr_modes 10 from telemetry.core import wpr_modes
11 from telemetry.page import page as page_module 11 from telemetry.page import page as page_module
12 from telemetry.page import page_set 12 from telemetry.page import page_set
13 from telemetry.results import page_test_results 13 from telemetry.results import page_test_results
14 from telemetry.timeline import model as model_module 14 from telemetry.timeline import model as model_module
15 from telemetry.timeline import async_slice 15 from telemetry.timeline import async_slice
16 from telemetry.unittest import options_for_unittests 16 from telemetry.unittest import options_for_unittests
17 from telemetry.unittest import page_test_test_case 17 from telemetry.unittest import page_test_test_case
18 from telemetry.unittest import browser_test_case
18 from telemetry.value import scalar 19 from telemetry.value import scalar
19 from telemetry.web_perf import timeline_based_measurement as tbm_module 20 from telemetry.web_perf import timeline_based_measurement as tbm_module
20 from telemetry.web_perf import timeline_interaction_record as tir_module 21 from telemetry.web_perf import timeline_interaction_record as tir_module
21 from telemetry.web_perf.metrics import timeline_based_metric 22 from telemetry.web_perf.metrics import timeline_based_metric
22 23
23 24
24 class FakeFastMetric(timeline_based_metric.TimelineBasedMetric): 25 class FakeFastMetric(timeline_based_metric.TimelineBasedMetric):
25 26
26 def AddResults(self, model, renderer_thread, interaction_records, results): 27 def AddResults(self, model, renderer_thread, interaction_records, results):
27 results.AddValue(scalar.ScalarValue( 28 results.AddValue(scalar.ScalarValue(
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 action_runner.TapElement('#jank-button') 195 action_runner.TapElement('#jank-button')
195 action_runner.WaitForJavaScriptCondition('window.jankScriptDone') 196 action_runner.WaitForJavaScriptCondition('window.jankScriptDone')
196 if self._trigger_slow: 197 if self._trigger_slow:
197 action_runner.TapElement('#slow-button') 198 action_runner.TapElement('#slow-button')
198 action_runner.WaitForJavaScriptCondition('window.slowScriptDone') 199 action_runner.WaitForJavaScriptCondition('window.slowScriptDone')
199 200
200 201
201 class TimelineBasedMeasurementTest(page_test_test_case.PageTestTestCase): 202 class TimelineBasedMeasurementTest(page_test_test_case.PageTestTestCase):
202 203
203 def setUp(self): 204 def setUp(self):
205 browser_test_case.teardown_browser()
204 self._options = options_for_unittests.GetCopy() 206 self._options = options_for_unittests.GetCopy()
205 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF 207 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
206 208
209 # This test is flaky when run in parallel on the mac: crbug.com/426676
210 @benchmark.Disabled('mac')
207 def testSmoothnessTimelineBasedMeasurementForSmoke(self): 211 def testSmoothnessTimelineBasedMeasurementForSmoke(self):
208 ps = self.CreateEmptyPageSet() 212 ps = self.CreateEmptyPageSet()
209 ps.AddPage(TestTimelinebasedMeasurementPage( 213 ps.AddPage(TestTimelinebasedMeasurementPage(
210 ps, ps.base_dir, trigger_animation=True)) 214 ps, ps.base_dir, trigger_animation=True))
211 215
212 measurement = tbm_module.TimelineBasedMeasurement() 216 measurement = tbm_module.TimelineBasedMeasurement()
213 results = self.RunMeasurement(measurement, ps, 217 results = self.RunMeasurement(measurement, ps,
214 options=self._options) 218 options=self._options)
215 219
216 self.assertEquals(0, len(results.failures)) 220 self.assertEquals(0, len(results.failures))
217 v = results.FindAllPageSpecificValuesNamed( 221 v = results.FindAllPageSpecificValuesNamed(
218 'CenterAnimation-frame_time_discrepancy') 222 'CenterAnimation-frame_time_discrepancy')
219 self.assertEquals(len(v), 1) 223 self.assertEquals(len(v), 1)
220 v = results.FindAllPageSpecificValuesNamed( 224 v = results.FindAllPageSpecificValuesNamed(
221 'DrawerAnimation-frame_time_discrepancy') 225 'DrawerAnimation-frame_time_discrepancy')
222 self.assertEquals(len(v), 1) 226 self.assertEquals(len(v), 1)
223 227
228 # This test is flaky when run in parallel on the mac: crbug.com/426676
229 @benchmark.Disabled('mac')
224 def testFastTimelineBasedMeasurementForSmoke(self): 230 def testFastTimelineBasedMeasurementForSmoke(self):
225 ps = self.CreateEmptyPageSet() 231 ps = self.CreateEmptyPageSet()
226 ps.AddPage(TestTimelinebasedMeasurementPage( 232 ps.AddPage(TestTimelinebasedMeasurementPage(
227 ps, ps.base_dir, trigger_slow=True)) 233 ps, ps.base_dir, trigger_slow=True))
228 234
229 measurement = tbm_module.TimelineBasedMeasurement() 235 measurement = tbm_module.TimelineBasedMeasurement()
230 results = self.RunMeasurement(measurement, ps, options=self._options) 236 results = self.RunMeasurement(measurement, ps, options=self._options)
231 237
232 self.assertEquals([], results.failures) 238 self.assertEquals([], results.failures)
233 expected_names = set([ 239 expected_names = set([
(...skipping 15 matching lines...) Expand all
249 self.assertEquals( 255 self.assertEquals(
250 expected_names, set(v.name for v in results.all_page_specific_values)) 256 expected_names, set(v.name for v in results.all_page_specific_values))
251 257
252 # In interaction_enabled_page.html, the "slow" interaction executes 258 # In interaction_enabled_page.html, the "slow" interaction executes
253 # a loop with window.performance.now() to wait 200ms. 259 # a loop with window.performance.now() to wait 200ms.
254 # fast-duration measures wall time so its value should be at least 200ms. 260 # fast-duration measures wall time so its value should be at least 200ms.
255 v = results.FindAllPageSpecificValuesNamed('SlowThreadJsRun-fast-duration') 261 v = results.FindAllPageSpecificValuesNamed('SlowThreadJsRun-fast-duration')
256 self.assertGreaterEqual(v[0].value, 200.0) 262 self.assertGreaterEqual(v[0].value, 200.0)
257 263
258 # Disabled since mainthread_jank metric is not supported on windows platform. 264 # Disabled since mainthread_jank metric is not supported on windows platform.
259 @benchmark.Disabled('win') 265 # Also, flaky on the mac when run in parallel: crbug.com/426676
266 @benchmark.Disabled('win', 'mac')
260 def testMainthreadJankTimelineBasedMeasurement(self): 267 def testMainthreadJankTimelineBasedMeasurement(self):
261 ps = self.CreateEmptyPageSet() 268 ps = self.CreateEmptyPageSet()
262 ps.AddPage(TestTimelinebasedMeasurementPage( 269 ps.AddPage(TestTimelinebasedMeasurementPage(
263 ps, ps.base_dir, trigger_jank=True)) 270 ps, ps.base_dir, trigger_jank=True))
264 271
265 measurement = tbm_module.TimelineBasedMeasurement() 272 measurement = tbm_module.TimelineBasedMeasurement()
266 results = self.RunMeasurement(measurement, ps, 273 results = self.RunMeasurement(measurement, ps,
267 options=self._options) 274 options=self._options)
268 self.assertEquals(0, len(results.failures)) 275 self.assertEquals(0, len(results.failures))
269 276
270 # In interaction_enabled_page.html, we create a jank loop based on 277 # In interaction_enabled_page.html, we create a jank loop based on
271 # window.performance.now() (basically loop for x milliseconds). 278 # window.performance.now() (basically loop for x milliseconds).
272 # Since window.performance.now() uses wall-time instead of thread time, 279 # Since window.performance.now() uses wall-time instead of thread time,
273 # we only assert the biggest jank > 50ms here to account for the fact 280 # we only assert the biggest jank > 50ms here to account for the fact
274 # that the browser may deschedule during the jank loop. 281 # that the browser may deschedule during the jank loop.
275 v = results.FindAllPageSpecificValuesNamed( 282 v = results.FindAllPageSpecificValuesNamed(
276 'JankThreadJSRun-responsive-biggest_jank_thread_time') 283 'JankThreadJSRun-responsive-biggest_jank_thread_time')
277 self.assertGreaterEqual(v[0].value, 50) 284 self.assertGreaterEqual(v[0].value, 50)
278 285
279 v = results.FindAllPageSpecificValuesNamed( 286 v = results.FindAllPageSpecificValuesNamed(
280 'JankThreadJSRun-responsive-total_big_jank_thread_time') 287 'JankThreadJSRun-responsive-total_big_jank_thread_time')
281 self.assertGreaterEqual(v[0].value, 50) 288 self.assertGreaterEqual(v[0].value, 50)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/unittest/run_tests_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698