hbase/dev-support/flaky-dashboard-template.html

141 lines
4.7 KiB
HTML

<!--
- 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">
&nbsp;&nbsp;&nbsp;&nbsp;
<span style="font-size:50px; vertical-align:middle; display:inline-block;">
Apache HBase Flaky Tests Dashboard
</span>
</p>
<span>Last updated: <b>{{datetime}}</b></span><br>
<span>Count of flaky tests (cumulated from all jobs):
<b>{{bad_tests_count}}</b></span><br>
<br><br>
<span style="font-size:20px;"><b>List of Jobs</b></span><br>
<br>
{% for url in results %}
<a href="#job_{{ loop.index }}">{{ url |e }}</a>
<br>
{% endfor %}
<br>
<br>
<span style="font-size:20px;"><b>Results</b></span><br>
<br>
{% for url in results %}
{% set result = results[url] %}
{% set url_counter = loop.index %}
{# Dedup ids since test names may duplicate across urls #}
<span id="job_{{ url_counter }}" style="font-weight:bold;">
{{ url |e }}<br>
<a href="{{ url |e }}">
Go to <img height="16px" src="https://jenkins.io/sites/default/files/jenkins_favicon.ico">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="#">Go to top</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 = result[test]['success'] %}
<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 ~ "_" ~ url_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>&nbsp;
{% 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>