Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: scripts/slave/unittests/results_dashboard_test.py

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

Powered by Google App Engine
This is Rietveld 408576698