| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <head> |
| 3 <title>{% block title %}{% endblock %} Failure</title> | 3 <title>{% block title %}{% endblock %} 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 findit.builderUrl = 'https://build.chromium.org/p/{{master_name}}/builders/{
{builder_name}}'; | 69 findit.builderUrl = 'https://build.chromium.org/p/{{master_name}}/builders/{
{builder_name}}'; |
| 70 findit.buildUrl = findit.builderUrl + '/builds/{{build_number}}'; | 70 findit.buildUrl = findit.builderUrl + '/builds/{{build_number}}'; |
| 71 findit.triageReferenceAnalysisUrl = '/waterfall/build-failure?url=https://bu
ild.chromium.org/p/{{triage_reference_analysis_master_name}}/builders/{{triage_r
eference_analysis_builder_name}}/builds/{{triage_reference_analysis_build_number
}}'; | 71 findit.triageReferenceAnalysisUrl = '/waterfall/build-failure?url=https://bu
ild.chromium.org/p/{{triage_reference_analysis_master_name}}/builders/{{triage_r
eference_analysis_builder_name}}/builds/{{triage_reference_analysis_build_number
}}'; |
| 72 findit.analysisCorrect = '{{analysis_correct}}'; // Possible values: 'None'
, 'True', or 'False'. | 72 findit.analysisCorrect = '{{analysis_correct}}'; // Possible values: 'None'
, 'True', or 'False'. |
| 73 findit.analysisIsDuplicate = '{{analysis_is_duplicate}}' == 'True'; | 73 findit.analysisIsDuplicate = '{{analysis_is_duplicate}}' == 'True'; |
| 74 findit.showTriageHelpButton = '{{show_triage_help_button}}' == 'True'; | 74 findit.showTriageHelpButton = '{{show_triage_help_button}}' == 'True'; |
| 75 findit.showDebugInfo = '{{show_debug_info}}' == 'True'; | 75 findit.showDebugInfo = '{{show_debug_info}}' == 'True'; |
| 76 | 76 |
| 77 {% block constant %}{% endblock constant %} | 77 {% block constant %}{% endblock constant %} |
| 78 | 78 |
| 79 function triageSuspectedCL(e) { |
| 80 $.getJSON('/waterfall/triage-suspected-cl?cl_info=' + e.name +'&status=' +
e.value + '&url=' + findit.buildUrl, function(data) { |
| 81 if (! data[success]) { |
| 82 alert('Failed to update datastore. Please refresh and try again.'); |
| 83 } else { |
| 84 $('#cl_result_triaged').html('Result has been recorded. Thank you.') |
| 85 } |
| 86 }).error(function(xhr) { |
| 87 // Replace the whole page with errors from server side. |
| 88 document.body.outerHTML = xhr.responseText; |
| 89 }); |
| 90 |
| 91 e.preventDefault(); |
| 92 } |
| 93 |
| 79 function triageAnalysisResult(e) { | 94 function triageAnalysisResult(e) { |
| 80 var target = $(this); | 95 var target = $(this); |
| 81 if (target.hasClass('triaged')) | 96 if (target.hasClass('triaged')) |
| 82 return; | 97 return; |
| 83 | 98 |
| 84 var correct = target.hasClass('thumb-up'); | 99 var correct = target.hasClass('thumb-up'); |
| 85 $.getJSON('/waterfall/triage-analysis?correct=' + correct + '&url=' + find
it.buildUrl, function(data) { | 100 $.getJSON('/waterfall/triage-analysis?correct=' + correct + '&url=' + find
it.buildUrl, function(data) { |
| 86 if (data['success']) { | 101 if (data['success']) { |
| 87 $('.triaged').addClass('triage').removeClass('triaged'); | 102 $('.triaged').addClass('triage').removeClass('triaged'); |
| 88 target.addClass('triaged').removeClass('triage'); | 103 target.addClass('triaged').removeClass('triage'); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 $('#status_message').attr('class', 'error'); | 165 $('#status_message').attr('class', 'error'); |
| 151 } else { | 166 } else { |
| 152 // TODO: use another style when no culprit CL is found. | 167 // TODO: use another style when no culprit CL is found. |
| 153 $('#status_message').text('completed'); | 168 $('#status_message').text('completed'); |
| 154 $('#status_message').attr('class', 'completed'); | 169 $('#status_message').attr('class', 'completed'); |
| 155 | 170 |
| 156 $('.triage').click(triageAnalysisResult); | 171 $('.triage').click(triageAnalysisResult); |
| 157 | 172 |
| 158 {% block failure_classification %}{% endblock failure_classification %
} | 173 {% block failure_classification %}{% endblock failure_classification %
} |
| 159 | 174 |
| 160 if (findit.analysisCorrect == 'True') { | |
| 161 $('.thumb-up').addClass('triaged').removeClass('triage'); | |
| 162 } else if (findit.analysisCorrect == 'False') { | |
| 163 $('.thumb-down').addClass('triaged').removeClass('triage'); | |
| 164 } | |
| 165 | |
| 166 {% if show_debug_info %} | 175 {% if show_debug_info %} |
| 167 if (findit.analysisIsDuplicate) { | 176 if (findit.analysisIsDuplicate) { |
| 168 $('#duplicate_reference').html('This analysis was automatically tr
iaged as a duplicate because of another build analysis: ' + | 177 $('#duplicate_reference').html('This analysis was automatically tr
iaged as a duplicate because of another build analysis: ' + |
| 169 '<a href="' + findit.triageReferenc
eAnalysisUrl + '">{{triage_reference_analysis_master_name}}/' + | 178 '<a href="' + findit.triageReferenc
eAnalysisUrl + '">{{triage_reference_analysis_master_name}}/' + |
| 170 '{{triage_reference_analysis_builde
r_name}}/{{triage_reference_analysis_build_number}}</a>'); | 179 '{{triage_reference_analysis_builde
r_name}}/{{triage_reference_analysis_build_number}}</a>'); |
| 171 } | 180 } |
| 172 {% endif %} | 181 {% endif %} |
| 173 | 182 |
| 174 if (findit.showTriageHelpButton) { | 183 if (findit.showTriageHelpButton) { |
| 175 $('#triage_help_button').click(triageHelp); | 184 $('#triage_help_button').click(triageHelp); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 <b>Findit result:</b> | 234 <b>Findit result:</b> |
| 226 | 235 |
| 227 {% block try_job_result %}{% endblock try_job_result %} | 236 {% block try_job_result %}{% endblock try_job_result %} |
| 228 {% if analysis_completed %} | 237 {% if analysis_completed %} |
| 229 {% block result_tables %}{% endblock result_tables %} | 238 {% block result_tables %}{% endblock result_tables %} |
| 230 {% endif %} | 239 {% endif %} |
| 231 | 240 |
| 232 {% if analysis_completed %} | 241 {% if analysis_completed %} |
| 233 <br> | 242 <br> |
| 234 <div> | 243 <div> |
| 235 <b>Feedback on Findit result:</b><br> | 244 <div id="triage_cls"> |
| 236 <div class="thumbs-up-down"> | 245 {% if suspected_cls %} |
| 237 <div class="triage thumb-up">Correct <img src="https://www.gstatic.com/ima
ges/icons/material/system/1x/thumb_up_black_24dp.png"/></div> | 246 <b>Feedback on Findit result:</b> |
| 238 <div class="triage thumb-down"><img src="https://www.gstatic.com/images/ic
ons/material/system/1x/thumb_down_black_24dp.png"/> Incorrect</div> | 247 <table> |
| 248 {% for suspected_cl in suspected_cls %} |
| 249 <tr> |
| 250 <td>{{suspected_cl.repo_name}} <a href="{{suspected_cl.url}}"
>{{ suspected_cl.commit_position or suspected_cl.revision}}</a></td> |
| 251 <td> |
| 252 {% set cl_info = suspected_cl.repo_name + '/' + suspected_cl.rev
ision %} |
| 253 {% if suspected_cl.status == 0 %} |
| 254 <input type="radio" name="{{ cl_info }}" value="0" checked="
checked" onchange="triageSuspectedCL(this)">Correct |
| 255 <input type="radio" name="{{ cl_info }}" value="1" onchange=
"triageSuspectedCL(this)">Inorrect |
| 256 {% elif suspected_cl.status == 1 %} |
| 257 <input type="radio" name="{{ cl_info }}" value="0" onchange=
"triageSuspectedCL(this)">Correct |
| 258 <input type="radio" name="{{ cl_info }}" value="1" checked="
checked" onchange="triageSuspectedCL(this)">Inorrect |
| 259 {% else %} |
| 260 <input type="radio" name="{{ cl_info }}" value="0" onchange=
"triageSuspectedCL(this)">Correct |
| 261 <input type="radio" name="{{ cl_info }}" value="1" onchange=
"triageSuspectedCL(this)">Inorrect |
| 262 {% endif %} |
| 263 </td> |
| 264 </tr> |
| 265 {% endfor %} |
| 266 </table> |
| 267 {% endif %} |
| 268 <div id="cl_result_triaged"></div> |
| 239 </div> | 269 </div> |
| 240 {% if show_debug_info %} | 270 {% if show_debug_info %} |
| 241 <div id="duplicates_marked"></div> | 271 <div id="duplicates_marked"></div> |
| 242 <div id="duplicate_reference"></div> | 272 <div id="duplicate_reference"></div> |
| 243 {% endif %} | 273 {% endif %} |
| 244 </div> | 274 </div> |
| 245 {% endif %} | 275 {% endif %} |
| 246 | 276 |
| 247 {% if show_triage_help_button %} | 277 {% if show_triage_help_button %} |
| 248 <br><br> | 278 <br><br> |
| 249 <div id="triage_help"> | 279 <div id="triage_help"> |
| 250 <button id="triage_help_button">Triage help</button> | 280 <button id="triage_help_button">Triage help</button> |
| 251 <br> | 281 <br> |
| 252 <div id="triage_help_result"> | 282 <div id="triage_help_result"> |
| 253 </div> | 283 </div> |
| 254 </div> | 284 </div> |
| 255 {% endif %} | 285 {% endif %} |
| 256 | 286 |
| 257 {% if triage_history %} | 287 {% if triage_history %} |
| 258 <br> | 288 <br> |
| 259 <b>Triage history:</b> | 289 <b>Triage history:</b> |
| 260 <div> | 290 <div> |
| 261 <table> | 291 <table> |
| 262 <tr><th>When</th><th>Who</th><th>Result</th><th>Version</th></tr> | 292 <tr><th>When</th><th>Who</th><th>CL</th><th>Result</th><th>Version</th><
/tr> |
| 263 <tbody> | 293 <tbody> |
| 264 {% for triage_record in triage_history %} | 294 {% for triage_record in triage_history %} |
| 265 <tr> | 295 <tr> |
| 266 <td>{{triage_record.triage_time}}</td> | 296 <td>{{triage_record.triage_time}}</td> |
| 267 <td>{{triage_record.user_name}}</td> | 297 <td>{{triage_record.user_name}}</td> |
| 298 <td>{{triage_record.triaged_cl.repo_name}} <a href="{{triage_recor
d.triaged_cl.url}}">{{triage_record.triaged_cl.commit_position or triage_record.
triaged_cl.revision}}</a></td> |
| 268 <td>{{triage_record.result_status}}</td> | 299 <td>{{triage_record.result_status}}</td> |
| 269 <td>{{triage_record.version | default('N/A', true)}}</td> | 300 <td>{{triage_record.version | default('N/A', true)}}</td> |
| 270 </tr> | 301 </tr> |
| 271 {% endfor %} | 302 {% endfor %} |
| 272 </tbody> | 303 </tbody> |
| 273 </table> | 304 </table> |
| 274 </div> | 305 </div> |
| 275 {% endif %} | 306 {% endif %} |
| 276 | 307 |
| 277 <div id="score-explanation-dialog" title="Score Explanation"> | 308 <div id="score-explanation-dialog" title="Score Explanation"> |
| 278 The total score is a sum of scores for all hints.<br> | 309 The total score is a sum of scores for all hints.<br> |
| 279 Rules to set a score to an hint: | 310 Rules to set a score to an hint: |
| 280 <ul> | 311 <ul> |
| 281 <li>5: The CL added or deleted a file that appears in the failure log.</li
> | 312 <li>5: The CL added or deleted a file that appears in the failure log.</li
> |
| 282 <li>2: The CL modified a file that appears in the failure log.</li> | 313 <li>2: The CL modified a file that appears in the failure log.</li> |
| 283 <li>1: The CL modified a file that is related to another file | 314 <li>1: The CL modified a file that is related to another file |
| 284 appearing in the failure log. (eg: file.h was changed and | 315 appearing in the failure log. (eg: file.h was changed and |
| 285 file_unittest.cc or file_impl.cc appeared in the log.)</li> | 316 file_unittest.cc or file_impl.cc appeared in the log.)</li> |
| 286 <li>1: The CL rolled a dependency within src/DEPS and a file of that | 317 <li>1: The CL rolled a dependency within src/DEPS and a file of that |
| 287 dependency appears in the failure log. (eg: third_party/dep | 318 dependency appears in the failure log. (eg: third_party/dep |
| 288 was changed in src/DEPS and third_party/dep/f.cpp appeared | 319 was changed in src/DEPS and third_party/dep/f.cpp appeared |
| 289 in the log.)</li> | 320 in the log.)</li> |
| 290 </ul> | 321 </ul> |
| 291 (More rules will be added when implemented.) | 322 (More rules will be added when implemented.) |
| 292 </div> | 323 </div> |
| 293 </body> | 324 </body> |
| OLD | NEW |