1 # Copyright 2013 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.
8 from telemetry.page import html_page_measurement_results
9 from telemetry.page import page_set
13 ps = page_set.PageSet(file_path=os.path.dirname(__file__))
14 ps.AddPageWithDefaultRunNavigate('http://www.foo.com/')
15 ps.AddPageWithDefaultRunNavigate('http://www.bar.com/')
16 ps.AddPageWithDefaultRunNavigate('http://www.baz.com/')
20 class DeterministicHtmlPageMeasurementResults(
21 html_page_measurement_results.HtmlPageMeasurementResults):
22 def _GetBuildTime(self):
25 def _GetRevision(self):
29 # Wrap string IO with a .name property so that it behaves more like a file.
30 class StringIOFile(StringIO.StringIO):
31 name = 'fake_output_file'
34 class HtmlPageMeasurementResultsTest(unittest.TestCase):
36 def test_basic_summary(self):
37 test_page_set = _MakePageSet()
38 output_file = StringIOFile()
40 # Run the first time and verify the results are written to the HTML file.
41 results = DeterministicHtmlPageMeasurementResults(
42 output_file, 'test_name', False, False, 'browser_type')
43 results.WillMeasurePage(test_page_set.pages[0])
44 results.Add('a', 'seconds', 3)
45 results.DidMeasurePage()
46 results.AddSuccess(test_page_set.pages[0])
48 results.WillMeasurePage(test_page_set.pages[1])
49 results.Add('a', 'seconds', 7)
50 results.DidMeasurePage()
51 results.AddSuccess(test_page_set.pages[1])
53 results.PrintSummary()
56 "platform": "browser_type",
57 "buildTime": "build_time",
67 "telemetry_page_measurement_results.num_failed": {
72 "a_by_url.http://www.bar.com/": {
77 "telemetry_page_measurement_results.num_errored": {
82 "a_by_url.http://www.foo.com/": {
90 "revision": "revision"
92 self.assertEquals(expected, results.GetResults())
94 # Run the second time and verify the results are appended to the HTML file.
96 results = DeterministicHtmlPageMeasurementResults(
97 output_file, 'test_name', False, False, 'browser_type')
98 results.WillMeasurePage(test_page_set.pages[0])
99 results.Add('a', 'seconds', 4)
100 results.DidMeasurePage()
101 results.AddSuccess(test_page_set.pages[0])
103 results.WillMeasurePage(test_page_set.pages[1])
104 results.Add('a', 'seconds', 8)
105 results.DidMeasurePage()
106 results.AddSuccess(test_page_set.pages[1])
108 results.PrintSummary()
111 "platform": "browser_type",
112 "buildTime": "build_time",
122 "telemetry_page_measurement_results.num_failed": {
127 "a_by_url.http://www.bar.com/": {
132 "telemetry_page_measurement_results.num_errored": {
137 "a_by_url.http://www.foo.com/": {
145 "revision": "revision"
148 "platform": "browser_type",
149 "buildTime": "build_time",
159 "telemetry_page_measurement_results.num_failed": {
164 "a_by_url.http://www.bar.com/": {
169 "telemetry_page_measurement_results.num_errored": {
174 "a_by_url.http://www.foo.com/": {
182 "revision": "revision"
184 self.assertEquals(expected, results.GetCombinedResults())
185 last_output_len = len(output_file.getvalue())
187 # Now reset the results and verify the old ones are gone.
189 results = DeterministicHtmlPageMeasurementResults(
190 output_file, 'test_name', True, False, 'browser_type')
191 results.WillMeasurePage(test_page_set.pages[0])
192 results.Add('a', 'seconds', 5)
193 results.DidMeasurePage()
194 results.AddSuccess(test_page_set.pages[0])
196 results.WillMeasurePage(test_page_set.pages[1])
197 results.Add('a', 'seconds', 9)
198 results.DidMeasurePage()
199 results.AddSuccess(test_page_set.pages[1])
201 results.PrintSummary()
203 "platform": "browser_type",
204 "buildTime": "build_time",
214 "telemetry_page_measurement_results.num_failed": {
219 "a_by_url.http://www.bar.com/": {
224 "telemetry_page_measurement_results.num_errored": {
229 "a_by_url.http://www.foo.com/": {
237 "revision": "revision"
239 self.assertEquals(expected, results.GetCombinedResults())
240 self.assertTrue(len(output_file.getvalue()) < last_output_len)