OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import json | 5 import json |
6 import os | 6 import os |
7 import StringIO | 7 import StringIO |
8 import unittest | 8 import unittest |
9 | 9 |
10 from telemetry import benchmark | 10 from telemetry import benchmark |
11 from telemetry import story | 11 from telemetry import story |
12 from telemetry.internal.results import chart_json_output_formatter | 12 from telemetry.internal.results import chart_json_output_formatter |
13 from telemetry.internal.results import page_test_results | 13 from telemetry.internal.results import page_test_results |
14 from telemetry import page as page_module | 14 from telemetry import page as page_module |
| 15 from telemetry.value import improvement_direction |
15 from telemetry.value import list_of_scalar_values | 16 from telemetry.value import list_of_scalar_values |
16 from telemetry.value import scalar | 17 from telemetry.value import scalar |
17 | 18 |
18 | 19 |
19 def _MakeStorySet(): | 20 def _MakeStorySet(): |
20 ps = story.StorySet(base_dir=os.path.dirname(__file__)) | 21 ps = story.StorySet(base_dir=os.path.dirname(__file__)) |
21 ps.AddStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) | 22 ps.AddStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) |
22 ps.AddStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) | 23 ps.AddStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) |
23 return ps | 24 return ps |
24 | 25 |
25 class ChartJsonTest(unittest.TestCase): | 26 class ChartJsonTest(unittest.TestCase): |
26 def setUp(self): | 27 def setUp(self): |
27 self._output = StringIO.StringIO() | 28 self._output = StringIO.StringIO() |
28 self._story_set = _MakeStorySet() | 29 self._story_set = _MakeStorySet() |
29 self._benchmark_metadata = benchmark.BenchmarkMetadata( | 30 self._benchmark_metadata = benchmark.BenchmarkMetadata( |
30 'benchmark_name', 'benchmark_description') | 31 'benchmark_name', 'benchmark_description') |
31 self._formatter = chart_json_output_formatter.ChartJsonOutputFormatter( | 32 self._formatter = chart_json_output_formatter.ChartJsonOutputFormatter( |
32 self._output, self._benchmark_metadata) | 33 self._output, self._benchmark_metadata) |
33 | 34 |
34 def testOutputAndParse(self): | 35 def testOutputAndParse(self): |
35 results = page_test_results.PageTestResults() | 36 results = page_test_results.PageTestResults() |
36 | 37 |
37 self._output.truncate(0) | 38 self._output.truncate(0) |
38 | 39 |
39 results.WillRunPage(self._story_set[0]) | 40 results.WillRunPage(self._story_set[0]) |
40 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3) | 41 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3, |
| 42 improvement_direction=improvement_direction.DOWN) |
41 results.AddValue(v0) | 43 results.AddValue(v0) |
42 results.DidRunPage(self._story_set[0]) | 44 results.DidRunPage(self._story_set[0]) |
43 | 45 |
44 self._formatter.Format(results) | 46 self._formatter.Format(results) |
45 d = json.loads(self._output.getvalue()) | 47 d = json.loads(self._output.getvalue()) |
46 self.assertIn('foo', d['charts']) | 48 self.assertIn('foo', d['charts']) |
47 | 49 |
48 def testAsChartDictSerializable(self): | 50 def testAsChartDictSerializable(self): |
49 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 51 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
| 52 improvement_direction=improvement_direction.DOWN) |
50 page_specific_values = [v0] | 53 page_specific_values = [v0] |
51 summary_values = [] | 54 summary_values = [] |
52 | 55 |
53 d = chart_json_output_formatter.ResultsAsChartDict( | 56 d = chart_json_output_formatter.ResultsAsChartDict( |
54 self._benchmark_metadata, | 57 self._benchmark_metadata, |
55 page_specific_values, | 58 page_specific_values, |
56 summary_values) | 59 summary_values) |
57 json.dumps(d) | 60 json.dumps(d) |
58 | 61 |
59 def testAsChartDictBaseKeys(self): | 62 def testAsChartDictBaseKeys(self): |
(...skipping 17 matching lines...) Expand all Loading... |
77 summary_values = [] | 80 summary_values = [] |
78 | 81 |
79 d = chart_json_output_formatter.ResultsAsChartDict( | 82 d = chart_json_output_formatter.ResultsAsChartDict( |
80 benchmark.BenchmarkMetadata('benchmark_name', ''), | 83 benchmark.BenchmarkMetadata('benchmark_name', ''), |
81 page_specific_values, | 84 page_specific_values, |
82 summary_values) | 85 summary_values) |
83 | 86 |
84 self.assertEquals('', d['benchmark_metadata']['description']) | 87 self.assertEquals('', d['benchmark_metadata']['description']) |
85 | 88 |
86 def testAsChartDictPageSpecificValuesSamePage(self): | 89 def testAsChartDictPageSpecificValuesSamePage(self): |
87 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 90 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
88 v1 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 4) | 91 improvement_direction=improvement_direction.DOWN) |
| 92 v1 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 4, |
| 93 improvement_direction=improvement_direction.DOWN) |
89 page_specific_values = [v0, v1] | 94 page_specific_values = [v0, v1] |
90 summary_values = [] | 95 summary_values = [] |
91 | 96 |
92 d = chart_json_output_formatter.ResultsAsChartDict( | 97 d = chart_json_output_formatter.ResultsAsChartDict( |
93 self._benchmark_metadata, | 98 self._benchmark_metadata, |
94 page_specific_values, | 99 page_specific_values, |
95 summary_values) | 100 summary_values) |
96 | 101 |
97 self.assertTrue('foo' in d['charts']) | 102 self.assertTrue('foo' in d['charts']) |
98 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 103 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
99 | 104 |
100 def testAsChartDictPageSpecificValuesAndComputedSummaryWithTraceName(self): | 105 def testAsChartDictPageSpecificValuesAndComputedSummaryWithTraceName(self): |
101 v0 = scalar.ScalarValue(self._story_set[0], 'foo.bar', 'seconds', 3) | 106 v0 = scalar.ScalarValue(self._story_set[0], 'foo.bar', 'seconds', 3, |
102 v1 = scalar.ScalarValue(self._story_set[1], 'foo.bar', 'seconds', 4) | 107 improvement_direction=improvement_direction.DOWN) |
| 108 v1 = scalar.ScalarValue(self._story_set[1], 'foo.bar', 'seconds', 4, |
| 109 improvement_direction=improvement_direction.DOWN) |
103 page_specific_values = [v0, v1] | 110 page_specific_values = [v0, v1] |
104 summary_values = [] | 111 summary_values = [] |
105 | 112 |
106 d = chart_json_output_formatter.ResultsAsChartDict( | 113 d = chart_json_output_formatter.ResultsAsChartDict( |
107 self._benchmark_metadata, | 114 self._benchmark_metadata, |
108 page_specific_values, | 115 page_specific_values, |
109 summary_values) | 116 summary_values) |
110 | 117 |
111 self.assertTrue('foo' in d['charts']) | 118 self.assertTrue('foo' in d['charts']) |
112 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 119 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
113 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) | 120 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) |
114 self.assertTrue('bar' in d['charts']['foo']) | 121 self.assertTrue('bar' in d['charts']['foo']) |
115 | 122 |
116 def testAsChartDictPageSpecificValuesAndComputedSummaryWithoutTraceName(self): | 123 def testAsChartDictPageSpecificValuesAndComputedSummaryWithoutTraceName(self): |
117 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 124 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
118 v1 = scalar.ScalarValue(self._story_set[1], 'foo', 'seconds', 4) | 125 improvement_direction=improvement_direction.DOWN) |
| 126 v1 = scalar.ScalarValue(self._story_set[1], 'foo', 'seconds', 4, |
| 127 improvement_direction=improvement_direction.DOWN) |
119 page_specific_values = [v0, v1] | 128 page_specific_values = [v0, v1] |
120 summary_values = [] | 129 summary_values = [] |
121 | 130 |
122 d = chart_json_output_formatter.ResultsAsChartDict( | 131 d = chart_json_output_formatter.ResultsAsChartDict( |
123 self._benchmark_metadata, | 132 self._benchmark_metadata, |
124 page_specific_values, | 133 page_specific_values, |
125 summary_values) | 134 summary_values) |
126 | 135 |
127 self.assertTrue('foo' in d['charts']) | 136 self.assertTrue('foo' in d['charts']) |
128 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 137 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
129 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) | 138 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) |
130 self.assertTrue('summary' in d['charts']['foo']) | 139 self.assertTrue('summary' in d['charts']['foo']) |
131 | 140 |
132 def testAsChartDictSummaryValueWithTraceName(self): | 141 def testAsChartDictSummaryValueWithTraceName(self): |
133 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo.bar', 'seconds', | 142 v0 = list_of_scalar_values.ListOfScalarValues( |
134 [3, 4]) | 143 None, 'foo.bar', 'seconds', [3, 4], |
| 144 improvement_direction=improvement_direction.DOWN) |
135 page_specific_values = [] | 145 page_specific_values = [] |
136 summary_values = [v0] | 146 summary_values = [v0] |
137 | 147 |
138 d = chart_json_output_formatter.ResultsAsChartDict( | 148 d = chart_json_output_formatter.ResultsAsChartDict( |
139 self._benchmark_metadata, | 149 self._benchmark_metadata, |
140 page_specific_values, | 150 page_specific_values, |
141 summary_values) | 151 summary_values) |
142 | 152 |
143 self.assertTrue('bar' in d['charts']['foo']) | 153 self.assertTrue('bar' in d['charts']['foo']) |
144 | 154 |
145 def testAsChartDictSummaryValueWithoutTraceName(self): | 155 def testAsChartDictSummaryValueWithoutTraceName(self): |
146 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo', 'seconds', | 156 v0 = list_of_scalar_values.ListOfScalarValues( |
147 [3, 4]) | 157 None, 'foo', 'seconds', [3, 4], |
| 158 improvement_direction=improvement_direction.DOWN) |
148 page_specific_values = [] | 159 page_specific_values = [] |
149 summary_values = [v0] | 160 summary_values = [v0] |
150 | 161 |
151 d = chart_json_output_formatter.ResultsAsChartDict( | 162 d = chart_json_output_formatter.ResultsAsChartDict( |
152 self._benchmark_metadata, | 163 self._benchmark_metadata, |
153 page_specific_values, | 164 page_specific_values, |
154 summary_values) | 165 summary_values) |
155 | 166 |
156 self.assertTrue('summary' in d['charts']['foo']) | 167 self.assertTrue('summary' in d['charts']['foo']) |
157 | 168 |
158 def testAsChartDictValueSmokeTest(self): | 169 def testAsChartDictValueSmokeTest(self): |
159 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo.bar', 'seconds', | 170 v0 = list_of_scalar_values.ListOfScalarValues( |
160 [3, 4]) | 171 None, 'foo.bar', 'seconds', [3, 4], |
| 172 improvement_direction=improvement_direction.DOWN) |
161 page_specific_values = [] | 173 page_specific_values = [] |
162 summary_values = [v0] | 174 summary_values = [v0] |
163 | 175 |
164 d = chart_json_output_formatter.ResultsAsChartDict( | 176 d = chart_json_output_formatter.ResultsAsChartDict( |
165 self._benchmark_metadata, | 177 self._benchmark_metadata, |
166 page_specific_values, | 178 page_specific_values, |
167 summary_values) | 179 summary_values) |
168 | 180 |
169 self.assertEquals(d['charts']['foo']['bar']['values'], [3, 4]) | 181 self.assertEquals(d['charts']['foo']['bar']['values'], [3, 4]) |
OLD | NEW |