[Telemetry] Update copyright header style.
[chromium-blink-merge.git] / tools / telemetry / telemetry / page / page_measurement_results_unittest.py
blobd30763e8e9d3b83ddb94ad432e6b55d5321958bf
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.
4 import os
5 import unittest
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
12 def _MakePageSet():
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/")
17 return ps
19 class NonPrintingPageMeasurementResults(
20 page_measurement_results.PageMeasurementResults):
21 def __init__(self):
22 super(NonPrintingPageMeasurementResults, self).__init__()
24 def _PrintPerfResult(self, *args):
25 pass
27 class SummarySavingPageMeasurementResults(
28 page_measurement_results.PageMeasurementResults):
29 def __init__(self):
30 super(SummarySavingPageMeasurementResults, self).__init__()
31 self.results = []
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):
38 def setUp(self):
39 self._page_set = _MakePageSet()
41 @property
42 def pages(self):
43 return self._page_set.pages
45 def test_basic(self):
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))
59 v = values[0]
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])
69 self.assertRaises(
70 AssertionError,
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])
89 self.assertRaises(
90 AssertionError,
91 lambda: results.AddSummaryValue(scalar.ScalarValue(self.pages[0],
92 'a', 'units', 3)))
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])
101 self.assertRaises(
102 AssertionError,
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])
114 self.assertRaises(
115 AssertionError,
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()
140 self.assertRaises(
141 AssertionError,
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])