1 # Copyright (c) 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 return page_set.PageSet.FromDict({
14 "description": "hello",
15 "archive_path": "foo.wpr",
17 {"url": "http://www.bar.com/"},
18 {"url": "http://www.baz.com/"},
19 {"url": "http://www.foo.com/"}
21 }, os.path.dirname(__file__))
23 class NonPrintingPageMeasurementResults(
24 page_measurement_results.PageMeasurementResults):
26 super(NonPrintingPageMeasurementResults, self).__init__()
28 def _PrintPerfResult(self, *args):
31 class SummarySavingPageMeasurementResults(
32 page_measurement_results.PageMeasurementResults):
34 super(SummarySavingPageMeasurementResults, self).__init__()
37 def _PrintPerfResult(self, *args):
38 res = perf_tests_helper.PrintPerfResult(*args, print_to_stdout=False)
39 self.results.append(res)
41 class PageMeasurementResultsTest(unittest.TestCase):
43 self._page_set = _MakePageSet()
47 return self._page_set.pages
50 results = NonPrintingPageMeasurementResults()
51 results.WillMeasurePage(self.pages[0])
52 results.Add('a', 'seconds', 3)
53 results.DidMeasurePage()
55 results.WillMeasurePage(self.pages[1])
56 results.Add('a', 'seconds', 3)
57 results.DidMeasurePage()
59 results.PrintSummary()
61 values = results.FindPageSpecificValuesForPage(self.pages[0], 'a')
62 self.assertEquals(1, len(values))
64 self.assertEquals(v.name, 'a')
65 self.assertEquals(v.page, self.pages[0])
67 values = results.FindAllPageSpecificValuesNamed('a')
68 assert len(values) == 2
70 def test_url_is_invalid_value(self):
71 results = NonPrintingPageMeasurementResults()
72 results.WillMeasurePage(self.pages[0])
75 lambda: results.Add('url', 'string', 'foo'))
77 def test_value_names_that_have_been_seen(self):
78 results = NonPrintingPageMeasurementResults()
79 results.WillMeasurePage(self.pages[0])
80 results.Add('a', 'a_units', 3)
81 results.Add('b', 'b_units', 3)
82 results.AddSummaryValue(scalar.ScalarValue(None, 'c', 'c_units', 3))
83 results.DidMeasurePage()
84 self.assertEquals(set(['a', 'b', 'c']),
85 set(results.all_value_names_that_have_been_seen))
86 self.assertEquals('a_units', results.GetUnitsForValueName('a'))
87 self.assertEquals('b_units', results.GetUnitsForValueName('b'))
88 self.assertEquals('c_units', results.GetUnitsForValueName('c'))
90 def test_add_summary_value_with_page_specified(self):
91 results = NonPrintingPageMeasurementResults()
92 results.WillMeasurePage(self.pages[0])
95 lambda: results.AddSummaryValue(scalar.ScalarValue(self.pages[0],
98 def test_unit_change(self):
99 results = NonPrintingPageMeasurementResults()
100 results.WillMeasurePage(self.pages[0])
101 results.Add('a', 'seconds', 3)
102 results.DidMeasurePage()
104 results.WillMeasurePage(self.pages[1])
107 lambda: results.Add('a', 'foobgrobbers', 3))
109 self.assertEquals(['a'], results.all_value_names_that_have_been_seen)
111 def test_type_change(self):
112 results = NonPrintingPageMeasurementResults()
113 results.WillMeasurePage(self.pages[0])
114 results.Add('a', 'seconds', 3)
115 results.DidMeasurePage()
117 results.WillMeasurePage(self.pages[1])
120 lambda: results.Add('a', 'seconds', 3, data_type='histogram'))
122 def test_basic_summary_all_pages_fail(self):
123 """If all pages fail, no summary is printed."""
124 results = SummarySavingPageMeasurementResults()
125 results.WillMeasurePage(self.pages[0])
126 results.Add('a', 'seconds', 3)
127 results.DidMeasurePage()
128 results.AddFailureMessage(self.pages[0], 'message')
130 results.WillMeasurePage(self.pages[1])
131 results.Add('a', 'seconds', 7)
132 results.DidMeasurePage()
133 results.AddFailureMessage(self.pages[1], 'message')
135 results.PrintSummary()
136 self.assertEquals(results.results, [])
138 def test_get_successful_page_values_merged_no_failures(self):
139 results = SummarySavingPageMeasurementResults()
140 results.WillMeasurePage(self.pages[0])
141 results.Add('a', 'seconds', 3)
142 self.assertEquals(1, len(results.page_specific_values_for_current_page))
143 results.DidMeasurePage()
146 lambda: results.page_specific_values_for_current_page)
148 def test_get_all_values_for_successful_pages(self):
149 results = SummarySavingPageMeasurementResults()
150 results.WillMeasurePage(self.pages[0])
151 results.Add('a', 'seconds', 3)
152 results.DidMeasurePage()
154 results.WillMeasurePage(self.pages[1])
155 results.Add('a', 'seconds', 3)
156 results.DidMeasurePage()
158 results.WillMeasurePage(self.pages[2])
159 results.Add('a', 'seconds', 3)
160 results.DidMeasurePage()
162 values = results.all_page_specific_values
163 self.assertEquals(3, len(values))
164 self.assertEquals([self.pages[0], self.pages[1], self.pages[2]],
165 [v.page for v in values])
167 def test_get_all_values_for_successful_pages_one_page_fails(self):
168 results = SummarySavingPageMeasurementResults()
169 results.WillMeasurePage(self.pages[0])
170 results.Add('a', 'seconds', 3)
171 results.DidMeasurePage()
173 results.WillMeasurePage(self.pages[1])
174 results.AddFailureMessage(self.pages[1], "Failure")
175 results.DidMeasurePage()
177 results.WillMeasurePage(self.pages[2])
178 results.Add('a', 'seconds', 3)
179 results.DidMeasurePage()
181 values = results.all_page_specific_values
182 self.assertEquals(2, len(values))
183 self.assertEquals([self.pages[0], self.pages[2]],
184 [v.page for v in values])