1 # Copyright 2012 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.
7 from telemetry
.page
import page_measurement_results
8 from telemetry
.page
import page_set
9 from telemetry
.page
import perf_tests_helper
10 from telemetry
.value
import scalar
13 ps
= page_set
.PageSet(file_path
=os
.path
.dirname(__file__
))
14 ps
.AddPageWithDefaultRunNavigate("http://www.bar.com/")
15 ps
.AddPageWithDefaultRunNavigate("http://www.baz.com/")
16 ps
.AddPageWithDefaultRunNavigate("http://www.foo.com/")
19 class NonPrintingPageMeasurementResults(
20 page_measurement_results
.PageMeasurementResults
):
22 super(NonPrintingPageMeasurementResults
, self
).__init
__()
24 def _PrintPerfResult(self
, *args
):
27 class SummarySavingPageMeasurementResults(
28 page_measurement_results
.PageMeasurementResults
):
30 super(SummarySavingPageMeasurementResults
, self
).__init
__()
33 def _PrintPerfResult(self
, *args
):
34 res
= perf_tests_helper
.PrintPerfResult(*args
, print_to_stdout
=False)
35 self
.results
.append(res
)
37 class PageMeasurementResultsTest(unittest
.TestCase
):
39 self
._page
_set
= _MakePageSet()
43 return self
._page
_set
.pages
46 results
= NonPrintingPageMeasurementResults()
47 results
.WillMeasurePage(self
.pages
[0])
48 results
.Add('a', 'seconds', 3)
49 results
.DidMeasurePage()
51 results
.WillMeasurePage(self
.pages
[1])
52 results
.Add('a', 'seconds', 3)
53 results
.DidMeasurePage()
55 results
.PrintSummary()
57 values
= results
.FindPageSpecificValuesForPage(self
.pages
[0], 'a')
58 self
.assertEquals(1, len(values
))
60 self
.assertEquals(v
.name
, 'a')
61 self
.assertEquals(v
.page
, self
.pages
[0])
63 values
= results
.FindAllPageSpecificValuesNamed('a')
64 assert len(values
) == 2
66 def test_url_is_invalid_value(self
):
67 results
= NonPrintingPageMeasurementResults()
68 results
.WillMeasurePage(self
.pages
[0])
71 lambda: results
.Add('url', 'string', 'foo'))
73 def test_value_names_that_have_been_seen(self
):
74 results
= NonPrintingPageMeasurementResults()
75 results
.WillMeasurePage(self
.pages
[0])
76 results
.Add('a', 'a_units', 3)
77 results
.Add('b', 'b_units', 3)
78 results
.AddSummaryValue(scalar
.ScalarValue(None, 'c', 'c_units', 3))
79 results
.DidMeasurePage()
80 self
.assertEquals(set(['a', 'b', 'c']),
81 set(results
.all_value_names_that_have_been_seen
))
82 self
.assertEquals('a_units', results
.GetUnitsForValueName('a'))
83 self
.assertEquals('b_units', results
.GetUnitsForValueName('b'))
84 self
.assertEquals('c_units', results
.GetUnitsForValueName('c'))
86 def test_add_summary_value_with_page_specified(self
):
87 results
= NonPrintingPageMeasurementResults()
88 results
.WillMeasurePage(self
.pages
[0])
91 lambda: results
.AddSummaryValue(scalar
.ScalarValue(self
.pages
[0],
94 def test_unit_change(self
):
95 results
= NonPrintingPageMeasurementResults()
96 results
.WillMeasurePage(self
.pages
[0])
97 results
.Add('a', 'seconds', 3)
98 results
.DidMeasurePage()
100 results
.WillMeasurePage(self
.pages
[1])
103 lambda: results
.Add('a', 'foobgrobbers', 3))
105 self
.assertEquals(['a'], results
.all_value_names_that_have_been_seen
)
107 def test_type_change(self
):
108 results
= NonPrintingPageMeasurementResults()
109 results
.WillMeasurePage(self
.pages
[0])
110 results
.Add('a', 'seconds', 3)
111 results
.DidMeasurePage()
113 results
.WillMeasurePage(self
.pages
[1])
116 lambda: results
.Add('a', 'seconds', 3, data_type
='histogram'))
118 def test_basic_summary_all_pages_fail(self
):
119 """If all pages fail, no summary is printed."""
120 results
= SummarySavingPageMeasurementResults()
121 results
.WillMeasurePage(self
.pages
[0])
122 results
.Add('a', 'seconds', 3)
123 results
.DidMeasurePage()
124 results
.AddFailureMessage(self
.pages
[0], 'message')
126 results
.WillMeasurePage(self
.pages
[1])
127 results
.Add('a', 'seconds', 7)
128 results
.DidMeasurePage()
129 results
.AddFailureMessage(self
.pages
[1], 'message')
131 results
.PrintSummary()
132 self
.assertEquals(results
.results
, [])
134 def test_get_successful_page_values_merged_no_failures(self
):
135 results
= SummarySavingPageMeasurementResults()
136 results
.WillMeasurePage(self
.pages
[0])
137 results
.Add('a', 'seconds', 3)
138 self
.assertEquals(1, len(results
.page_specific_values_for_current_page
))
139 results
.DidMeasurePage()
142 lambda: results
.page_specific_values_for_current_page
)
144 def test_get_all_values_for_successful_pages(self
):
145 results
= SummarySavingPageMeasurementResults()
146 results
.WillMeasurePage(self
.pages
[0])
147 results
.Add('a', 'seconds', 3)
148 results
.DidMeasurePage()
150 results
.WillMeasurePage(self
.pages
[1])
151 results
.Add('a', 'seconds', 3)
152 results
.DidMeasurePage()
154 results
.WillMeasurePage(self
.pages
[2])
155 results
.Add('a', 'seconds', 3)
156 results
.DidMeasurePage()
158 values
= results
.all_page_specific_values
159 self
.assertEquals(3, len(values
))
160 self
.assertEquals([self
.pages
[0], self
.pages
[1], self
.pages
[2]],
161 [v
.page
for v
in values
])
163 def test_get_all_values_for_successful_pages_one_page_fails(self
):
164 results
= SummarySavingPageMeasurementResults()
165 results
.WillMeasurePage(self
.pages
[0])
166 results
.Add('a', 'seconds', 3)
167 results
.DidMeasurePage()
169 results
.WillMeasurePage(self
.pages
[1])
170 results
.AddFailureMessage(self
.pages
[1], "Failure")
171 results
.DidMeasurePage()
173 results
.WillMeasurePage(self
.pages
[2])
174 results
.Add('a', 'seconds', 3)
175 results
.DidMeasurePage()
177 values
= results
.all_page_specific_values
178 self
.assertEquals(2, len(values
))
179 self
.assertEquals([self
.pages
[0], self
.pages
[2]],
180 [v
.page
for v
in values
])