| OLD | NEW |
| 1 #!/usr/bin/python2 | 1 #!/usr/bin/python2 |
| 2 | 2 |
| 3 # Copyright 2014 Google Inc. | 3 # Copyright 2014 Google Inc. |
| 4 # | 4 # |
| 5 # Use of this source code is governed by a BSD-style license that can be | 5 # Use of this source code is governed by a BSD-style license that can be |
| 6 # found in the LICENSE file. | 6 # found in the LICENSE file. |
| 7 | 7 |
| 8 """Skia's Chromium Codereview Comparison Script. | 8 """Skia's Chromium Codereview Comparison Script. |
| 9 | 9 |
| 10 This script takes two Codereview URLs, looks at the trybot results for | 10 This script takes two Codereview URLs, looks at the trybot results for |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 if not all_bots: | 329 if not all_bots: |
| 330 print >> sys.stderr, ( | 330 print >> sys.stderr, ( |
| 331 'Error: control %s and roll %s have no common trybots.' | 331 'Error: control %s and roll %s have no common trybots.' |
| 332 % (list(control), list(roll))) | 332 % (list(control), list(roll))) |
| 333 return | 333 return |
| 334 | 334 |
| 335 control_name = '[control %s]' % control_url.split('/')[-1] | 335 control_name = '[control %s]' % control_url.split('/')[-1] |
| 336 roll_name = '[roll %s]' % roll_url.split('/')[-1] | 336 roll_name = '[roll %s]' % roll_url.split('/')[-1] |
| 337 | 337 |
| 338 out = sys.stdout | 338 out = sys.stdout |
| 339 if verbosity > 0: | |
| 340 # Print out summary of all of the bots. | |
| 341 out.write('%11s %11s %4s %s\n\n' % | |
| 342 ('CONTROL', 'ROLL', 'DIFF', 'BOT')) | |
| 343 for bot in sorted(all_bots): | |
| 344 if control[bot].status != roll[bot].status: | |
| 345 diff = '****' | |
| 346 elif (control[bot].status != 'success' or | |
| 347 roll[bot].status != 'success'): | |
| 348 diff = '....' | |
| 349 else: | |
| 350 diff = '' | |
| 351 out.write('%11s %11s %4s %s\n' % ( | |
| 352 control[bot].status, roll[bot].status, diff, bot)) | |
| 353 out.write('\n') | |
| 354 out.flush() | |
| 355 | 339 |
| 356 for bot in sorted(all_bots): | 340 for bot in sorted(all_bots): |
| 357 if (roll[bot].status == 'success'): | 341 if (roll[bot].status == 'success'): |
| 358 if verbosity > 1: | 342 if verbosity > 1: |
| 359 printer(0, '==%s==' % bot) | 343 printer(0, '==%s==' % bot) |
| 360 printer(1, 'OK') | 344 printer(1, 'OK') |
| 361 continue | 345 continue |
| 362 printer(0, '==%s==' % bot) | 346 printer(0, '==%s==' % bot) |
| 363 | 347 |
| 364 for (status, name, url) in ( | 348 for (status, name, url) in ( |
| 365 (control[bot].status, control_name, control[bot].url), | 349 (control[bot].status, control_name, control[bot].url), |
| 366 (roll[bot].status, roll_name, roll[bot].url)): | 350 (roll[bot].status, roll_name, roll[bot].url)): |
| 367 | 351 |
| 368 if status == 'failure': | 352 if status == 'failure': |
| 369 printer(1, name) | 353 printer(1, name) |
| 370 results = BuilderHTMLParser.parse(url) | 354 results = BuilderHTMLParser.parse(url) |
| 371 for result in results: | 355 for result in results: |
| 372 formatted_result = re.sub( | 356 formatted_result = re.sub( |
| 373 r'(\S*\.html) ', '\n__\g<1>\n', result.text) | 357 r'(\S*\.html) ', '\n__\g<1>\n', result.text) |
| 358 # Strip runtimes. |
| 359 formatted_result = re.sub(r'\(.*\)', '', formatted_result) |
| 374 printer(2, formatted_result) | 360 printer(2, formatted_result) |
| 375 if ('compile' in result.text | 361 if ('compile' in result.text |
| 376 or '...and more' in result.text): | 362 or '...and more' in result.text): |
| 377 printer(3, re.sub('/[^/]*$', '/', url) + result.url) | 363 printer(3, re.sub('/[^/]*$', '/', url) + result.url) |
| 378 else: | 364 else: |
| 379 printer(1, name) | 365 printer(1, name) |
| 380 printer(2, status) | 366 printer(2, status) |
| 381 out.write('\n') | 367 out.write('\n') |
| 382 | 368 |
| 369 if verbosity > 0: |
| 370 # Print out summary of all of the bots. |
| 371 out.write('%11s %11s %4s %s\n\n' % |
| 372 ('CONTROL', 'ROLL', 'DIFF', 'BOT')) |
| 373 for bot in sorted(all_bots): |
| 374 if roll[bot].status == 'success': |
| 375 diff = '' |
| 376 elif (control[bot].status == 'success' and |
| 377 roll[bot].status == 'failure'): |
| 378 diff = '!!!!' |
| 379 elif ('pending' in control[bot].status or |
| 380 'pending' in roll[bot].status): |
| 381 diff = '....' |
| 382 else: |
| 383 diff = '****' |
| 384 out.write('%11s %11s %4s %s\n' % ( |
| 385 control[bot].status, roll[bot].status, diff, bot)) |
| 386 out.write('\n') |
| 387 out.flush() |
| 383 | 388 |
| 384 if __name__ == '__main__': | 389 if __name__ == '__main__': |
| 385 if len(sys.argv) < 3: | 390 if len(sys.argv) < 3: |
| 386 print >> sys.stderr, __doc__ | 391 print >> sys.stderr, __doc__ |
| 387 exit(1) | 392 exit(1) |
| 388 main(sys.argv[1], sys.argv[2], | 393 main(sys.argv[1], sys.argv[2], |
| 389 int(os.environ.get('COMPARE_CODEREVIEW_VERBOSITY', 1))) | 394 int(os.environ.get('COMPARE_CODEREVIEW_VERBOSITY', 1))) |
| 390 | 395 |
| OLD | NEW |