| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <head> |
| 3 <title>Build Failure</title> | 3 <title>Build Failure</title> |
| 4 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
| 5 <link rel="stylesheet" href="/common.css"> | 5 <link rel="stylesheet" href="/common.css"> |
| 6 <style> | 6 <style> |
| 7 .running { | 7 .running { |
| 8 color: #666666; | 8 color: #666666; |
| 9 background-color: #fffc6c; | 9 background-color: #fffc6c; |
| 10 border-color: #c5c56d; | 10 border-color: #c5c56d; |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 | 338 |
| 339 tableString += generateHeuristicCulpritCls(result.heuristic_analysis.s
uspected_cls, result.supported); | 339 tableString += generateHeuristicCulpritCls(result.heuristic_analysis.s
uspected_cls, result.supported); |
| 340 tableString += '</tr>'; | 340 tableString += '</tr>'; |
| 341 }); | 341 }); |
| 342 | 342 |
| 343 $('#unclassified_failures_table tbody').append(tableString); | 343 $('#unclassified_failures_table tbody').append(tableString); |
| 344 $('#unclassified_failures').removeClass('not-display'); | 344 $('#unclassified_failures').removeClass('not-display'); |
| 345 } | 345 } |
| 346 } | 346 } |
| 347 | 347 |
| 348 function displayUnclassifiedFailuresToAdmins(step_name, results) { |
| 349 if (!jQuery.isEmptyObject(results)) { |
| 350 var tableString = ''; |
| 351 $.each(results, function(index, result) { |
| 352 tableString += '<tr>'; |
| 353 var rowspan = result.heuristic_analysis.suspected_cls.length > 0 ? res
ult.heuristic_analysis.suspected_cls.length : 1; |
| 354 |
| 355 tableString += generateCommonCellsForAllCategories(step_name, 'determi
ned', index, result.tests, result.first_failure, result.last_pass, rowspan); |
| 356 |
| 357 var tryJob = result.try_job; |
| 358 var tryJobCulprit = tryJob.culprit; |
| 359 |
| 360 if (! jQuery.isEmptyObject(tryJobCulprit)) { |
| 361 var build_number = result.try_job.try_job_key.split('/')[2]; // try
_job_key would look like: 'master_name/builder_name/build_number'. |
| 362 tableString += '<td rowspan="' + rowspan + '"><a href="' + findit.bu
ilderUrl + '/builds/' + build_number + '">' + build_number + '</a></td>'; |
| 363 var review_url = tryJobCulprit.url || tryJobCulprit.review_url || (f
indit.defaultGitBaseUrl + tryJobCulprit.revision); |
| 364 tableString += '<td rowspan="' + rowspan + '"><a href="' + review_ur
l + '">' + tryJobCulprit.commit_position || tryJobCulprit.revision + '</a></td>'
; |
| 365 |
| 366 } else { |
| 367 tableString += '<td colspan="2" rowspan="' + rowspan + '">' + findit
.tryjobStatusMessageMap[tryJob.status] + '</td>'; |
| 368 } |
| 369 |
| 370 tableString += '<td rowspan="' + rowspan + '">'; |
| 371 tableString += '<li>Note: swarming tasks are skipped for forced reruns
by admins.</li>'; |
| 372 if (tryJob.try_job_url) { |
| 373 tableString += '<li>For try job details: <a href="' + tryJob.try_job
_url+ '">' + tryJob.try_job_build_number + '</a></li>'; |
| 374 } |
| 375 tableString += '</td>'; |
| 376 |
| 377 tableString += generateHeuristicCulpritCls(result.heuristic_analysis.s
uspected_cls, result.supported); |
| 378 tableString += '</tr>'; |
| 379 }); |
| 380 |
| 381 $('#unclassified_failures_table tbody').append(tableString); |
| 382 $('#unclassified_failures_admins').removeClass('not-display'); |
| 383 } |
| 384 } |
| 385 |
| 348 $(document).ready(function() { | 386 $(document).ready(function() { |
| 349 if (!findit.analysisCompleted) { | 387 if (!findit.analysisCompleted) { |
| 350 $('#status_message').text('running, will refresh in 5 seconds...'); | 388 $('#status_message').text('running, will refresh in 5 seconds...'); |
| 351 $('#status_message').attr('class', 'running'); | 389 $('#status_message').attr('class', 'running'); |
| 352 setTimeout(function() { | 390 setTimeout(function() { |
| 353 {% if show_debug_info %} | 391 {% if show_debug_info %} |
| 354 window.location.href = 'build-failure?url=' + findit.buildUrl + '&debu
g=1'; | 392 window.location.href = 'build-failure?url=' + findit.buildUrl + '&de
bug=1'; |
| 355 {% else %} | 393 {% else %} |
| 356 window.location.href = 'build-failure?url=' + findit.buildUrl; | 394 window.location.href = 'build-failure?url=' + findit.buildUrl; |
| 357 {% endif %} | 395 {% endif %} |
| 358 }, 5000); | 396 }, 5000); |
| 359 } else { | 397 } else { |
| 360 if (findit.analysisFailed) { | 398 if (findit.analysisFailed) { |
| 361 $('#status_message').text('error'); | 399 $('#status_message').text('error'); |
| 362 $('#status_message').attr('class', 'error'); | 400 $('#status_message').attr('class', 'error'); |
| 363 } else { | 401 } else { |
| 364 // TODO: use another style when no culprit CL is found. | 402 // TODO: use another style when no culprit CL is found. |
| 365 $('#status_message').text('completed'); | 403 $('#status_message').text('completed'); |
| 366 $('#status_message').attr('class', 'completed'); | 404 $('#status_message').attr('class', 'completed'); |
| 367 | 405 |
| 368 $('.triage').click(triageAnalysisResult); | 406 $('.triage').click(triageAnalysisResult); |
| 369 | 407 |
| 370 if (!jQuery.isEmptyObject(findit.analysisResult)) { | 408 if (!jQuery.isEmptyObject(findit.analysisResult)) { |
| 371 $.each(findit.analysisResult, function(step_name, step_results) { | 409 $.each(findit.analysisResult, function(step_name, step_results) { |
| 372 $.each(step_results.results, function(category, results) { | 410 $.each(step_results.results, function(category, results) { |
| 373 if (category == 'reliable_failures') { | 411 if (category == 'reliable_failures') { |
| 374 {% if show_debug_info %} | 412 {% if show_debug_info %} |
| 375 displayReliableFailures(step_name, results); | 413 displayReliableFailures(step_name, results); |
| 376 {% else %} | 414 {% else %} |
| 377 displayReliableFailuresToSheriffs(step_name, results); | 415 displayReliableFailuresToSheriffs(step_name, results); |
| 378 {% endif %} | 416 {% endif %} |
| 379 } else if (category == 'unclassified_failures') { | 417 } else if (category == 'unclassified_failures') { |
| 418 {% if show_debug_info %} |
| 419 displayUnclassifiedFailuresToAdmins(step_name, results); |
| 420 {% else %} |
| 380 displayUnclassifiedFailures(step_name, results); | 421 displayUnclassifiedFailures(step_name, results); |
| 381 } else if (category == 'flaky_failures') { | 422 {% endif %} |
| 382 displayFlakyFailures(step_name, results); | 423 } else if (category == 'flaky_failures') { |
| 383 } else { | 424 displayFlakyFailures(step_name, results); |
| 384 alert('Unrecongnizable category of test results, please file
a bug for it.'); | 425 } else { |
| 385 } | 426 alert('Unrecongnizable category of test results, please file a
bug for it.'); |
| 427 } |
| 386 }); | 428 }); |
| 387 }); | 429 }); |
| 388 } else { | 430 } else { |
| 389 $('#triage-and-table').text('no failure is found'); | 431 $('#triage-and-table').text('no failure is found'); |
| 390 } | 432 } |
| 391 | 433 |
| 392 if (findit.analysisCorrect == 'True') { | 434 if (findit.analysisCorrect == 'True') { |
| 393 $('.thumb-up').addClass('triaged').removeClass('triage'); | 435 $('.thumb-up').addClass('triaged').removeClass('triage'); |
| 394 } else if (findit.analysisCorrect == 'False') { | 436 } else if (findit.analysisCorrect == 'False') { |
| 395 $('.thumb-down').addClass('triaged').removeClass('triage'); | 437 $('.thumb-down').addClass('triaged').removeClass('triage'); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 425 <div> | 467 <div> |
| 426 Master: {{master_name}}<br> | 468 Master: {{master_name}}<br> |
| 427 Builder: <a href="https://build.chromium.org/p/{{master_name}}/builders/{{bu
ilder_name}}">{{builder_name}}</a><br> | 469 Builder: <a href="https://build.chromium.org/p/{{master_name}}/builders/{{bu
ilder_name}}">{{builder_name}}</a><br> |
| 428 Build Number: <a href="https://build.chromium.org/p/{{master_name}}/builders
/{{builder_name}}/builds/{{build_number}}">{{build_number}}</a> | 470 Build Number: <a href="https://build.chromium.org/p/{{master_name}}/builders
/{{builder_name}}/builds/{{build_number}}">{{build_number}}</a> |
| 429 </div> | 471 </div> |
| 430 <br> | 472 <br> |
| 431 | 473 |
| 432 <b>Heuristic analysis info:</b> | 474 <b>Heuristic analysis info:</b> |
| 433 <div id="analysis_info"> | 475 <div id="analysis_info"> |
| 434 status: <span id="status_message"></span> | 476 status: <span id="status_message"></span> |
| 435 {% if show_debug_info %} | 477 {% if show_debug_info %} |
| 436 {% if pipeline_status_path %} | 478 {% if pipeline_status_path %} |
| 437 <a href="{{pipeline_status_path}}">pipeline</a> | 479 <a href="{{pipeline_status_path}}">pipeline</a> |
| 480 {% endif %} |
| 481 <br> |
| 482 Requested: {{analysis_request_time | default('N/A', true)}}<br> |
| 483 {% if analysis_duration %} |
| 484 Duration: {{analysis_duration}} seconds. <br> |
| 485 {% else %} |
| 486 Started: {{analysis_start_time | default('N/A', true)}}<br> |
| 487 {% endif %} |
| 488 Updated: {{analysis_update_time}}<br> |
| 438 {% endif %} | 489 {% endif %} |
| 439 <br> | |
| 440 Requested: {{analysis_request_time | default('N/A', true)}}<br> | |
| 441 {% if analysis_duration %} | |
| 442 Duration: {{analysis_duration}} seconds. <br> | |
| 443 {% else %} | |
| 444 Started: {{analysis_start_time | default('N/A', true)}}<br> | |
| 445 {% endif %} | |
| 446 Updated: {{analysis_update_time}}<br> | |
| 447 {% endif %} | |
| 448 </div> | 490 </div> |
| 449 <br> | 491 <br> |
| 450 | 492 |
| 451 {% if analysis_completed %} | 493 {% if analysis_completed %} |
| 452 <b>Findit result:</b> | 494 <b>Findit result:</b> |
| 453 {% if analysis_failed %} | 495 {% if analysis_failed %} |
| 454 <span class="error">No result because of some error in analysis!</span> | 496 <span class="error">No result because of some error in analysis!</span> |
| 455 {% else %} | 497 {% else %} |
| 456 <div id="triage-and-table"> | 498 <div id="triage-and-table"> |
| 457 <div id="analysis_result"> | 499 <div id="analysis_result"> |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 | 584 |
| 543 <div id="unclassified_failures" class='not-display'> | 585 <div id="unclassified_failures" class='not-display'> |
| 544 <b>Unclassified failures</b> | 586 <b>Unclassified failures</b> |
| 545 <table id="unclassified_failures_table"> | 587 <table id="unclassified_failures_table"> |
| 546 <thead> | 588 <thead> |
| 547 <tr> | 589 <tr> |
| 548 <th rowspan="3" title="Failed step name" width="150px">Step</t
h> | 590 <th rowspan="3" title="Failed step name" width="150px">Step</t
h> |
| 549 <th rowspan="3" title="Failed test name" width="300px">Test(s)
</th> | 591 <th rowspan="3" title="Failed test name" width="300px">Test(s)
</th> |
| 550 <th rowspan="3" title="The build cycle in which the step start
ed to fail">First Failure</th> | 592 <th rowspan="3" title="The build cycle in which the step start
ed to fail">First Failure</th> |
| 551 <th rowspan="3" title="The last build cycle in which the step
passed">Last Pass<br>Before Failure</th> | 593 <th rowspan="3" title="The last build cycle in which the step
passed">Last Pass<br>Before Failure</th> |
| 552 <th rowspan="3" title="The reason why we're not sure about thi
s result">Reason</th> | 594 <th rowspan="3" title="The reason we're not sure about the res
ult">Reason</th> |
| 553 <th colspan="4">Suspected CLs</th> | 595 <th colspan="4">Suspected CLs</th> |
| 554 </tr> | 596 </tr> |
| 555 <tr> | 597 <tr> |
| 556 <th colspan="4">Heuristic Analysis Result</th> | 598 <th colspan="4">Heuristic Analysis Result</th> |
| 557 </tr> | 599 </tr> |
| 558 <tr> | 600 <tr> |
| 559 <th title="The build cycle in which the CL was built or tested
for the first time">Build Number</th> | 601 <th title="The build cycle in which the CL was built or tested
for the first time">Build Number</th> |
| 560 <th title="Git commit position/hash">Commit</th> | 602 <th title="Git commit position/hash">Commit</th> |
| 561 <th title="The higher score, the more suspected">Score (<a cla
ss="score-info" href="javascript:">?</a>)</th> | 603 <th title="The higher score, the more suspected">Score (<a cla
ss="score-info" href="javascript:">?</a>)</th> |
| 562 <th title="Why this CL is related to the failure">Hints</th> | 604 <th title="Why this CL is related to the failure">Hints</th> |
| 563 </tr> | 605 </tr> |
| 564 </thead> | 606 </thead> |
| 565 <tbody> | 607 <tbody> |
| 566 </tbody> | 608 </tbody> |
| 567 </table> | 609 </table> |
| 568 <br> | 610 <br> |
| 569 </div> | 611 </div> |
| 570 </div> | 612 </div> |
| 571 | 613 |
| 614 <div id="unclassified_failures_admins" class='not-display'> |
| 615 <b>Unclassified failures</b> |
| 616 <table id="unclassified_failures_table"> |
| 617 <thead> |
| 618 <tr> |
| 619 <th rowspan="3" title="Failed step name" width="150px">Step</t
h> |
| 620 <th rowspan="3" title="Failed test name" width="300px">Test(s)
</th> |
| 621 <th rowspan="3" title="The build cycle in which the step start
ed to fail">First Failure</th> |
| 622 <th rowspan="3" title="The last build cycle in which the step
passed">Last Pass<br>Before Failure</th> |
| 623 <th colspan="8">Suspected CLs</th> |
| 624 </tr> |
| 625 <tr> |
| 626 <th colspan="3">Try Job Result</th> |
| 627 <th colspan="5">Heuristic Analysis Result</th> |
| 628 </tr> |
| 629 <tr> |
| 630 <th title="The build cycle in which the CL was built or tested
for the first time">Build Number</th> |
| 631 <th title="Git commit position/hash">Commit</th> |
| 632 <th title="Information about related swarming rerun and try jo
b">Swarming rerun and<br>Try Job Info</th> |
| 633 <th title="The build cycle in which the CL was built or tested
for the first time">Build Number</th> |
| 634 <th title="Git commit position/hash">Commit</th> |
| 635 <th title="The higher score, the more suspected">Score (<a cla
ss="score-info" href="javascript:">?</a>)</th> |
| 636 <th title="Why this CL is related to the failure">Hints</th> |
| 637 </tr> |
| 638 </thead> |
| 639 <tbody> |
| 640 </tbody> |
| 641 </table> |
| 642 <br> |
| 643 </div> |
| 644 |
| 572 <div class="thumbs-up-down"> | 645 <div class="thumbs-up-down"> |
| 573 <b>Feedback on Findit result:</b><br> | 646 <b>Feedback on Findit result:</b><br> |
| 574 <div class="triage thumb-up">Correct <img src="https://www.gstatic.com
/images/icons/material/system/1x/thumb_up_black_24dp.png"/></div> | 647 <div class="triage thumb-up">Correct <img src="https://www.gstatic.com
/images/icons/material/system/1x/thumb_up_black_24dp.png"/></div> |
| 575 <div class="triage thumb-down"><img src="https://www.gstatic.com/image
s/icons/material/system/1x/thumb_down_black_24dp.png"/> Incorrect</div> | 648 <div class="triage thumb-down"><img src="https://www.gstatic.com/image
s/icons/material/system/1x/thumb_down_black_24dp.png"/> Incorrect</div> |
| 576 </div> | 649 </div> |
| 577 </div> | 650 </div> |
| 578 {% endif %} | 651 {% endif %} |
| 579 {% endif %} | 652 {% endif %} |
| 580 | 653 |
| 581 {% if show_triage_help_button %} | 654 {% if show_triage_help_button %} |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 appearing in the failure log. (eg: file.h was changed and | 691 appearing in the failure log. (eg: file.h was changed and |
| 619 file_unittest.cc or file_impl.cc appeared in the log.)</li> | 692 file_unittest.cc or file_impl.cc appeared in the log.)</li> |
| 620 <li>1: The CL rolled a dependency within src/DEPS and a file of that | 693 <li>1: The CL rolled a dependency within src/DEPS and a file of that |
| 621 dependency appears in the failure log. (eg: third_party/dep | 694 dependency appears in the failure log. (eg: third_party/dep |
| 622 was changed in src/DEPS and third_party/dep/f.cpp appeared | 695 was changed in src/DEPS and third_party/dep/f.cpp appeared |
| 623 in the log.)</li> | 696 in the log.)</li> |
| 624 </ul> | 697 </ul> |
| 625 (More rules will be added when implemented.) | 698 (More rules will be added when implemented.) |
| 626 </div> | 699 </div> |
| 627 </body> | 700 </body> |
| OLD | NEW |