OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 import os | 4 import os |
5 import StringIO | 5 import StringIO |
6 import unittest | 6 import unittest |
7 | 7 |
8 from telemetry.page import html_page_measurement_results | 8 from telemetry.page import html_page_measurement_results |
9 from telemetry.page import page_set | 9 from telemetry.page import page_set |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 def test_basic_summary(self): | 45 def test_basic_summary(self): |
46 test_page_set = _MakePageSet() | 46 test_page_set = _MakePageSet() |
47 output_file = StringIOFile() | 47 output_file = StringIOFile() |
48 | 48 |
49 # Run the first time and verify the results are written to the HTML file. | 49 # Run the first time and verify the results are written to the HTML file. |
50 results = DeterministicHtmlPageMeasurementResults( | 50 results = DeterministicHtmlPageMeasurementResults( |
51 output_file, 'test_name', False, False, 'browser_type') | 51 output_file, 'test_name', False, False, 'browser_type') |
52 results.WillMeasurePage(test_page_set.pages[0]) | 52 results.WillMeasurePage(test_page_set.pages[0]) |
53 results.Add('a', 'seconds', 3) | 53 results.Add('a', 'seconds', 3) |
54 results.DidMeasurePage() | 54 results.DidMeasurePage() |
| 55 results.AddSuccess(test_page_set.pages[0]) |
| 56 |
55 results.WillMeasurePage(test_page_set.pages[1]) | 57 results.WillMeasurePage(test_page_set.pages[1]) |
56 results.Add('a', 'seconds', 7) | 58 results.Add('a', 'seconds', 7) |
57 results.DidMeasurePage() | 59 results.DidMeasurePage() |
| 60 results.AddSuccess(test_page_set.pages[1]) |
58 | 61 |
59 results.PrintSummary() | 62 results.PrintSummary() |
60 expected = ( | 63 results.GetResults() |
61 '<script id="results-json" type="application/json">' | 64 expected = { |
62 '[{' | 65 "platform": "browser_type", |
63 '"platform": "browser_type", ' | 66 "buildTime": "build_time", |
64 '"buildTime": "build_time", ' | 67 "label": None, |
65 '"label": null, ' | 68 "tests": { |
66 '"tests": {' | 69 "test_name": { |
67 '"test_name": {' | 70 "metrics": { |
68 '"metrics": {' | 71 "a": { |
69 '"a": {' | 72 "current": [3, 7], |
70 '"current": [3, 7], ' | 73 "units": "seconds", |
71 '"units": "seconds", ' | 74 "important": True |
72 '"important": true' | 75 }, |
73 '}, ' | 76 "telemetry_page_measurement_results.num_failed": { |
74 '"telemetry_page_measurement_results.num_failed": {' | 77 "current": [0], |
75 '"current": [0], ' | 78 "units": "count", |
76 '"units": "count", ' | 79 "important": False |
77 '"important": false' | 80 }, |
78 '}, ' | 81 "a_by_url.http://www.bar.com/": { |
79 '"a_by_url.http://www.bar.com/": {' | 82 "current": [7], |
80 '"current": [7], ' | 83 "units": "seconds", |
81 '"units": "seconds", ' | 84 "important": False |
82 '"important": false' | 85 }, |
83 '}, ' | 86 "telemetry_page_measurement_results.num_errored": { |
84 '"telemetry_page_measurement_results.num_errored": {' | 87 "current": [0], |
85 '"current": [0], ' | 88 "units": "count", |
86 '"units": "count", ' | 89 "important": False |
87 '"important": false' | 90 }, |
88 '}, ' | 91 "a_by_url.http://www.foo.com/": { |
89 '"a_by_url.http://www.foo.com/": {' | 92 "current": [3], |
90 '"current": [3], ' | 93 "units": "seconds", |
91 '"units": "seconds", ' | 94 "important": False |
92 '"important": false' | 95 } |
93 '}' | 96 } |
94 '}' | 97 } |
95 '}' | 98 }, |
96 '}, ' | 99 "revision": "revision" |
97 '"revision": "revision"' | 100 } |
98 '}]' | 101 self.assertEquals(expected, results.GetResults()) |
99 '</script>') | |
100 self.assertIn(expected, output_file.getvalue()) | |
101 | 102 |
102 # Run the second time and verify the results are appended to the HTML file. | 103 # Run the second time and verify the results are appended to the HTML file. |
103 output_file.seek(0) | 104 output_file.seek(0) |
104 results = DeterministicHtmlPageMeasurementResults( | 105 results = DeterministicHtmlPageMeasurementResults( |
105 output_file, 'test_name', False, False, 'browser_type') | 106 output_file, 'test_name', False, False, 'browser_type') |
106 results.WillMeasurePage(test_page_set.pages[0]) | 107 results.WillMeasurePage(test_page_set.pages[0]) |
107 results.Add('a', 'seconds', 4) | 108 results.Add('a', 'seconds', 4) |
108 results.DidMeasurePage() | 109 results.DidMeasurePage() |
| 110 results.AddSuccess(test_page_set.pages[0]) |
| 111 |
109 results.WillMeasurePage(test_page_set.pages[1]) | 112 results.WillMeasurePage(test_page_set.pages[1]) |
110 results.Add('a', 'seconds', 8) | 113 results.Add('a', 'seconds', 8) |
111 results.DidMeasurePage() | 114 results.DidMeasurePage() |
| 115 results.AddSuccess(test_page_set.pages[1]) |
112 | 116 |
113 results.PrintSummary() | 117 results.PrintSummary() |
114 expected = ( | 118 expected = [ |
115 '<script id="results-json" type="application/json">' | 119 { |
116 '[{' | 120 "platform": "browser_type", |
117 '"platform": "browser_type", ' | 121 "buildTime": "build_time", |
118 '"buildTime": "build_time", ' | 122 "label": None, |
119 '"revision": "revision", ' | 123 "tests": { |
120 '"tests": {' | 124 "test_name": { |
121 '"test_name": {' | 125 "metrics": { |
122 '"metrics": {' | 126 "a": { |
123 '"a": {' | 127 "current": [3, 7], |
124 '"current": [3, 7], ' | 128 "units": "seconds", |
125 '"units": "seconds", ' | 129 "important": True |
126 '"important": true' | 130 }, |
127 '}, ' | 131 "telemetry_page_measurement_results.num_failed": { |
128 '"telemetry_page_measurement_results.num_failed": {' | 132 "current": [0], |
129 '"current": [0], ' | 133 "units": "count", |
130 '"units": "count", ' | 134 "important": False |
131 '"important": false' | 135 }, |
132 '}, ' | 136 "a_by_url.http://www.bar.com/": { |
133 '"a_by_url.http://www.bar.com/": {' | 137 "current": [7], |
134 '"current": [7], ' | 138 "units": "seconds", |
135 '"units": "seconds", ' | 139 "important": False |
136 '"important": false' | 140 }, |
137 '}, ' | 141 "telemetry_page_measurement_results.num_errored": { |
138 '"telemetry_page_measurement_results.num_errored": {' | 142 "current": [0], |
139 '"current": [0], ' | 143 "units": "count", |
140 '"units": "count", ' | 144 "important": False |
141 '"important": false' | 145 }, |
142 '}, ' | 146 "a_by_url.http://www.foo.com/": { |
143 '"a_by_url.http://www.foo.com/": {' | 147 "current": [3], |
144 '"current": [3], ' | 148 "units": "seconds", |
145 '"units": "seconds", ' | 149 "important": False |
146 '"important": false' | 150 } |
147 '}' | 151 } |
148 '}' | 152 } |
149 '}' | 153 }, |
150 '}, ' | 154 "revision": "revision" |
151 '"label": null' | 155 }, |
152 '}, ' | 156 { |
153 '{' | 157 "platform": "browser_type", |
154 '"platform": "browser_type", ' | 158 "buildTime": "build_time", |
155 '"buildTime": "build_time", ' | 159 "label": None, |
156 '"label": null, ' | 160 "tests": { |
157 '"tests": {' | 161 "test_name": { |
158 '"test_name": {' | 162 "metrics": { |
159 '"metrics": {' | 163 "a": { |
160 '"a": {' | 164 "current": [4, 8], |
161 '"current": [4, 8], ' | 165 "units": "seconds", |
162 '"units": "seconds", ' | 166 "important": True |
163 '"important": true' | 167 }, |
164 '}, ' | 168 "telemetry_page_measurement_results.num_failed": { |
165 '"telemetry_page_measurement_results.num_failed": {' | 169 "current": [0], |
166 '"current": [0], ' | 170 "units": "count", |
167 '"units": "count", ' | 171 "important": False, |
168 '"important": false' | 172 }, |
169 '}, ' | 173 "a_by_url.http://www.bar.com/": { |
170 '"a_by_url.http://www.bar.com/": {' | 174 "current": [8], |
171 '"current": [8], ' | 175 "units": "seconds", |
172 '"units": "seconds", ' | 176 "important": False |
173 '"important": false' | 177 }, |
174 '}, ' | 178 "telemetry_page_measurement_results.num_errored": { |
175 '"telemetry_page_measurement_results.num_errored": {' | 179 "current": [0], |
176 '"current": [0], ' | 180 "units": "count", |
177 '"units": "count", ' | 181 "important": False |
178 '"important": false' | 182 }, |
179 '}, ' | 183 "a_by_url.http://www.foo.com/": { |
180 '"a_by_url.http://www.foo.com/": {' | 184 "current": [4], |
181 '"current": [4], ' | 185 "units": "seconds", |
182 '"units": "seconds", ' | 186 "important": False |
183 '"important": false' | 187 } |
184 '}' | 188 } |
185 '}' | 189 } |
186 '}' | 190 }, |
187 '}, ' | 191 "revision": "revision" |
188 '"revision": "revision"' | 192 }] |
189 '}]' | 193 self.assertEquals(expected, results.GetCombinedResults()) |
190 '</script>') | |
191 self.assertIn(expected, output_file.getvalue()) | |
192 last_output_len = len(output_file.getvalue()) | 194 last_output_len = len(output_file.getvalue()) |
193 | 195 |
194 # Now reset the results and verify the old ones are gone. | 196 # Now reset the results and verify the old ones are gone. |
195 output_file.seek(0) | 197 output_file.seek(0) |
196 results = DeterministicHtmlPageMeasurementResults( | 198 results = DeterministicHtmlPageMeasurementResults( |
197 output_file, 'test_name', True, False, 'browser_type') | 199 output_file, 'test_name', True, False, 'browser_type') |
198 results.WillMeasurePage(test_page_set.pages[0]) | 200 results.WillMeasurePage(test_page_set.pages[0]) |
199 results.Add('a', 'seconds', 5) | 201 results.Add('a', 'seconds', 5) |
200 results.DidMeasurePage() | 202 results.DidMeasurePage() |
| 203 results.AddSuccess(test_page_set.pages[0]) |
| 204 |
201 results.WillMeasurePage(test_page_set.pages[1]) | 205 results.WillMeasurePage(test_page_set.pages[1]) |
202 results.Add('a', 'seconds', 9) | 206 results.Add('a', 'seconds', 9) |
203 results.DidMeasurePage() | 207 results.DidMeasurePage() |
| 208 results.AddSuccess(test_page_set.pages[1]) |
204 | 209 |
205 results.PrintSummary() | 210 results.PrintSummary() |
206 expected = ( | 211 expected = [{ |
207 '<script id="results-json" type="application/json">' | 212 "platform": "browser_type", |
208 '[{' | 213 "buildTime": "build_time", |
209 '"platform": "browser_type", ' | 214 "label": None, |
210 '"buildTime": "build_time", ' | 215 "tests": { |
211 '"label": null, ' | 216 "test_name": { |
212 '"tests": {' | 217 "metrics": { |
213 '"test_name": {' | 218 "a": { |
214 '"metrics": {' | 219 "current": [5, 9], |
215 '"a": {' | 220 "units": "seconds", |
216 '"current": [5, 9], ' | 221 "important": True |
217 '"units": "seconds", ' | 222 }, |
218 '"important": true' | 223 "telemetry_page_measurement_results.num_failed": { |
219 '}, ' | 224 "current": [0], |
220 '"telemetry_page_measurement_results.num_failed": {' | 225 "units": "count", |
221 '"current": [0], ' | 226 "important": False |
222 '"units": "count", ' | 227 }, |
223 '"important": false' | 228 "a_by_url.http://www.bar.com/": { |
224 '}, ' | 229 "current": [9], |
225 '"a_by_url.http://www.bar.com/": {' | 230 "units": "seconds", |
226 '"current": [9], ' | 231 "important": False |
227 '"units": "seconds", ' | 232 }, |
228 '"important": false' | 233 "telemetry_page_measurement_results.num_errored": { |
229 '}, ' | 234 "current": [0], |
230 '"telemetry_page_measurement_results.num_errored": {' | 235 "units": "count", |
231 '"current": [0], ' | 236 "important": False |
232 '"units": "count", ' | 237 }, |
233 '"important": false' | 238 "a_by_url.http://www.foo.com/": { |
234 '}, ' | 239 "current": [5], |
235 '"a_by_url.http://www.foo.com/": {' | 240 "units": "seconds", |
236 '"current": [5], ' | 241 "important": False |
237 '"units": "seconds", ' | 242 } |
238 '"important": false' | 243 } |
239 '}' | 244 } |
240 '}' | 245 }, |
241 '}' | 246 "revision": "revision" |
242 '}, ' | 247 }] |
243 '"revision": "revision"' | 248 self.assertEquals(expected, results.GetCombinedResults()) |
244 '}]' | |
245 '</script>') | |
246 self.assertIn(expected, output_file.getvalue()) | |
247 self.assertTrue(len(output_file.getvalue()) < last_output_len) | 249 self.assertTrue(len(output_file.getvalue()) < last_output_len) |
OLD | NEW |