Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: appengine/findit/templates/flake/result.html

Issue 2416303002: [Findit] Adding support for triaging suspected builds from flake analysis (Closed)
Patch Set: Rebase Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « appengine/findit/templates/build_failure.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <head> 2 <head>
3 <meta charset="UTF-8"> 3 <meta charset="UTF-8">
4 <title> Find Regression Range for Flaky Test</title> 4 <title> Find Regression Range for Flaky Test</title>
5 <style type="text/css"> 5 <style type="text/css">
6 .container { 6 .container {
7 box-sizing: border-box; 7 box-sizing: border-box;
8 width: 600px; 8 width: 600px;
9 height: 300px; 9 height: 300px;
10 padding: 20px 20px 20px 20px; 10 padding: 20px 20px 20px 20px;
11 border: 1px solid #ddd; 11 border: 1px solid #ddd;
12 background: #fff; 12 background: #fff;
13 background: linear-gradient(#f6f6f6 0, #fff 50px); 13 background: linear-gradient(#f6f6f6 0, #fff 50px);
14 background: -o-linear-gradient(#f6f6f6 0, #fff 50px); 14 background: -o-linear-gradient(#f6f6f6 0, #fff 50px);
15 background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); 15 background: -ms-linear-gradient(#f6f6f6 0, #fff 50px);
16 background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); 16 background: -moz-linear-gradient(#f6f6f6 0, #fff 50px);
17 background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); 17 background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px);
18 box-shadow: 0 3px 10px rgba(0,0,0,0.15); 18 box-shadow: 0 3px 10px rgba(0,0,0,0.15);
19 -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 19 -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
20 -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 20 -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
21 -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 21 -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
22 -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 22 -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
23 } 23 }
24 .flake-trend { 24 .flake-trend {
25 width: 100%; 25 width: 100%;
26 height: 100%; 26 height: 100%;
27 font-size: 16px; 27 font-size: 16px;
28 line-height: 1.2em; 28 line-height: 1.2em;
29 } 29 }
30 .triage-table, .triage-header, .triage-cell {
31 border: 1px solid;
32 border-collapse: collapse;
33 }
34 .triage-header, .triage-cell {
35 padding: 5px;
36 }
37 .triage-header {
38 text-align: center;
39 }
40 .triage-cell {
41 text-align: left;
42 }
30 </style> 43 </style>
31 <link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/ libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css"> 44 <link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/ libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css">
32 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js "></script> 45 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js "></script>
33 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.m in.js"></script> 46 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.m in.js"></script>
34 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min .js"></script> 47 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min .js"></script>
35 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.res ize.js"></script> 48 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.res ize.js"></script>
36 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.sym bol.js"></script> 49 <script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.sym bol.js"></script>
37 <script type="text/javascript"> 50 <script type="text/javascript">
38 var findit = {}; 51 var findit = {};
39 findit.masterName = "{{ master_name }}"; 52 findit.masterName = "{{ master_name }}";
40 findit.builderName = "{{ builder_name }}"; 53 findit.builderName = "{{ builder_name }}";
41 findit.regressedBuildNumber = {{ suspected_flake_build_number or -1 }}; 54 findit.regressedBuildNumber = {{ suspected_flake.build_number or -1 }};
42 findit.passRates = {{ pass_rates | tojson | safe }}; 55 findit.passRates = {{ pass_rates | tojson | safe }};
43 56
44 function DrawFlakeTrend() { 57 function DrawFlakeTrend() {
45 if (findit.passRates.length == 0) { 58 if (findit.passRates.length == 0) {
46 $('#flake-data').html('No data available yet.'); 59 $('#flake-data').html('No data available yet.');
47 return; 60 return;
48 } 61 }
49 62
50 var not_run_data = []; 63 var not_run_data = [];
51 var run_data = []; 64 var run_data = [];
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 dataPointSelected = false; // Unselect the data point. 167 dataPointSelected = false; // Unselect the data point.
155 $("#tooltip").hide(); 168 $("#tooltip").hide();
156 } 169 }
157 }); 170 });
158 171
159 $.each(run_data, function(index, value) { 172 $.each(run_data, function(index, value) {
160 if (value[0] == findit.regressedBuildNumber) 173 if (value[0] == findit.regressedBuildNumber)
161 plot.highlight(run_data_sery_index, index); 174 plot.highlight(run_data_sery_index, index);
162 }); 175 });
163 } 176 }
177
178 function triageSuspectedFlake(e) {
179 $.getJSON('/waterfall/triage-flake-analysis?flake_info=' + e.name + '&tria ge_result=' + e.value, function(data) {
180 if (! data['success']) {
181 alert('Failed to update datastore. Please refresh and try again.');
182 } else {
183 $('#flake_result_triaged').html('Result has been recorded. Thank you.' )
184 }
185 }).error(function(xhr) {
186 // Replace the whole page with errors from server side.
187 document.body.outerHTML = xhr.responseText;
188 });
189 }
190
164 $(document).ready(DrawFlakeTrend); 191 $(document).ready(DrawFlakeTrend);
165 </script> 192 </script>
166 </head> 193 </head>
167
168 <body> 194 <body>
169 <div> 195 <div>
170 <b>Flaky Test:</b><br> 196 <b>Flaky Test:</b><br>
171 Master: {{ master_name }} <br> 197 Master: {{ master_name }} <br>
172 Builder: {{ builder_name }} <br> 198 Builder: {{ builder_name }} <br>
173 Step: {{ step_name }} <br> 199 Step: {{ step_name }} <br>
174 Test: {{ test_name }} <br> 200 Test: {{ test_name }} <br>
175 </div> 201 </div>
176 <br> 202 <br>
177 <div> 203 <div>
(...skipping 21 matching lines...) Expand all
199 Request time: {{ request_time }}<br> 225 Request time: {{ request_time }}<br>
200 {% endif %} 226 {% endif %}
201 {% if pending_time %} 227 {% if pending_time %}
202 Pending time: {{ pending_time }}<br> 228 Pending time: {{ pending_time }}<br>
203 {% endif %} 229 {% endif %}
204 {% if duration %} 230 {% if duration %}
205 Duration: {{ duration }}<br> 231 Duration: {{ duration }}<br>
206 {% endif %} 232 {% endif %}
207 Number of Swarm tasks: {{ task_number }} 233 Number of Swarm tasks: {{ task_number }}
208 </div> 234 </div>
235 <br>
236 <div id="triage_flake">
237 {% if suspected_flake %}
238 <b>Feedback on Flake Analysis result:</b>
239 <table class="triage-table">
240 <tr>
241 <th class="triage-header">Suspected Flake Build Number</th>
242 <th class="triage-header">Feedback</th>
243 </tr>
244 <tr>
245 <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>
246 <td class="triage-cell">
247 {% set flake_info = master_name + '/' + builder_name + '/' + build_n umber | string + '/' + step_name + '/' + test_name + '/' + version_number | stri ng + '/' + suspected_flake.build_number | string %}
248 {% if suspected_flake.triage_result == 1 %}
249 <input type="radio" name="{{ flake_info }}" value="2" onchange=" triageSuspectedFlake(this)">Correct &nbsp;&nbsp;
250 <input type="radio" name="{{ flake_info }}" value="1" checked="c hecked"onchange= "triageSuspectedFlake(this)">Incorrect
251 {% elif suspected_flake.triage_result == 2 %}
252 <input type="radio" name="{{ flake_info }}" value="2" checked="c hecked" onchange="triageSuspectedFlake(this)">Correct &nbsp;&nbsp;
253 <input type="radio" name="{{ flake_info }}" value="1" onchange= "triageSuspectedFlake(this)">Incorrect
254 {% else %}
255 <input type="radio" name="{{ flake_info }}" value="2" onchange=" triageSuspectedFlake(this)">Correct &nbsp;&nbsp;
256 <input type="radio" name="{{ flake_info }}" value="1" onchange= "triageSuspectedFlake(this)">Incorrect
257 {% endif %}
258 </td>
259 </tr>
260 </table>
261 {% endif %}
262 <div id="flake_result_triaged"></div>
263 </div>
264
265 {% if show_debug_info and triage_history %}
266 <br>
267 <b>Triage history:</b>
268 <div>
269 <table class="triage-table">
270 <tr>
271 <th class="triage-header">When</th>
272 <th class="triage-header">Who</th>
273 <th class="triage-header">Suspected Build Number</th>
274 <th class="triage-header">Result</th>
275 <th class="triage-header">Analysis Version Number</th>
276 </tr>
277 <tbody>
278 {% for triage_record in triage_history %}
279 <tr>
280 <td class="triage-cell">{{ triage_record.triaged_time }}</td>
281 <td class="triage-cell">{{ triage_record.user_name }}</td>
282 <td class="triage-cell"><a href="https://build.chromium.org/p/{{ m aster_name }}/builders/{{ builder_name }}/builds/{{ triage_record.suspect_info.b uild_number }}" target="_blank">{{ triage_record.suspect_info.build_number }}</a ></a></td>
283 <td class="triage-cell">{{ triage_record.triage_result }}</td>
284 <td class="triage-cell">{{ triage_record.version_number }}</td>
285 </tr>
286 {% endfor %}
287 </tbody>
288 </table>
289 </div>
290 {% endif %}
209 </body> 291 </body>
210 </html> 292 </html>
OLDNEW
« no previous file with comments | « appengine/findit/templates/build_failure.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698