OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Test cases for results_dashboard.""" | 6 """Test cases for results_dashboard.""" |
7 | 7 |
8 import datetime | 8 import datetime |
9 import json | 9 import json |
10 import os | 10 import os |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 self.build_dir = tempfile.mkdtemp() | 47 self.build_dir = tempfile.mkdtemp() |
48 os.makedirs(os.path.join(self.build_dir, results_dashboard.CACHE_DIR)) | 48 os.makedirs(os.path.join(self.build_dir, results_dashboard.CACHE_DIR)) |
49 self.cache_filename = os.path.join(self.build_dir, | 49 self.cache_filename = os.path.join(self.build_dir, |
50 results_dashboard.CACHE_DIR, | 50 results_dashboard.CACHE_DIR, |
51 results_dashboard.CACHE_FILENAME) | 51 results_dashboard.CACHE_FILENAME) |
52 | 52 |
53 def tearDown(self): | 53 def tearDown(self): |
54 self.mox.UnsetStubs() | 54 self.mox.UnsetStubs() |
55 shutil.rmtree(self.build_dir) | 55 shutil.rmtree(self.build_dir) |
56 | 56 |
57 def _TestSendResults(self, send_results_args, expected_new_json, errors, | 57 def _SendResults(self, send_results_args, expected_new_json, errors, |
58 mock_timestamp=False, webkit_master=False): | 58 mock_timestamp=False, webkit_master=False): |
59 """Test one call of SendResults with the given set of arguments. | 59 """Test one call of SendResults with the given set of arguments. |
60 | 60 |
61 Args: | 61 Args: |
62 send_results_args: The list of arguments to pass to SendResults. | 62 send_results_args: The list of arguments to pass to SendResults. |
63 expected_new_json: A list of JSON string expected to be sent. | 63 expected_new_json: A list of JSON string expected to be sent. |
64 errors: A list of corresponding errors expected to be received | 64 errors: A list of corresponding errors expected to be received |
65 (Each item in the list is either a string or None.) | 65 (Each item in the list is either a string or None.) |
66 mock_timestamp: Whether to stub out datetime with FakeDateTime(). | 66 mock_timestamp: Whether to stub out datetime with FakeDateTime(). |
67 webkit_master: Whether GetActiveMaster should give the webkit master. | 67 webkit_master: Whether GetActiveMaster should give the webkit master. |
(...skipping 22 matching lines...) Expand all Loading... |
90 if error: | 90 if error: |
91 urllib2.urlopen(IsEncodedJson(json_line)).AndRaise(error) | 91 urllib2.urlopen(IsEncodedJson(json_line)).AndRaise(error) |
92 else: | 92 else: |
93 urllib2.urlopen(IsEncodedJson(json_line)) | 93 urllib2.urlopen(IsEncodedJson(json_line)) |
94 self.mox.ReplayAll() | 94 self.mox.ReplayAll() |
95 results_dashboard.SendResults(*send_results_args) | 95 results_dashboard.SendResults(*send_results_args) |
96 self.mox.VerifyAll() | 96 self.mox.VerifyAll() |
97 | 97 |
98 def test_SingleLogLine(self): | 98 def test_SingleLogLine(self): |
99 args = [ | 99 args = [ |
100 { | 100 'bar-summary.dat', |
101 'bar-summary.dat': [ | 101 ['{"traces": {"baz": ["100.0", "5.0"]},' |
102 '{"traces": {"baz": ["100.0", "5.0"]},' | 102 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
103 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 103 ' "v8_rev": "2345"}'], |
104 ' "v8_rev": "2345"}' | |
105 ], | |
106 }, | |
107 'linux-release', | 104 'linux-release', |
108 'foo', | 105 'foo', |
109 'https://chrome-perf.googleplex.com', | 106 'https://chrome-perf.googleplex.com', |
110 'chromium.perf', | 107 'chromium.perf', |
111 'XP Perf (1)', | 108 'XP Perf (1)', |
112 '7890', | 109 '7890', |
113 self.build_dir, | 110 self.build_dir, |
114 {}] | 111 {}] |
115 expected_new_json = [json.dumps([{ | 112 expected_new_json = [json.dumps([{ |
116 'master': 'ChromiumPerf', | 113 'master': 'ChromiumPerf', |
117 'bot': 'linux-release', | 114 'bot': 'linux-release', |
118 'test': 'foo/bar/baz', | 115 'test': 'foo/bar/baz', |
119 'revision': 12345, | 116 'revision': 12345, |
120 'value': '100.0', | 117 'value': '100.0', |
121 'error': '5.0', | 118 'error': '5.0', |
122 'masterid': 'chromium.perf', | 119 'masterid': 'chromium.perf', |
123 'buildername': 'XP Perf (1)', | 120 'buildername': 'XP Perf (1)', |
124 'buildnumber': '7890', | 121 'buildnumber': '7890', |
125 'supplemental_columns': { | 122 'supplemental_columns': { |
126 'r_webkit_rev': '6789', | 123 'r_webkit_rev': '6789', |
127 'r_webrtc_rev': '3456', | 124 'r_webrtc_rev': '3456', |
128 'r_v8_rev': '2345', | 125 'r_v8_rev': '2345', |
129 }}])] | 126 }}])] |
130 errors = [None] | 127 errors = [None] |
131 self._TestSendResults(args, expected_new_json, errors) | 128 self._SendResults(args, expected_new_json, errors) |
132 | 129 |
133 def test_SupplementalColumns(self): | 130 def test_SupplementalColumns(self): |
134 args = [ | 131 args = [ |
135 { | 132 'bar-summary.dat', |
136 'bar-summary.dat': [ | 133 ['{"traces": {"baz": ["100.0", "5.0"]},' |
137 '{"traces": {"baz": ["100.0", "5.0"]},' | 134 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
138 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 135 ' "v8_rev": "2345"}'], |
139 ' "v8_rev": "2345"}' | |
140 ], | |
141 }, | |
142 'linux-release', | 136 'linux-release', |
143 'foo', | 137 'foo', |
144 'https://chrome-perf.googleplex.com', | 138 'https://chrome-perf.googleplex.com', |
145 'chromium.perf', | 139 'chromium.perf', |
146 'XP Perf (1)', | 140 'XP Perf (1)', |
147 '7890', self.build_dir, | 141 '7890', self.build_dir, |
148 { | 142 { |
149 'r_webkit_rev': '6789', | 143 'r_webkit_rev': '6789', |
150 'r_webrtc_rev': '3456', | 144 'r_webrtc_rev': '3456', |
151 'r_v8_rev': '2345', | 145 'r_v8_rev': '2345', |
(...skipping 11 matching lines...) Expand all Loading... |
163 'buildername': 'XP Perf (1)', | 157 'buildername': 'XP Perf (1)', |
164 'buildnumber': '7890', | 158 'buildnumber': '7890', |
165 'supplemental_columns': { | 159 'supplemental_columns': { |
166 'r_webkit_rev': '6789', | 160 'r_webkit_rev': '6789', |
167 'r_webrtc_rev': '3456', | 161 'r_webrtc_rev': '3456', |
168 'r_v8_rev': '2345', | 162 'r_v8_rev': '2345', |
169 'r_foo': 'SHA1', | 163 'r_foo': 'SHA1', |
170 'r_bar': 'SHA2', | 164 'r_bar': 'SHA2', |
171 }}])] | 165 }}])] |
172 errors = [None] | 166 errors = [None] |
173 self._TestSendResults(args, expected_new_json, errors) | 167 self._SendResults(args, expected_new_json, errors) |
174 | 168 |
175 def test_UnitsLogLine(self): | 169 def test_UnitsLogLine(self): |
176 args = [ | 170 args = [ |
177 { | 171 'bar-summary.dat', |
178 'bar-summary.dat': [ | 172 ['{"traces": {"baz": ["100.0", "5.0"]},' |
179 '{"traces": {"baz": ["100.0", "5.0"]},' | 173 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456", ' |
180 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456", ' | 174 ' "v8_rev": "2345", "units": "ms"}', |
181 ' "v8_rev": "2345", "units": "ms"}', | 175 '{"traces": {"bam": ["100.0", "5.0"]},' |
182 '{"traces": {"bam": ["100.0", "5.0"]},' | 176 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456", ' |
183 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456", ' | 177 ' "v8_rev": "2345", "units": ""}'], |
184 ' "v8_rev": "2345", "units": ""}' | |
185 ], | |
186 }, | |
187 'linux-release', | 178 'linux-release', |
188 'foo', | 179 'foo', |
189 'https://chrome-perf.googleplex.com', | 180 'https://chrome-perf.googleplex.com', |
190 'chromium.perf', | 181 'chromium.perf', |
191 'XP Perf (1)', | 182 'XP Perf (1)', |
192 '7890', | 183 '7890', |
193 self.build_dir, | 184 self.build_dir, |
194 {}] | 185 {}] |
195 expected_new_json = [json.dumps([{ | 186 expected_new_json = [json.dumps([{ |
196 'master': 'ChromiumPerf', | 187 'master': 'ChromiumPerf', |
(...skipping 19 matching lines...) Expand all Loading... |
216 'error': '5.0', | 207 'error': '5.0', |
217 'masterid': 'chromium.perf', | 208 'masterid': 'chromium.perf', |
218 'buildername': 'XP Perf (1)', | 209 'buildername': 'XP Perf (1)', |
219 'buildnumber': '7890', | 210 'buildnumber': '7890', |
220 'supplemental_columns': { | 211 'supplemental_columns': { |
221 'r_webkit_rev': '6789', | 212 'r_webkit_rev': '6789', |
222 'r_webrtc_rev': '3456', | 213 'r_webrtc_rev': '3456', |
223 'r_v8_rev': '2345', | 214 'r_v8_rev': '2345', |
224 }}])] | 215 }}])] |
225 errors = [None] | 216 errors = [None] |
226 self._TestSendResults(args, expected_new_json, errors) | 217 self._SendResults(args, expected_new_json, errors) |
227 | 218 |
228 def test_ImportantLogLine(self): | 219 def test_ImportantLogLine(self): |
229 args = [ | 220 args = [ |
230 { | 221 'bar-summary.dat', |
231 'bar-summary.dat': [ | 222 ['{"traces": {"one": ["1.0", "5.0"], "two": ["2.0", "0.0"]},' |
232 '{"traces": {"one": ["1.0", "5.0"], "two": ["2.0", "0.0"]},' | 223 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
233 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 224 ' "v8_rev": "2345", "units": "ms", ' |
234 ' "v8_rev": "2345", "units": "ms", ' | 225 '"important": ["one"]}'], |
235 '"important": ["one"]}' | |
236 ], | |
237 }, | |
238 'linux-release', | 226 'linux-release', |
239 'foo', | 227 'foo', |
240 'https://chrome-perf.googleplex.com', | 228 'https://chrome-perf.googleplex.com', |
241 'chromium.perf', | 229 'chromium.perf', |
242 'XP Perf (1)', | 230 'XP Perf (1)', |
243 '7890', | 231 '7890', |
244 self.build_dir, | 232 self.build_dir, |
245 {}] | 233 {}] |
246 expected_new_json = [json.dumps([{ | 234 expected_new_json = [json.dumps([{ |
247 'master': 'ChromiumPerf', | 235 'master': 'ChromiumPerf', |
(...skipping 21 matching lines...) Expand all Loading... |
269 'units': 'ms', | 257 'units': 'ms', |
270 'masterid': 'chromium.perf', | 258 'masterid': 'chromium.perf', |
271 'buildername': 'XP Perf (1)', | 259 'buildername': 'XP Perf (1)', |
272 'buildnumber': '7890', | 260 'buildnumber': '7890', |
273 'supplemental_columns': { | 261 'supplemental_columns': { |
274 'r_webkit_rev': '6789', | 262 'r_webkit_rev': '6789', |
275 'r_webrtc_rev': '3456', | 263 'r_webrtc_rev': '3456', |
276 'r_v8_rev': '2345', | 264 'r_v8_rev': '2345', |
277 }}])] | 265 }}])] |
278 errors = [None] | 266 errors = [None] |
279 self._TestSendResults(args, expected_new_json, errors) | 267 self._SendResults(args, expected_new_json, errors) |
280 | 268 |
281 def test_MultipleLogLines(self): | 269 def test_MultipleLogLines(self): |
282 args = [ | 270 args = [ |
283 { | 271 'bar-summary.dat', [ |
284 'bar-summary.dat': [ | 272 '{"traces": {"baz": ["100.0", "5.0"]},' |
285 '{"traces": {"baz": ["100.0", "5.0"]},' | 273 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
286 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 274 ' "v8_rev": "2345"}', |
287 ' "v8_rev": "2345"}', | 275 '{"traces": {"box": ["101.0", "4.0"]},' |
288 '{"traces": {"box": ["101.0", "4.0"]},' | 276 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
289 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 277 ' "v8_rev": "2345"}'], |
290 ' "v8_rev": "2345"}' | |
291 ], | |
292 }, | |
293 'linux-release', | 278 'linux-release', |
294 'foo', | 279 'foo', |
295 'https://chrome-perf.googleplex.com', | 280 'https://chrome-perf.googleplex.com', |
296 'chromium.perf', | 281 'chromium.perf', |
297 'XP Perf (1)', | 282 'XP Perf (1)', |
298 '7890', | 283 '7890', |
299 self.build_dir, | 284 self.build_dir, |
300 {}] | 285 {}] |
301 expected_new_json = [json.dumps([{ | 286 expected_new_json = [json.dumps([{ |
302 'master': 'ChromiumPerf', | 287 'master': 'ChromiumPerf', |
(...skipping 18 matching lines...) Expand all Loading... |
321 'error': '4.0', | 306 'error': '4.0', |
322 'masterid': 'chromium.perf', | 307 'masterid': 'chromium.perf', |
323 'buildername': 'XP Perf (1)', | 308 'buildername': 'XP Perf (1)', |
324 'buildnumber': '7890', | 309 'buildnumber': '7890', |
325 'supplemental_columns': { | 310 'supplemental_columns': { |
326 'r_webkit_rev': '6789', | 311 'r_webkit_rev': '6789', |
327 'r_webrtc_rev': '3456', | 312 'r_webrtc_rev': '3456', |
328 'r_v8_rev': '2345', | 313 'r_v8_rev': '2345', |
329 }}])] | 314 }}])] |
330 errors = [None] | 315 errors = [None] |
331 self._TestSendResults(args, expected_new_json, errors) | 316 self._SendResults(args, expected_new_json, errors) |
332 | 317 |
333 def test_ModifiedTraceNames(self): | 318 def test_ModifiedTraceNames(self): |
334 args = [ | 319 args = [ |
335 { | 320 'bar-summary.dat', |
336 'bar-summary.dat': [ | 321 ['{"traces": {"bar": ["100.0", "5.0"], "bar_ref": ["99.0", "2.0"],' |
337 '{"traces": {"bar": ["100.0", "5.0"],' | 322 ' "baz/y": ["101.0", "3.0"], "notchanged": ["102.0", "1.0"]},' |
338 ' "bar_ref": ["99.0", "2.0"],' | 323 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
339 ' "baz/y": ["101.0", "3.0"], "notchanged": ["102.0", "1.0"]},' | 324 ' "v8_rev": "2345"}'], |
340 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | |
341 ' "v8_rev": "2345"}' | |
342 ], | |
343 }, | |
344 'linux-release', | 325 'linux-release', |
345 'foo', | 326 'foo', |
346 'https://chrome-perf.googleplex.com', | 327 'https://chrome-perf.googleplex.com', |
347 'chromium.perf', | 328 'chromium.perf', |
348 'XP Perf (1)', | 329 'XP Perf (1)', |
349 '7890', | 330 '7890', |
350 self.build_dir, | 331 self.build_dir, |
351 {}] | 332 {}] |
352 expected_new_json = [json.dumps([{ | 333 expected_new_json = [json.dumps([{ |
353 'master': 'ChromiumPerf', | 334 'master': 'ChromiumPerf', |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 'error': '1.0', | 381 'error': '1.0', |
401 'masterid': 'chromium.perf', | 382 'masterid': 'chromium.perf', |
402 'buildername': 'XP Perf (1)', | 383 'buildername': 'XP Perf (1)', |
403 'buildnumber': '7890', | 384 'buildnumber': '7890', |
404 'supplemental_columns': { | 385 'supplemental_columns': { |
405 'r_webkit_rev': '6789', | 386 'r_webkit_rev': '6789', |
406 'r_webrtc_rev': '3456', | 387 'r_webrtc_rev': '3456', |
407 'r_v8_rev': '2345', | 388 'r_v8_rev': '2345', |
408 }}])] | 389 }}])] |
409 errors = [None] | 390 errors = [None] |
410 self._TestSendResults(args, expected_new_json, errors) | 391 self._SendResults(args, expected_new_json, errors) |
411 | 392 |
412 def test_MultiValueRowUpload(self): | 393 def test_MultiValueRowUpload(self): |
413 args = [ | 394 args = [ |
414 { | 395 'my_endure_graph-summary.dat', |
415 'my_endure_graph-summary.dat': [ | 396 ['{"traces": {' |
416 '{"traces": {' | 397 '"total_dom_nodes": [["10", "123"], ["20.5", "234"]],' |
417 '"total_dom_nodes": [["10", "123"], ["20.5", "234"]],' | 398 '"event_listeners": [["10", "12"], ["20.5", "40"]]},' |
418 '"event_listeners": [["10", "12"], ["20.5", "40"]]},' | 399 ' "rev": "12345",' |
419 ' "rev": "12345",' | 400 ' "webkit_rev": "6789",' |
420 ' "webkit_rev": "6789",' | 401 ' "webrtc_rev": "3456",' |
421 ' "webrtc_rev": "3456",' | 402 ' "v8_rev": "2345",' |
422 ' "v8_rev": "2345",' | 403 ' "units": "count",' |
423 ' "units": "count",' | 404 ' "units_x": "seconds",' |
424 ' "units_x": "seconds",' | 405 ' "stack": false}'], |
425 ' "stack": false}' | |
426 ], | |
427 }, | |
428 'linux-release', | 406 'linux-release', |
429 'endure/test_name', | 407 'endure/test_name', |
430 'https://chrome-perf.googleplex.com', | 408 'https://chrome-perf.googleplex.com', |
431 'chromium.perf', | 409 'chromium.perf', |
432 'Linux (1)', | 410 'Linux (1)', |
433 '1234', | 411 '1234', |
434 self.build_dir, | 412 self.build_dir, |
435 {}] | 413 {}] |
436 expected_new_json = [json.dumps([{ | 414 expected_new_json = [json.dumps([{ |
437 'master': 'ChromiumPerf', | 415 'master': 'ChromiumPerf', |
(...skipping 20 matching lines...) Expand all Loading... |
458 'buildername': 'Linux (1)', | 436 'buildername': 'Linux (1)', |
459 'buildnumber': '1234', | 437 'buildnumber': '1234', |
460 'units': 'count', | 438 'units': 'count', |
461 'units_x': 'seconds', | 439 'units_x': 'seconds', |
462 'supplemental_columns': { | 440 'supplemental_columns': { |
463 'r_webkit_rev': '6789', | 441 'r_webkit_rev': '6789', |
464 'r_webrtc_rev': '3456', | 442 'r_webrtc_rev': '3456', |
465 'r_v8_rev': '2345' | 443 'r_v8_rev': '2345' |
466 }}])] | 444 }}])] |
467 errors = [None, None] | 445 errors = [None, None] |
468 self._TestSendResults(args, expected_new_json, errors) | 446 self._SendResults(args, expected_new_json, errors) |
469 | 447 |
470 def test_ByUrlGraph(self): | 448 def test_ByUrlGraph(self): |
471 args = [ | 449 args = [ |
472 { | 450 'bar_by_url-summary.dat', |
473 'bar_by_url-summary.dat': [ | 451 ['{"traces": {"baz": ["100.0", "5.0"]},' |
474 '{"traces": {"baz": ["100.0", "5.0"]},' | 452 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
475 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 453 '"v8_rev": "2345"}'], |
476 '"v8_rev": "2345"}' | |
477 ], | |
478 }, | |
479 'linux-release', | 454 'linux-release', |
480 'foo', | 455 'foo', |
481 'https://chrome-perf.googleplex.com', | 456 'https://chrome-perf.googleplex.com', |
482 'chromium.perf', | 457 'chromium.perf', |
483 'XP Perf (1)', | 458 'XP Perf (1)', |
484 '7890', | 459 '7890', |
485 self.build_dir, | 460 self.build_dir, |
486 {}] | 461 {}] |
487 expected_new_json = [json.dumps([{ | 462 expected_new_json = [json.dumps([{ |
488 'master': 'ChromiumPerf', | 463 'master': 'ChromiumPerf', |
489 'bot': 'linux-release', | 464 'bot': 'linux-release', |
490 'test': 'foo/bar/baz', | 465 'test': 'foo/bar/baz', |
491 'revision': 12345, | 466 'revision': 12345, |
492 'value': '100.0', | 467 'value': '100.0', |
493 'error': '5.0', | 468 'error': '5.0', |
494 'masterid': 'chromium.perf', | 469 'masterid': 'chromium.perf', |
495 'buildername': 'XP Perf (1)', | 470 'buildername': 'XP Perf (1)', |
496 'buildnumber': '7890', | 471 'buildnumber': '7890', |
497 'supplemental_columns': { | 472 'supplemental_columns': { |
498 'r_webkit_rev': '6789', | 473 'r_webkit_rev': '6789', |
499 'r_webrtc_rev': '3456', | 474 'r_webrtc_rev': '3456', |
500 'r_v8_rev': '2345', | 475 'r_v8_rev': '2345', |
501 }}])] | 476 }}])] |
502 errors = [None] | 477 errors = [None] |
503 self._TestSendResults(args, expected_new_json, errors) | 478 self._SendResults(args, expected_new_json, errors) |
504 | 479 |
505 def test_GitHashToTimestamp(self): | 480 def test_GitHashToTimestamp(self): |
506 args = [ | 481 args = [ |
507 { | 482 'mean_frame_time-summary.dat', |
508 'mean_frame_time-summary.dat': [ | 483 ['{"traces": {"mean_frame_time": ["77.0964285714", "138.142773233"]},' |
509 '{"traces":' | 484 ' "rev": "2eca27b067e3e57c70e40b8b95d0030c5d7c1a7f",' |
510 ' {"mean_frame_time": ["77.0964285714", "138.142773233"]},' | 485 ' "webkit_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc88",' |
511 ' "rev": "2eca27b067e3e57c70e40b8b95d0030c5d7c1a7f",' | 486 ' "webrtc_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc86",' |
512 ' "webkit_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc88",' | 487 ' "v8_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc87",' |
513 ' "webrtc_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc86",' | 488 ' "ver": "undefined", "chan": "undefined", "units": "ms",' |
514 ' "v8_rev": "bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc87",' | 489 ' "important": ["mean_frame_time"]}'], |
515 ' "ver": "undefined", "chan": "undefined", "units": "ms",' | |
516 ' "important": ["mean_frame_time"]}' | |
517 ], | |
518 }, | |
519 'linux-release', | 490 'linux-release', |
520 'smoothness_measurement', | 491 'smoothness_measurement', |
521 'https://chrome-perf.googleplex.com', | 492 'https://chrome-perf.googleplex.com', |
522 'chromium.perf', | 493 'chromium.perf', |
523 'Linux (1)', | 494 'Linux (1)', |
524 '1234', | 495 '1234', |
525 self.build_dir, | 496 self.build_dir, |
526 {}] | 497 {}] |
527 expected_new_json = [json.dumps([{ | 498 expected_new_json = [json.dumps([{ |
528 'master': 'ChromiumPerf', | 499 'master': 'ChromiumPerf', |
529 'bot': 'linux-release', | 500 'bot': 'linux-release', |
530 'test': 'smoothness_measurement/mean_frame_time', | 501 'test': 'smoothness_measurement/mean_frame_time', |
531 'revision': 1375315200, | 502 'revision': 1375315200, |
532 'value': '77.0964285714', | 503 'value': '77.0964285714', |
533 'error': '138.142773233', | 504 'error': '138.142773233', |
534 'masterid': 'chromium.perf', | 505 'masterid': 'chromium.perf', |
535 'buildername': 'Linux (1)', | 506 'buildername': 'Linux (1)', |
536 'buildnumber': '1234', | 507 'buildnumber': '1234', |
537 'important': True, | 508 'important': True, |
538 'units': 'ms', | 509 'units': 'ms', |
539 'supplemental_columns': { | 510 'supplemental_columns': { |
540 'r_chromium': '2eca27b067e3e57c70e40b8b95d0030c5d7c1a7f', | 511 'r_chromium': '2eca27b067e3e57c70e40b8b95d0030c5d7c1a7f', |
541 'r_webkit_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc88', | 512 'r_webkit_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc88', |
542 'r_webrtc_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc86', | 513 'r_webrtc_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc86', |
543 'r_v8_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc87', | 514 'r_v8_rev': 'bf9aa8d62561bb2e4d7bc09e9d9e8c6a665ddc87', |
544 }}])] | 515 }}])] |
545 errors = [None] | 516 errors = [None] |
546 self._TestSendResults(args, expected_new_json, errors, mock_timestamp=True) | 517 self._SendResults(args, expected_new_json, errors, mock_timestamp=True) |
547 | 518 |
548 def test_WebkitUsesTimestamp(self): | 519 def test_WebkitUsesTimestamp(self): |
549 args = [ | 520 args = [ |
550 { | 521 'mean_frame_time-summary.dat', |
551 'mean_frame_time-summary.dat': [ | 522 ['{"traces": {"mean_frame_time": ["77.0964285714", "138.142773233"]},' |
552 '{"traces":' | 523 ' "rev": "12345",' |
553 ' {"mean_frame_time": ["77.0964285714", "138.142773233"]},' | 524 ' "webkit_rev": "23456",' |
554 ' "rev": "12345",' | 525 ' "webrtc_rev": "3456",' |
555 ' "webkit_rev": "23456",' | 526 ' "v8_rev": "34567",' |
556 ' "webrtc_rev": "3456",' | 527 ' "ver": "undefined", "chan": "undefined", "units": "ms",' |
557 ' "v8_rev": "34567",' | 528 ' "important": ["mean_frame_time"]}'], |
558 ' "ver": "undefined", "chan": "undefined", "units": "ms",' | |
559 ' "important": ["mean_frame_time"]}' | |
560 ], | |
561 }, | |
562 'linux-release', | 529 'linux-release', |
563 'smoothness_measurement', | 530 'smoothness_measurement', |
564 'https://chrome-perf.googleplex.com', | 531 'https://chrome-perf.googleplex.com', |
565 'chromium.webkit', | 532 'chromium.webkit', |
566 'Linux (1)', | 533 'Linux (1)', |
567 '1234', | 534 '1234', |
568 self.build_dir, | 535 self.build_dir, |
569 {}] | 536 {}] |
570 expected_new_json = [json.dumps([{ | 537 expected_new_json = [json.dumps([{ |
571 'master': 'ChromiumWebkit', | 538 'master': 'ChromiumWebkit', |
572 'bot': 'linux-release', | 539 'bot': 'linux-release', |
573 'test': 'smoothness_measurement/mean_frame_time', | 540 'test': 'smoothness_measurement/mean_frame_time', |
574 'revision': 1375315200, | 541 'revision': 1375315200, |
575 'value': '77.0964285714', | 542 'value': '77.0964285714', |
576 'error': '138.142773233', | 543 'error': '138.142773233', |
577 'masterid': 'chromium.webkit', | 544 'masterid': 'chromium.webkit', |
578 'buildername': 'Linux (1)', | 545 'buildername': 'Linux (1)', |
579 'buildnumber': '1234', | 546 'buildnumber': '1234', |
580 'important': True, | 547 'important': True, |
581 'units': 'ms', | 548 'units': 'ms', |
582 'supplemental_columns': { | 549 'supplemental_columns': { |
583 'r_chromium_svn': 12345, | 550 'r_chromium_svn': 12345, |
584 'r_webkit_rev': '23456', | 551 'r_webkit_rev': '23456', |
585 'r_webrtc_rev': '3456', | 552 'r_webrtc_rev': '3456', |
586 'r_v8_rev': '34567', | 553 'r_v8_rev': '34567', |
587 }}])] | 554 }}])] |
588 errors = [None] | 555 errors = [None] |
589 self._TestSendResults(args, expected_new_json, errors, mock_timestamp=True, | 556 self._SendResults(args, expected_new_json, errors, mock_timestamp=True, |
590 webkit_master=True) | 557 webkit_master=True) |
591 | 558 |
592 def test_FailureRetried(self): | 559 def test_FailureRetried(self): |
593 args = [ | 560 args = [ |
594 { | 561 'bar-summary.dat', |
595 'bar-summary.dat': [ | 562 ['{"traces": {"baz": ["100.0", "5.0"]},' |
596 '{"traces": {"baz": ["100.0", "5.0"]},' | 563 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
597 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 564 ' "v8_rev": "2345"}'], |
598 ' "v8_rev": "2345"}' | |
599 ], | |
600 }, | |
601 'linux-release', | 565 'linux-release', |
602 'foo', | 566 'foo', |
603 'https://chrome-perf.googleplex.com', | 567 'https://chrome-perf.googleplex.com', |
604 'chromium.perf', | 568 'chromium.perf', |
605 'XP Perf (1)', | 569 'XP Perf (1)', |
606 '7890', | 570 '7890', |
607 self.build_dir, | 571 self.build_dir, |
608 {}] | 572 {}] |
609 expected_new_json = [json.dumps([{ | 573 expected_new_json = [json.dumps([{ |
610 'master': 'ChromiumPerf', | 574 'master': 'ChromiumPerf', |
611 'bot': 'linux-release', | 575 'bot': 'linux-release', |
612 'test': 'foo/bar/baz', | 576 'test': 'foo/bar/baz', |
613 'revision': 12345, | 577 'revision': 12345, |
614 'value': '100.0', | 578 'value': '100.0', |
615 'error': '5.0', | 579 'error': '5.0', |
616 'masterid': 'chromium.perf', | 580 'masterid': 'chromium.perf', |
617 'buildername': 'XP Perf (1)', | 581 'buildername': 'XP Perf (1)', |
618 'buildnumber': '7890', | 582 'buildnumber': '7890', |
619 'supplemental_columns': { | 583 'supplemental_columns': { |
620 'r_webkit_rev': '6789', | 584 'r_webkit_rev': '6789', |
621 'r_webrtc_rev': '3456', | 585 'r_webrtc_rev': '3456', |
622 'r_v8_rev': '2345', | 586 'r_v8_rev': '2345', |
623 }}])] | 587 }}])] |
624 errors = [urllib2.URLError('reason')] | 588 errors = [urllib2.URLError('reason')] |
625 self._TestSendResults(args, expected_new_json, errors) | 589 self._SendResults(args, expected_new_json, errors) |
626 args2 = [ | 590 args2 = [ |
627 { | 591 'bar-summary.dat', |
628 'bar-summary.dat': [ | 592 ['{"traces": {"baz": ["101.0", "6.0"]},' |
629 '{"traces": {"baz": ["101.0", "6.0"]},' | 593 ' "rev": "12346", "webkit_rev": "6790", "webrtc_rev": "3456",' |
630 ' "rev": "12346", "webkit_rev": "6790", "webrtc_rev": "3456",' | 594 ' "v8_rev": "2345"}'], |
631 ' "v8_rev": "2345"}' | |
632 ], | |
633 }, | |
634 'linux-release', | 595 'linux-release', |
635 'foo', | 596 'foo', |
636 'https://chrome-perf.googleplex.com', | 597 'https://chrome-perf.googleplex.com', |
637 'chromium.perf', | 598 'chromium.perf', |
638 'XP Perf (1)', | 599 'XP Perf (1)', |
639 '7890', | 600 '7890', |
640 self.build_dir, | 601 self.build_dir, |
641 {}] | 602 {}] |
642 expected_new_json.append(json.dumps([{ | 603 expected_new_json.append(json.dumps([{ |
643 'master': 'ChromiumPerf', | 604 'master': 'ChromiumPerf', |
644 'bot': 'linux-release', | 605 'bot': 'linux-release', |
645 'test': 'foo/bar/baz', | 606 'test': 'foo/bar/baz', |
646 'revision': 12346, | 607 'revision': 12346, |
647 'value': '101.0', | 608 'value': '101.0', |
648 'error': '6.0', | 609 'error': '6.0', |
649 'masterid': 'chromium.perf', | 610 'masterid': 'chromium.perf', |
650 'buildername': 'XP Perf (1)', | 611 'buildername': 'XP Perf (1)', |
651 'buildnumber': '7890', | 612 'buildnumber': '7890', |
652 'supplemental_columns': { | 613 'supplemental_columns': { |
653 'r_webkit_rev': '6790', | 614 'r_webkit_rev': '6790', |
654 'r_webrtc_rev': '3456', | 615 'r_webrtc_rev': '3456', |
655 'r_v8_rev': '2345', | 616 'r_v8_rev': '2345', |
656 } | 617 } |
657 }])) | 618 }])) |
658 errors = [None, None] | 619 errors = [None, None] |
659 self._TestSendResults(args2, expected_new_json, errors) | 620 self._SendResults(args2, expected_new_json, errors) |
660 | 621 |
661 def test_SuccessNotRetried(self): | 622 def test_SuccessNotRetried(self): |
662 args = [ | 623 args = [ |
663 { | 624 'bar-summary.dat', |
664 'bar-summary.dat': [ | 625 ['{"traces": {"baz": ["100.0", "5.0"]},' |
665 '{"traces": {"baz": ["100.0", "5.0"]},' | 626 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
666 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 627 ' "v8_rev": "2345"}'], |
667 ' "v8_rev": "2345"}' | |
668 ], | |
669 }, | |
670 'linux-release', | 628 'linux-release', |
671 'foo', | 629 'foo', |
672 'https://chrome-perf.googleplex.com', | 630 'https://chrome-perf.googleplex.com', |
673 'chromium.perf', | 631 'chromium.perf', |
674 'XP Perf (1)', | 632 'XP Perf (1)', |
675 '7890', | 633 '7890', |
676 self.build_dir, | 634 self.build_dir, |
677 {}] | 635 {}] |
678 expected_new_json = [json.dumps([{ | 636 expected_new_json = [json.dumps([{ |
679 'master': 'ChromiumPerf', | 637 'master': 'ChromiumPerf', |
680 'bot': 'linux-release', | 638 'bot': 'linux-release', |
681 'test': 'foo/bar/baz', | 639 'test': 'foo/bar/baz', |
682 'revision': 12345, | 640 'revision': 12345, |
683 'value': '100.0', | 641 'value': '100.0', |
684 'error': '5.0', | 642 'error': '5.0', |
685 'masterid': 'chromium.perf', | 643 'masterid': 'chromium.perf', |
686 'buildername': 'XP Perf (1)', | 644 'buildername': 'XP Perf (1)', |
687 'buildnumber': '7890', | 645 'buildnumber': '7890', |
688 'supplemental_columns': { | 646 'supplemental_columns': { |
689 'r_webkit_rev': '6789', | 647 'r_webkit_rev': '6789', |
690 'r_webrtc_rev': '3456', | 648 'r_webrtc_rev': '3456', |
691 'r_v8_rev': '2345', | 649 'r_v8_rev': '2345', |
692 }}])] | 650 }}])] |
693 errors = [None] | 651 errors = [None] |
694 self._TestSendResults(args, expected_new_json, errors) | 652 self._SendResults(args, expected_new_json, errors) |
695 args2 = [ | 653 args2 = [ |
696 { | 654 'bar-summary.dat', |
697 'bar-summary.dat': [ | 655 ['{"traces": {"baz": ["101.0", "6.0"]},' |
698 '{"traces": {"baz": ["101.0", "6.0"]},' | 656 ' "rev": "12346", "webkit_rev": "6790", "webrtc_rev": "3456",' |
699 ' "rev": "12346", "webkit_rev": "6790", "webrtc_rev": "3456",' | 657 ' "v8_rev": "2345"}'], |
700 ' "v8_rev": "2345"}' | |
701 ], | |
702 }, | |
703 'linux-release', | 658 'linux-release', |
704 'foo', | 659 'foo', |
705 'https://chrome-perf.googleplex.com', | 660 'https://chrome-perf.googleplex.com', |
706 'chromium.perf', | 661 'chromium.perf', |
707 'XP Perf (1)', | 662 'XP Perf (1)', |
708 '7890', | 663 '7890', |
709 self.build_dir, | 664 self.build_dir, |
710 {}] | 665 {}] |
711 expected_new_json2 = [json.dumps([{ | 666 expected_new_json2 = [json.dumps([{ |
712 'master': 'ChromiumPerf', | 667 'master': 'ChromiumPerf', |
713 'bot': 'linux-release', | 668 'bot': 'linux-release', |
714 'test': 'foo/bar/baz', | 669 'test': 'foo/bar/baz', |
715 'revision': 12346, | 670 'revision': 12346, |
716 'value': '101.0', | 671 'value': '101.0', |
717 'error': '6.0', | 672 'error': '6.0', |
718 'masterid': 'chromium.perf', | 673 'masterid': 'chromium.perf', |
719 'buildername': 'XP Perf (1)', | 674 'buildername': 'XP Perf (1)', |
720 'buildnumber': '7890', | 675 'buildnumber': '7890', |
721 'supplemental_columns': { | 676 'supplemental_columns': { |
722 'r_webkit_rev': '6790', | 677 'r_webkit_rev': '6790', |
723 'r_webrtc_rev': '3456', | 678 'r_webrtc_rev': '3456', |
724 'r_v8_rev': '2345', | 679 'r_v8_rev': '2345', |
725 } | 680 } |
726 }])] | 681 }])] |
727 errors = [None] | 682 errors = [None] |
728 self._TestSendResults(args2, expected_new_json2, errors) | 683 self._SendResults(args2, expected_new_json2, errors) |
729 | 684 |
730 def test_FailureCached(self): | 685 def test_FailureCached(self): |
731 args = [ | 686 args = [ |
732 { | 687 'bar-summary.dat', |
733 'bar-summary.dat': [ | 688 ['{"traces": {"baz": ["100.0", "5.0"]},' |
734 '{"traces": {"baz": ["100.0", "5.0"]},' | 689 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' |
735 ' "rev": "12345", "webkit_rev": "6789", "webrtc_rev": "3456",' | 690 ' "v8_rev": "2345"}'], |
736 ' "v8_rev": "2345"}' | |
737 ], | |
738 }, | |
739 'linux-release', | 691 'linux-release', |
740 'foo', | 692 'foo', |
741 'https://chrome-perf.googleplex.com', | 693 'https://chrome-perf.googleplex.com', |
742 'chromium.perf', | 694 'chromium.perf', |
743 'XP Perf (1)', | 695 'XP Perf (1)', |
744 '7890', | 696 '7890', |
745 self.build_dir, | 697 self.build_dir, |
746 {}] | 698 {}] |
747 expected_new_json = [json.dumps([{ | 699 expected_new_json = [json.dumps([{ |
748 'master': 'ChromiumPerf', | 700 'master': 'ChromiumPerf', |
749 'bot': 'linux-release', | 701 'bot': 'linux-release', |
750 'test': 'foo/bar/baz', | 702 'test': 'foo/bar/baz', |
751 'revision': 12345, | 703 'revision': 12345, |
752 'value': '100.0', | 704 'value': '100.0', |
753 'error': '5.0', | 705 'error': '5.0', |
754 'masterid': 'chromium.perf', | 706 'masterid': 'chromium.perf', |
755 'buildername': 'XP Perf (1)', | 707 'buildername': 'XP Perf (1)', |
756 'buildnumber': '7890', | 708 'buildnumber': '7890', |
757 'supplemental_columns': { | 709 'supplemental_columns': { |
758 'r_webkit_rev': '6789', | 710 'r_webkit_rev': '6789', |
759 'r_webrtc_rev': '3456', | 711 'r_webrtc_rev': '3456', |
760 'r_v8_rev': '2345', | 712 'r_v8_rev': '2345', |
761 }}])] | 713 }}])] |
762 errors = [urllib2.URLError('reason')] | 714 errors = [urllib2.URLError('reason')] |
763 self._TestSendResults(args, expected_new_json, errors) | 715 self._SendResults(args, expected_new_json, errors) |
764 cache_file = open(self.cache_filename, 'rb') | 716 cache_file = open(self.cache_filename, 'rb') |
765 actual_cache = cache_file.read() | 717 actual_cache = cache_file.read() |
766 cache_file.close() | 718 cache_file.close() |
767 # Compare the dicts loaded from the JSON instead of the actual JSON string, | 719 # Compare the dicts loaded from the JSON instead of the actual JSON string, |
768 # because the order of the fields in the string doesn't matter. | 720 # because the order of the fields in the string doesn't matter. |
769 self.assertEqual(json.loads(expected_new_json[0]), json.loads(actual_cache)) | 721 self.assertEqual(json.loads(expected_new_json[0]), json.loads(actual_cache)) |
770 | 722 |
771 def test_NoResendAfterMultipleErrors(self): | 723 def test_NoResendAfterMultipleErrors(self): |
772 previous_lines = '\n'.join([ | 724 previous_lines = '\n'.join([ |
773 json.dumps([{ | 725 json.dumps([{ |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 'supplemental_columns': { | 765 'supplemental_columns': { |
814 'r_webkit_rev': '6789', | 766 'r_webkit_rev': '6789', |
815 'r_webrtc_rev': '3456', | 767 'r_webrtc_rev': '3456', |
816 'r_v8_rev': '2345', | 768 'r_v8_rev': '2345', |
817 }}]) | 769 }}]) |
818 ]) | 770 ]) |
819 cache_file = open(self.cache_filename, 'wb') | 771 cache_file = open(self.cache_filename, 'wb') |
820 cache_file.write(previous_lines) | 772 cache_file.write(previous_lines) |
821 cache_file.close() | 773 cache_file.close() |
822 args = [ | 774 args = [ |
823 { | 775 'bar-summary.dat', |
824 'bar-summary.dat': [ | 776 ['{"traces": {"baz": ["102.0", "5.0"]},' |
825 '{"traces": {"baz": ["102.0", "5.0"]},' | 777 ' "rev": "12348", "webkit_rev": "6789", "v8_rev": "2345"}'], |
826 ' "rev": "12348", "webkit_rev": "6789", "v8_rev": "2345"}' | |
827 ], | |
828 }, | |
829 'linux-release', | 778 'linux-release', |
830 'foo', | 779 'foo', |
831 'https://chrome-perf.googleplex.com', | 780 'https://chrome-perf.googleplex.com', |
832 'chromium.perf', | 781 'chromium.perf', |
833 'XP Perf (1)', | 782 'XP Perf (1)', |
834 '7890', | 783 '7890', |
835 self.build_dir, | 784 self.build_dir, |
836 {}] | 785 {}] |
837 expected_new_json = [json.dumps([{ | 786 expected_new_json = [json.dumps([{ |
838 'master': 'ChromiumPerf', | 787 'master': 'ChromiumPerf', |
839 'bot': 'linux-release', | 788 'bot': 'linux-release', |
840 'test': 'foo/bar/baz', | 789 'test': 'foo/bar/baz', |
841 'revision': 12345, | 790 'revision': 12345, |
842 'value': '100.0', | 791 'value': '100.0', |
843 'error': '5.0', | 792 'error': '5.0', |
844 'masterid': 'chromium.perf', | 793 'masterid': 'chromium.perf', |
845 'buildername': 'XP Perf (1)', | 794 'buildername': 'XP Perf (1)', |
846 'buildnumber': '7890', | 795 'buildnumber': '7890', |
847 'supplemental_columns': { | 796 'supplemental_columns': { |
848 'r_webkit_rev': '6789', | 797 'r_webkit_rev': '6789', |
849 'r_webrtc_rev': '3456', | 798 'r_webrtc_rev': '3456', |
850 'r_v8_rev': '2345', | 799 'r_v8_rev': '2345', |
851 }}])] | 800 }}])] |
852 errors = [urllib2.URLError('reason')] | 801 errors = [urllib2.URLError('reason')] |
853 self._TestSendResults(args, expected_new_json, errors) | 802 self._SendResults(args, expected_new_json, errors) |
854 cache_file = open(self.cache_filename, 'rb') | 803 cache_file = open(self.cache_filename, 'rb') |
855 actual_cache_lines = [l.strip() for l in cache_file.readlines()] | 804 actual_cache_lines = [l.strip() for l in cache_file.readlines()] |
856 cache_file.close() | 805 cache_file.close() |
857 self.assertEqual(4, len(actual_cache_lines)) | 806 self.assertEqual(4, len(actual_cache_lines)) |
858 for line in previous_lines.split('\n') + expected_new_json: | 807 for line in previous_lines.split('\n') + expected_new_json: |
859 self.assertTrue(line in actual_cache_lines) | 808 self.assertTrue(line in actual_cache_lines) |
860 | 809 |
861 def test_ChunkList(self): | |
862 """Tests the list-chunking function.""" | |
863 # Access to a protected member. | |
864 # pylint: disable=W0212 | |
865 self.assertEqual( | |
866 [[1, 2, 3], [4, 5, 6], [7]], | |
867 results_dashboard._ChunkList([1, 2, 3, 4, 5, 6, 7], 3)) | |
868 self.assertEqual( | |
869 [[1, 2, 3, 4, 5, 6, 7]], | |
870 results_dashboard._ChunkList([1, 2, 3, 4, 5, 6, 7], 7)) | |
871 self.assertEqual( | |
872 [], results_dashboard._ChunkList([], 3)) | |
873 self.assertEqual( | |
874 [[1, 2, 3], [4, 5, 6]], | |
875 results_dashboard._ChunkList([1, 2, 3, 4, 5, 6], 3)) | |
876 | |
877 | 810 |
878 if __name__ == '__main__': | 811 if __name__ == '__main__': |
879 unittest.main() | 812 unittest.main() |
OLD | NEW |