openstack-health/app/views/test.html

148 lines
6.5 KiB
HTML

<header class="bs-header">
<div class="container">
<h1 class="page-header">{{ testCtrl.testShortName }}</h1>
<crumb-menu show-resolution="true" show-period="true">
<li>Test: {{testCtrl.testShortName }}</li>
</crumb-menu>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-lg-12">
<loading-indicator></loading-indicator>
<fresh-check></fresh-check>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Run Time</h3>
</div>
<div class="panel-body">
<chart width="100%" height="450px">
<chart-axis name="x" type="time" path=".x" opposes="y"
align="bottom" orient="horizontal" draw="true"
granular-format="%x %X"></chart-axis>
<chart-axis name="y" type="linear" path=".y" opposes="x"
align="left" orient="vertical" draw="true" grid="true"
granular-format=".1f| sec"></chart-axis>
<chart-dataset name="runtime"
title="Run Time"
data="testCtrl.runTimeEntries"></chart-dataset>
<chart-dataset name="avg"
title="Avg. Run Time"
data="testCtrl.avgRunTimeEntries"></chart-dataset>
<chart-canvas-line dataset="avg"
axes="x y"
stroke="black"
line-width="2"></chart-canvas-line>
<chart-canvas-scatter dataset="runtime"
axes="x y"
fill="rgba(0,0,255,0.5)"
radius="2"></chart-canvas-scatter>
<chart-tooltip primary="x" secondary="y"></chart-tooltip>
</chart>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Passes and Failures</h3>
</div>
<div class="panel-body">
<chart-multi-bar data="testCtrl.statusData" width="100%" height="450"></chart-multi-bar>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Total Test Status Counts</h3>
</div>
<table class="table table-hover default-cols">
<thead>
<tr>
<th>Status</th>
<th>Count</th>
<th>Percentage</th>
</tr>
</thead>
<tbody>
<tr>
<td>Successes</td>
<td>{{testCtrl.totalCounts.passes}}</td>
<td>{{testCtrl.totalCounts.passPercent|number:2}}%</td>
</tr>
<tr>
<td>Failures</td>
<td>{{testCtrl.totalCounts.fails}}</td>
<td>{{testCtrl.totalCounts.failPercent|number:2}}%</td>
</tr>
<tr>
<td>Skips</td>
<td>{{testCtrl.totalCounts.skips}}</td>
<td>{{testCtrl.totalCounts.skipPercent|number:2}}%</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Recent Failures</h3>
</div>
<div class="table-responsive">
<table table-sort data="testCtrl.recentRuns"
class="table table-hover default-cols">
<thead>
<tr>
<th sort-field="job_name">Job Name</th>
<th sort-field="provider">Node Provider</th>
<th sort-default sort-field="run_at">Run At</th>
<th sort-field="artifacts">Link</th>
<th sort-field="bugs">Likely Bugs</th>
</tr>
</thead>
<tbody>
<tr table-ref="table" ng-repeat="run in table.dataSorted">
<td><a ui-sref="job({ jobName: run.job_name })">{{ run.job_name }}</a></td>
<td><a ui-sref="groupedRuns({ runMetadataKey: 'node_provider', name: run.provider })">{{ run.provider }}</a></td>
<td class="nowrap">{{ run.run_at | date:'M/d/yyyy HH:mm' }}</td>
<td>
<a target="_blank" href="{{ run.artifacts }}">
{{ run.artifacts }}
<fa name="external-link"></fa>
</a>
</td>
<td>
<span ng-if="!!value.bugs">
<a ng-repeat="bug in value.bugs"
href="https://launchpad.net/bugs/{{bug}}"
uib-tooltip="Launchpad Bugs: {{bug}}"
target="_blank">{{bug}} <fa name="external-link"></fa>
</a>
</span>
<span ng-if="!value.bugs">-</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>