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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 83 return; | 83 return; |
| 84 } | 84 } |
| 85 | 85 |
| 86 var not_run_data = []; | 86 var not_run_data = []; |
| 87 var run_data = []; | 87 var run_data = []; |
| 88 $.each(findit.passRates, function(index, value) { | 88 $.each(findit.passRates, function(index, value) { |
| 89 // Convert pass rate from [0, 1] to a percentage. | 89 // Convert pass rate from [0, 1] to a percentage. |
| 90 var rate = (value[1] * 100).toFixed(0); | 90 var rate = (value[1] * 100).toFixed(0); |
| 91 // -1 means that the test doesn't exist or is disabled at the build. | 91 // -1 means that the test doesn't exist or is disabled at the build. |
| 92 if (rate < 0) { | 92 if (rate < 0) { |
| 93 not_run_data.push([value[0], 100, value[2]]); | 93 not_run_data.push([value[0], 100, value[2]]); |
|
stgao
2016/12/12 20:05:18
Here, we don't need it?
Better to be consistent th
lijeffrey
2016/12/14 02:37:13
Done.
| |
| 94 } else { | 94 } else { |
| 95 run_data.push([value[0], rate, value[2]]); | 95 // run_data contains information about each point in the format: |
| 96 // [build number, pass rate, swarming task url, commit position, git h ash]. | |
| 97 run_data.push([value[0], rate, value[2], value[3], value[4]]); | |
| 96 } | 98 } |
| 97 }); | 99 }); |
| 98 | 100 |
| 99 var data_series = []; | 101 var data_series = []; |
| 100 var run_data_sery_index = 0; | 102 var run_data_sery_index = 0; |
| 101 if (not_run_data.length > 0) { | 103 if (not_run_data.length > 0) { |
| 102 data_series.push({ | 104 data_series.push({ |
| 103 data: not_run_data, | 105 data: not_run_data, |
| 104 color: "gray", | 106 color: "gray", |
| 105 points: { | 107 points: { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 padding: "2px", | 164 padding: "2px", |
| 163 "background-color": "#fee", | 165 "background-color": "#fee", |
| 164 opacity: 0.80 | 166 opacity: 0.80 |
| 165 }).appendTo("body"); | 167 }).appendTo("body"); |
| 166 | 168 |
| 167 function showTooltipForDataPoint(item) { | 169 function showTooltipForDataPoint(item) { |
| 168 var itemData = item.series.data[item.dataIndex]; | 170 var itemData = item.series.data[item.dataIndex]; |
| 169 var buildNumber = itemData[0]; | 171 var buildNumber = itemData[0]; |
| 170 var passRate = itemData[1]; | 172 var passRate = itemData[1]; |
| 171 var taskUrl = itemData[2]; | 173 var taskUrl = itemData[2]; |
| 174 var commitPosition = itemData[3]; | |
| 175 var gitHash = itemData[4]; | |
| 172 | 176 |
| 173 var tooltipStr = 'Build #: <a href="https://build.chromium.org/p/' + fin dit.masterName + '/builders/' + findit.builderName + '/builds/' + buildNumber + '" target="_blank">' + buildNumber + '</a><br> Pass rate: ' + passRate + '%'; | 177 var tooltipStr = 'Build #: <a href="https://build.chromium.org/p/' + fin dit.masterName + '/builders/' + findit.builderName + '/builds/' + buildNumber + '" target="_blank">' + buildNumber + '</a><br> Pass rate: ' + passRate + '%'; |
| 174 if (taskUrl) { | 178 if (taskUrl) { |
| 175 tooltipStr += '<br>Task: <a href="' + taskUrl +'" target="_blank">link </a>'; | 179 tooltipStr += '<br>Task: <a href="' + taskUrl +'" target="_blank">link </a>'; |
| 176 } | 180 } |
| 177 | 181 |
| 182 if (commitPosition && gitHash) { | |
| 183 tooltipStr += '<br>Commit position: <a href="https://crrev.com/' + git Hash + '" "target="_blank">' + commitPosition + '</a>'; | |
| 184 } | |
| 185 | |
| 178 $("#tooltip").html(tooltipStr).css({top: item.pageY + 5, left: item.page X + 5}).show(); | 186 $("#tooltip").html(tooltipStr).css({top: item.pageY + 5, left: item.page X + 5}).show(); |
| 179 } | 187 } |
| 180 | 188 |
| 181 var dataPointSelected = false; | 189 var dataPointSelected = false; |
| 182 $("#flake-data").bind("plothover", function (event, pos, item) { | 190 $("#flake-data").bind("plothover", function(event, pos, item) { |
| 183 if (dataPointSelected) | 191 if (dataPointSelected) |
| 184 return; // A data point is selected due to a click. | 192 return; // A data point is selected due to a click. |
| 185 | 193 |
| 186 if (item) { | 194 if (item) { |
| 187 showTooltipForDataPoint(item); | 195 showTooltipForDataPoint(item); |
| 188 } else { | 196 } else { |
| 189 $("#tooltip").hide(); | 197 $("#tooltip").hide(); |
| 190 } | 198 } |
| 191 }); | 199 }); |
| 192 $("#flake-data").bind("plotclick", function (event, pos, item) { | 200 $("#flake-data").bind("plotclick", function(event, pos, item) { |
| 193 if (item) { | 201 if (item) { |
| 194 dataPointSelected = true; // Set selected data point upon click. | 202 dataPointSelected = true; // Set selected data point upon click. |
| 195 showTooltipForDataPoint(item); | 203 showTooltipForDataPoint(item); |
| 196 } else { | 204 } else { |
| 197 dataPointSelected = false; // Unselect the data point. | 205 dataPointSelected = false; // Unselect the data point. |
| 198 $("#tooltip").hide(); | 206 $("#tooltip").hide(); |
| 199 } | 207 } |
| 200 }); | 208 }); |
| 201 | 209 |
| 202 $.each(run_data, function(index, value) { | 210 $.each(run_data, function(index, value) { |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 230 Test: {{ test_name }} <br> | 238 Test: {{ test_name }} <br> |
| 231 </div> | 239 </div> |
| 232 <br> | 240 <br> |
| 233 <div> | 241 <div> |
| 234 <b>Analysis Result:</b><br> | 242 <b>Analysis Result:</b><br> |
| 235 Status: {{ analysis_status }}<br> | 243 Status: {{ analysis_status }}<br> |
| 236 {% if error %} | 244 {% if error %} |
| 237 Error info: {{ error }}<br> | 245 Error info: {{ error }}<br> |
| 238 {% endif %} | 246 {% endif %} |
| 239 {% if suspected_flake.build_number %} | 247 {% if suspected_flake.build_number %} |
| 240 Flakiness <b>started</b> in Build: <a href="https://build.chromium.org/p/{{ master_name }}/builders/{{ builder_name }}/builds/{{ suspected_flake.build_numbe r }}" target="_blank" style="color:red;font-weight:bold">{{ suspected_flake.buil d_number }}</a> | 248 Flakiness <b>started</b> in Build: <a href="https://build.chromium.org/p/{ { master_name }}/builders/{{ builder_name }}/builds/{{ suspected_flake.build_num ber }}" target="_blank" style="color:red;font-weight:bold">{{ suspected_flake.bu ild_number }}</a> |
| 241 {% endif %} | 249 {% endif %} |
| 250 {% if suspected_flake.commit_position and suspected_flake.git_hash %} | |
| 251 <br> | |
| 252 Suspected flake git commit position: <a href="https://crrev.com/{{ suspect ed_flake.git_hash }}" target="_blank">{{ suspected_flake.commit_position }}</a> | |
|
stgao
2016/12/12 20:05:18
This looks misleading to users.
Instead, we could
lijeffrey
2016/12/14 02:37:13
Done.
| |
| 253 <br> | |
| 254 {% endif %} | |
| 255 | |
| 242 </div> | 256 </div> |
| 243 <br> | 257 <br> |
| 244 <div> | 258 <div> |
| 245 <b>Pass Rate by Build:</b><br> | 259 <b>Pass Rate by Build:</b><br> |
| 246 <div class="container"> | 260 <div class="container"> |
| 247 <div id="flake-data" class="flake-trend"></div> | 261 <div id="flake-data" class="flake-trend"></div> |
| 248 </div> | 262 </div> |
| 249 </div> | 263 </div> |
| 250 <br> | 264 <br> |
| 251 <div> | 265 <div> |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 <td class="triage-cell">{{ triage_record.triage_result }}</td> | 326 <td class="triage-cell">{{ triage_record.triage_result }}</td> |
| 313 <td class="triage-cell">{{ triage_record.version_number }}</td> | 327 <td class="triage-cell">{{ triage_record.version_number }}</td> |
| 314 </tr> | 328 </tr> |
| 315 {% endfor %} | 329 {% endfor %} |
| 316 </tbody> | 330 </tbody> |
| 317 </table> | 331 </table> |
| 318 </div> | 332 </div> |
| 319 {% endif %} | 333 {% endif %} |
| 320 </body> | 334 </body> |
| 321 </html> | 335 </html> |
| OLD | NEW |