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
import decorators
6 from telemetry
.page
import page
7 from telemetry
.testing
import options_for_unittests
8 from telemetry
.testing
import page_test_test_case
9 from telemetry
.util
import wpr_modes
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
):
27 self
._options
= options_for_unittests
.GetCopy()
28 self
._options
.browser_options
.wpr_mode
= wpr_modes
.WPR_OFF
30 @decorators.Disabled('android')
32 ps
= self
.CreateStorySetFromFileInUnittestDataDir('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 @decorators.Disabled('chromeos') # crbug.com/483212
45 def testWithSilkDetails(self
):
46 ps
= self
.CreateStorySetFromFileInUnittestDataDir('scrollable_page.html')
47 measurement
= thread_times
.ThreadTimes(report_silk_details
=True)
48 results
= self
.RunMeasurement(measurement
, ps
, options
= self
._options
)
49 self
.assertEquals(0, len(results
.failures
))
51 main_thread
= "renderer_main"
52 expected_trace_categories
= ["blink", "cc", "idle"]
53 for interval
in timeline
.IntervalNames
:
54 for trace_category
in expected_trace_categories
:
55 value_name
= timeline
.ThreadDetailResultName(
56 main_thread
, interval
, trace_category
)
57 values
= results
.FindAllPageSpecificValuesNamed(value_name
)
58 self
.assertEquals(len(values
), 1)
60 def testCleanUpTrace(self
):
61 self
.TestTracingCleanedUp(thread_times
.ThreadTimes
, self
._options
)