| <!-- |
| - Licensed to the Apache Software Foundation (ASF) under one |
| - or more contributor license agreements. See the NOTICE file |
| - distributed with this work for additional information |
| - regarding copyright ownership. The ASF licenses this file |
| - to you under the Apache License, Version 2.0 (the |
| - "License"); you may not use this file except in compliance |
| - with the License. You may obtain a copy of the License at |
| - |
| - http://www.apache.org/licenses/LICENSE-2.0 |
| - |
| - Unless required by applicable law or agreed to in writing, software |
| - distributed under the License is distributed on an "AS IS" BASIS, |
| - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| - See the License for the specific language governing permissions and |
| - limitations under the License. |
| --> |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Apache HBase Flaky Dashboard</title> |
| <style type="text/css"> |
| table { |
| table-layout: fixed; |
| } |
| th { |
| font-size: 15px; |
| } |
| td { |
| font-size: 18px; |
| vertical-align: text-top; |
| overflow: hidden; |
| white-space: nowrap; |
| } |
| .show_hide_button { |
| font-size: 100%; |
| padding: .5em 1em; |
| border: 0 rgba(0,0,0,0); |
| border-radius: 10px; |
| } |
| </style> |
| </head> |
| <body> |
| <p> |
| <img style="vertical-align:middle; display:inline-block;" height="80px" |
| src="https://hbase.apache.org/images/hbase_logo_with_orca_large.png"> |
| |
| <span style="font-size:50px; vertical-align:middle; display:inline-block;"> |
| Apache HBase Flaky Tests Dashboard |
| </span> |
| </p> |
| <br><br> |
| {% set counter = 0 %} |
| {% for url in results %} |
| {% set result = results[url] %} |
| {# Dedup ids since test names may duplicate across urls #} |
| {% set counter = counter + 1 %} |
| <span style="font-size:20px; font-weight:bold;">Job : {{ url |e }} |
| <a href="{{ url |e }}" style="text-decoration:none;">🔗</a></span> |
| <br/><br/> |
| <table> |
| <tr> |
| <th width="400px">Test Name</th> |
| <th width="150px">Flakyness</th> |
| <th width="200px">Failed/Timeout/Hanging</th> |
| <th>Run Ids</th> |
| </tr> |
| {% for test in result %} |
| {% set all = result[test]['all'] %} |
| {% set failed = result[test]['failed'] %} |
| {% set timeout = result[test]['timeout'] %} |
| {% set hanging = result[test]['hanging'] %} |
| {% set success = all.difference(failed).difference(hanging) %} |
| <tr> |
| <td>{{ test |e }}</td> |
| {% set flakyness = |
| (failed|length + hanging|length) * 100 / all|length %} |
| {% if flakyness == 100 %} |
| <td align="middle" style="background-color:#FF9999;"> |
| {% else %} |
| <td align="middle"> |
| {% endif %} |
| {{ "{:.1f}% ({} / {})".format( |
| flakyness, failed|length + hanging|length, all|length) }} |
| </td> |
| <td align="middle"> |
| {{ failed|length }} / {{ timeout|length }} / {{ hanging|length }} |
| </td> |
| <td> |
| {% set id = "details_" ~ test ~ "_" ~ counter %} |
| <button class="show_hide_button" onclick="toggle('{{ id }}')"> |
| show/hide</button> |
| <br/> |
| <div id="{{ id }}" |
| style="display: none; width:500px; white-space: normal"> |
| {% macro print_run_ids(url, run_ids) -%} |
| {% for i in run_ids %} |
| <a href="{{ url }}/{{ i }}">{{ i }}</a> |
| {% endfor %} |
| {%- endmacro %} |
| Failed : {{ print_run_ids(url, failed) }}<br/> |
| Timed Out : {{ print_run_ids(url, timeout) }}<br/> |
| Hanging : {{ print_run_ids(url, hanging) }}<br/> |
| Succeeded : {{ print_run_ids(url, success) }} |
| </div> |
| </td> |
| </tr> |
| {% endfor %} |
| </table> |
| <br><br><br> |
| {% endfor %} |
| <script type="text/javascript"> |
| function toggle(id) { |
| if (document.getElementById(id).style["display"] == "none") { |
| document.getElementById(id).style["display"] = "block"; |
| } else { |
| document.getElementById(id).style["display"] = "none"; |
| } |
| } |
| </script> |
| </body> |
| </html> |