- add sources.
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / page / page_measurement_results_unittest.py
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.
4 import os
5 import unittest
6
7 from telemetry.page import page_measurement_results
8 from telemetry.page import page_set
9 from telemetry.page import perf_tests_helper
10
11 def _MakePageSet():
12   return page_set.PageSet.FromDict({
13       "description": "hello",
14       "archive_path": "foo.wpr",
15       "pages": [
16         {"url": "http://www.foo.com/"},
17         {"url": "http://www.bar.com/"}
18         ]
19       }, os.path.dirname(__file__))
20
21 class NonPrintingPageMeasurementResults(
22     page_measurement_results.PageMeasurementResults):
23   def __init__(self):
24     super(NonPrintingPageMeasurementResults, self).__init__()
25
26   def _PrintPerfResult(self, *args):
27     pass
28
29 class SummarySavingPageMeasurementResults(
30     page_measurement_results.PageMeasurementResults):
31   def __init__(self):
32     super(SummarySavingPageMeasurementResults, self).__init__()
33     self.results = []
34
35   def _PrintPerfResult(self, *args):
36     res = perf_tests_helper.PrintPerfResult(*args, print_to_stdout=False)
37     self.results.append(res)
38
39 class PageMeasurementResultsTest(unittest.TestCase):
40   def test_basic(self):
41     test_page_set = _MakePageSet()
42
43     measurement_results = NonPrintingPageMeasurementResults()
44     measurement_results.WillMeasurePage(test_page_set.pages[0])
45     measurement_results.Add('a', 'seconds', 3)
46     measurement_results.DidMeasurePage()
47
48     measurement_results.WillMeasurePage(test_page_set.pages[1])
49     measurement_results.Add('a', 'seconds', 3)
50     measurement_results.DidMeasurePage()
51
52     measurement_results.PrintSummary()
53
54   def test_url_is_invalid_value(self):
55     test_page_set = _MakePageSet()
56
57     measurement_results = NonPrintingPageMeasurementResults()
58     measurement_results.WillMeasurePage(test_page_set.pages[0])
59     self.assertRaises(
60       AssertionError,
61       lambda: measurement_results.Add('url', 'string', 'foo'))
62
63   def test_unit_change(self):
64     test_page_set = _MakePageSet()
65
66     measurement_results = NonPrintingPageMeasurementResults()
67     measurement_results.WillMeasurePage(test_page_set.pages[0])
68     measurement_results.Add('a', 'seconds', 3)
69     measurement_results.DidMeasurePage()
70
71     measurement_results.WillMeasurePage(test_page_set.pages[1])
72     self.assertRaises(
73       AssertionError,
74       lambda: measurement_results.Add('a', 'foobgrobbers', 3))
75
76   def test_type_change(self):
77     test_page_set = _MakePageSet()
78
79     measurement_results = NonPrintingPageMeasurementResults()
80     measurement_results.WillMeasurePage(test_page_set.pages[0])
81     measurement_results.Add('a', 'seconds', 3)
82     measurement_results.DidMeasurePage()
83
84     measurement_results.WillMeasurePage(test_page_set.pages[1])
85     self.assertRaises(
86       AssertionError,
87       lambda: measurement_results.Add('a', 'seconds', 3, data_type='histogram'))
88
89   def test_basic_summary_all_pages_fail(self):
90     """If all pages fail, no summary is printed."""
91     test_page_set = _MakePageSet()
92
93     measurement_results = SummarySavingPageMeasurementResults()
94     measurement_results.WillMeasurePage(test_page_set.pages[0])
95     measurement_results.Add('a', 'seconds', 3)
96     measurement_results.DidMeasurePage()
97     measurement_results.AddFailureMessage(test_page_set.pages[0], 'message')
98
99     measurement_results.WillMeasurePage(test_page_set.pages[1])
100     measurement_results.Add('a', 'seconds', 7)
101     measurement_results.DidMeasurePage()
102     measurement_results.AddFailureMessage(test_page_set.pages[1], 'message')
103
104     measurement_results.PrintSummary()
105     self.assertEquals(measurement_results.results, [])