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
.unittest_util
import options_for_unittests
8 from telemetry
.unittest_util
import page_test_test_case
9 from telemetry
.web_perf
.metrics
.layout
import LayoutMetric
11 from measurements
import smoothness_unittest
12 from measurements
import thread_times
13 from metrics
import timeline
16 class ThreadTimesUnitTest(page_test_test_case
.PageTestTestCase
):
18 self
._options
= options_for_unittests
.GetCopy()
19 self
._options
.browser_options
.wpr_mode
= wpr_modes
.WPR_OFF
21 @decorators.Disabled('android')
23 ps
= self
.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
24 measurement
= thread_times
.ThreadTimes()
25 timeline_options
= self
._options
26 results
= self
.RunMeasurement(measurement
, ps
, options
= timeline_options
)
27 self
.assertEquals(0, len(results
.failures
))
29 for category
in timeline
.TimelineThreadCategories
.values():
30 cpu_time_name
= timeline
.ThreadCpuTimeResultName(category
)
31 cpu_time
= results
.FindAllPageSpecificValuesNamed(cpu_time_name
)
32 self
.assertEquals(len(cpu_time
), 1)
34 for short_name
in LayoutMetric
.EVENTS
.itervalues():
35 self
.assertEquals(len(results
.FindAllPageSpecificValuesNamed(
36 short_name
+ '_avg')), 1)
37 self
.assertEquals(len(results
.FindAllPageSpecificValuesNamed(
38 short_name
+ '_stddev')), 1)
40 def testBasicForPageWithNoGesture(self
):
41 ps
= self
.CreateEmptyPageSet()
42 ps
.AddUserStory(smoothness_unittest
.AnimatedPage(ps
))
44 measurement
= thread_times
.ThreadTimes()
45 timeline_options
= self
._options
46 results
= self
.RunMeasurement(measurement
, ps
, options
= timeline_options
)
47 self
.assertEquals(0, len(results
.failures
))
49 for category
in timeline
.TimelineThreadCategories
.values():
50 cpu_time_name
= timeline
.ThreadCpuTimeResultName(category
)
51 cpu_time
= results
.FindAllPageSpecificValuesNamed(cpu_time_name
)
52 self
.assertEquals(len(cpu_time
), 1)
54 def testWithSilkDetails(self
):
55 ps
= self
.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
56 measurement
= thread_times
.ThreadTimes(report_silk_details
=True)
57 results
= self
.RunMeasurement(measurement
, ps
, options
= self
._options
)
58 self
.assertEquals(0, len(results
.failures
))
60 main_thread
= "renderer_main"
61 expected_trace_categories
= ["blink", "cc", "idle"]
62 for trace_category
in expected_trace_categories
:
63 value_name
= timeline
.ThreadDetailResultName(main_thread
, trace_category
)
64 values
= results
.FindAllPageSpecificValuesNamed(value_name
)
65 self
.assertEquals(len(values
), 1)
67 def testCleanUpTrace(self
):
68 self
.TestTracingCleanedUp(thread_times
.ThreadTimes
, self
._options
)