Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <head> |
| 3 <meta charset="UTF-8"> | 3 <meta charset="UTF-8"> |
| 4 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> | 4 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> |
| 5 <title> Analysis of Flaky Test</title> | 5 <title> Analysis of Flaky Test</title> |
| 6 <style type="text/css"> | 6 <style type="text/css"> |
| 7 .container { | 7 .container { |
| 8 box-sizing: border-box; | 8 box-sizing: border-box; |
| 9 width: 600px; | 9 width: 600px; |
| 10 height: 300px; | 10 height: 300px; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min .js"></script> | 48 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min .js"></script> |
| 49 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.res ize.js"></script> | 49 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.res ize.js"></script> |
| 50 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.sym bol.js"></script> | 50 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.sym bol.js"></script> |
| 51 <script type="text/javascript"> | 51 <script type="text/javascript"> |
| 52 var findit = {}; | 52 var findit = {}; |
| 53 findit.masterName = "{{ master_name }}"; | 53 findit.masterName = "{{ master_name }}"; |
| 54 findit.builderName = "{{ builder_name }}"; | 54 findit.builderName = "{{ builder_name }}"; |
| 55 findit.regressedBuildNumber = {{ suspected_flake.build_number or -1 }}; | 55 findit.regressedBuildNumber = {{ suspected_flake.build_number or -1 }}; |
| 56 findit.passRates = {{ pass_rates | tojson | safe }}; | 56 findit.passRates = {{ pass_rates | tojson | safe }}; |
| 57 | 57 |
| 58 function getTriageParameters(triageResult) { | |
| 59 parameters = {} | |
| 60 parameters['key'] = "{{ key }}"; | |
| 61 parameters['suspected_build_number'] = {{ suspected_flake.build_number }}; | |
|
chanli
2016/12/07 22:22:52
Same question as above.
lijeffrey
2016/12/08 01:23:46
Good catch, done.
| |
| 62 parameters['triage_result'] = triageResult; | |
| 63 return parameters | |
| 64 } | |
| 65 | |
| 66 function createTriageUrl(parameters) { | |
| 67 var params = []; | |
| 68 for(var key in parameters) { | |
| 69 if (parameters[key] != undefined) { | |
| 70 params.push(key + '=' + parameters[key]) | |
| 71 } | |
| 72 } | |
| 73 | |
| 74 if (params.length == 0) { | |
| 75 return '/waterfall/triage-flake-analysis' | |
| 76 } else { | |
| 77 return '/waterfall/triage-flake-analysis?' + params.join('&'); | |
| 78 } | |
| 79 }; | |
| 80 | |
| 58 function DrawFlakeTrend() { | 81 function DrawFlakeTrend() { |
| 59 if (findit.passRates.length == 0) { | 82 if (findit.passRates.length == 0) { |
| 60 $('#flake-data').html('No data available yet.'); | 83 $('#flake-data').html('No data available yet.'); |
| 61 return; | 84 return; |
| 62 } | 85 } |
| 63 | 86 |
| 64 var not_run_data = []; | 87 var not_run_data = []; |
| 65 var run_data = []; | 88 var run_data = []; |
| 66 $.each(findit.passRates, function(index, value) { | 89 $.each(findit.passRates, function(index, value) { |
| 67 // Convert pass rate from [0, 1] to a percentage. | 90 // Convert pass rate from [0, 1] to a percentage. |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 177 } | 200 } |
| 178 }); | 201 }); |
| 179 | 202 |
| 180 $.each(run_data, function(index, value) { | 203 $.each(run_data, function(index, value) { |
| 181 if (value[0] == findit.regressedBuildNumber) | 204 if (value[0] == findit.regressedBuildNumber) |
| 182 plot.highlight(run_data_sery_index, index); | 205 plot.highlight(run_data_sery_index, index); |
| 183 }); | 206 }); |
| 184 } | 207 } |
| 185 | 208 |
| 186 function triageSuspectedFlake(e) { | 209 function triageSuspectedFlake(e) { |
| 187 $.getJSON('/waterfall/triage-flake-analysis?flake_info=' + e.name + '&tria ge_result=' + e.value, function(data) { | 210 $.getJSON(createTriageUrl(getTriageParameters(e.value)), function(data) { |
| 188 if (! data['success']) { | 211 if (! data['success']) { |
| 189 alert('Failed to update datastore. Please refresh and try again.'); | 212 alert('Failed to update datastore. Please refresh and try again.'); |
| 190 } else { | 213 } else { |
| 191 $('#flake_result_triaged').html('Result has been recorded. Thank you.' ) | 214 $('#flake_result_triaged').html('Result has been recorded. Thank you.' ) |
| 192 } | 215 } |
| 193 }).error(function(xhr) { | 216 }).error(function(xhr) { |
| 194 // Replace the whole page with errors from server side. | 217 // Replace the whole page with errors from server side. |
| 195 document.body.outerHTML = xhr.responseText; | 218 document.body.outerHTML = xhr.responseText; |
| 196 }); | 219 }); |
| 197 } | 220 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 245 {% if suspected_flake %} | 268 {% if suspected_flake %} |
| 246 <b>Feedback:</b> | 269 <b>Feedback:</b> |
| 247 <table class="triage-table"> | 270 <table class="triage-table"> |
| 248 <tr> | 271 <tr> |
| 249 <th class="triage-header" title="The test became flaky at this build"> Suspected Build</th> | 272 <th class="triage-header" title="The test became flaky at this build"> Suspected Build</th> |
| 250 <th class="triage-header">Feedback</th> | 273 <th class="triage-header">Feedback</th> |
| 251 </tr> | 274 </tr> |
| 252 <tr> | 275 <tr> |
| 253 <td class="triage-cell"><a href="https://build.chromium.org/p/{{ maste r_name }}/builders/{{ builder_name }}/builds/{{ suspected_flake.build_number }}" target="_blank">{{ suspected_flake.build_number }}</a></a></td> | 276 <td class="triage-cell"><a href="https://build.chromium.org/p/{{ maste r_name }}/builders/{{ builder_name }}/builds/{{ suspected_flake.build_number }}" target="_blank">{{ suspected_flake.build_number }}</a></a></td> |
| 254 <td class="triage-cell"> | 277 <td class="triage-cell"> |
| 255 {% set flake_info = master_name + '/' + builder_name + '/' + build_n umber | string + '/' + step_name + '/' + test_name + '/' + version_number | stri ng + '/' + suspected_flake.build_number | string %} | 278 {% if suspected_flake.triage_result == 1 %} |
| 256 {% if suspected_flake.triage_result == 1 %} | 279 <input type="radio" name="triage-radio-button" value="2" onchange= "triageSuspectedFlake(this)">Correct |
| 257 <input type="radio" name="{{ flake_info }}" value="2" onchange=" triageSuspectedFlake(this)">Correct | 280 <input type="radio" name="triage-radio-button" value="1" checked=" checked" onchange= "triageSuspectedFlake(this)">Incorrect |
| 258 <input type="radio" name="{{ flake_info }}" value="1" checked="c hecked"onchange= "triageSuspectedFlake(this)">Incorrect | 281 {% elif suspected_flake.triage_result == 2 %} |
| 259 {% elif suspected_flake.triage_result == 2 %} | 282 <input type="radio" name="triage-radio-button" value="2" checked=" checked" onchange="triageSuspectedFlake(this)">Correct |
| 260 <input type="radio" name="{{ flake_info }}" value="2" checked="c hecked" onchange="triageSuspectedFlake(this)">Correct | 283 <input type="radio" name="triage-radio-button" value="1" onchange= "triageSuspectedFlake(this)">Incorrect |
| 261 <input type="radio" name="{{ flake_info }}" value="1" onchange= "triageSuspectedFlake(this)">Incorrect | 284 {% else %} |
| 262 {% else %} | 285 <input type="radio" name="triage-radio-button" value="2" onchange= "triageSuspectedFlake(this)">Correct |
| 263 <input type="radio" name="{{ flake_info }}" value="2" onchange=" triageSuspectedFlake(this)">Correct | 286 <input type="radio" name="triage-radio-button" value="1" onchange= "triageSuspectedFlake(this)">Incorrect |
| 264 <input type="radio" name="{{ flake_info }}" value="1" onchange= "triageSuspectedFlake(this)">Incorrect | 287 {% endif %} |
| 265 {% endif %} | |
| 266 </td> | 288 </td> |
| 267 </tr> | 289 </tr> |
| 268 </table> | 290 </table> |
| 269 {% endif %} | 291 {% endif %} |
| 270 <div id="flake_result_triaged"></div> | 292 <div id="flake_result_triaged"></div> |
| 271 </div> | 293 </div> |
| 272 | 294 |
| 273 {% if show_debug_info and triage_history %} | 295 {% if show_debug_info and triage_history %} |
| 274 <br> | 296 <br> |
| 275 <b>Triage history:</b> | 297 <b>Triage history:</b> |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 291 <td class="triage-cell">{{ triage_record.triage_result }}</td> | 313 <td class="triage-cell">{{ triage_record.triage_result }}</td> |
| 292 <td class="triage-cell">{{ triage_record.version_number }}</td> | 314 <td class="triage-cell">{{ triage_record.version_number }}</td> |
| 293 </tr> | 315 </tr> |
| 294 {% endfor %} | 316 {% endfor %} |
| 295 </tbody> | 317 </tbody> |
| 296 </table> | 318 </table> |
| 297 </div> | 319 </div> |
| 298 {% endif %} | 320 {% endif %} |
| 299 </body> | 321 </body> |
| 300 </html> | 322 </html> |
| OLD | NEW |