Support total and per-second task/threadtime timeline metrics
[chromium-blink-merge.git] / tools / perf / measurements / thread_times_unittest.py
blob3c397254b5f1e7c17bc05cb3acb73f9ccfab0f9f
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
3 # found in the LICENSE file.
5 from telemetry.core import wpr_modes
6 from telemetry import decorators
7 from telemetry.page import page
8 from telemetry.unittest_util import options_for_unittests
9 from telemetry.unittest_util import page_test_test_case
11 from measurements import thread_times
12 from metrics import timeline
15 class AnimatedPage(page.Page):
16 def __init__(self, page_set):
17 super(AnimatedPage, self).__init__(
18 url='file://animated_page.html',
19 page_set=page_set, base_dir=page_set.base_dir)
21 def RunPageInteractions(self, action_runner):
22 action_runner.Wait(.2)
25 class ThreadTimesUnitTest(page_test_test_case.PageTestTestCase):
26 def setUp(self):
27 self._options = options_for_unittests.GetCopy()
28 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
30 @decorators.Disabled('android')
31 def testBasic(self):
32 ps = self.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
33 measurement = thread_times.ThreadTimes()
34 timeline_options = self._options
35 results = self.RunMeasurement(measurement, ps, options = timeline_options)
36 self.assertFalse(len(results.failures), results.failures)
38 for interval in timeline.IntervalNames:
39 for category in timeline.TimelineThreadCategories.values():
40 cpu_time_name = timeline.ThreadCpuTimeResultName(category, interval)
41 cpu_time = results.FindAllPageSpecificValuesNamed(cpu_time_name)
42 self.assertEquals(len(cpu_time), 1)
44 def testBasicForPageWithNoGesture(self):
45 ps = self.CreateEmptyPageSet()
46 ps.AddUserStory(AnimatedPage(ps))
48 measurement = thread_times.ThreadTimes()
49 timeline_options = self._options
50 results = self.RunMeasurement(measurement, ps, options = timeline_options)
51 self.assertEquals(0, len(results.failures))
53 for interval in timeline.IntervalNames:
54 for category in timeline.TimelineThreadCategories.values():
55 cpu_time_name = timeline.ThreadCpuTimeResultName(category, interval)
56 cpu_time = results.FindAllPageSpecificValuesNamed(cpu_time_name)
57 self.assertEquals(len(cpu_time), 1)
59 @decorators.Disabled('chromeos') # crbug.com/483212
60 def testWithSilkDetails(self):
61 ps = self.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
62 measurement = thread_times.ThreadTimes(report_silk_details=True)
63 results = self.RunMeasurement(measurement, ps, options = self._options)
64 self.assertEquals(0, len(results.failures))
66 main_thread = "renderer_main"
67 expected_trace_categories = ["blink", "cc", "idle"]
68 for interval in timeline.IntervalNames:
69 for trace_category in expected_trace_categories:
70 value_name = timeline.ThreadDetailResultName(
71 main_thread, interval, trace_category)
72 values = results.FindAllPageSpecificValuesNamed(value_name)
73 self.assertEquals(len(values), 1)
75 def testCleanUpTrace(self):
76 self.TestTracingCleanedUp(thread_times.ThreadTimes, self._options)