<!DOCTYPE html>
<html>
<head>
    <title>OCT Results report</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body id="main">

<h1>Performance results report</h1>

<h2>Summary</h2>

<div class="summary">
    transaction: {{ report.results.total_transactions }}
    <br>
    errors: {{ report.results.total_errors }}
    <br>
    run time: {{ run_time }}
    <br>
    test start: {{ report.results.start_datetime }}
    <br>
    test finish: {{ report.results.finish_datetime }}
    <br>
    time-series interval: {{ ts_interval }} seconds
    {% if turrets_config %}
        workload configuration
        <table>
            <tr>
                <th>turret name</th>
                <th>uuid</th>
                <th>canons</th>
                <th>script name</th>
                <th>rampup</th>
                <th>Last known status</th>
                <th>Last status update</th>
            </tr>
            {% for turret in turrets_config %}
            <tr>
                <td>{{ turret.name }}</td>
                <td>{{ turret.uuid }}</td>
                <td>{{ turret.canons }}</td>
                <td>{{ turret.script }}</td>
                <td>{{ turret.rampup }}</td>
                <td>{{ turret.status }}</td>
                <td>{{ turret.updated_at }}</td>
            </tr>
            {% endfor %}
        </table>
    {% endif %}
</div>

<h2>All transactions</h2>

<h3>Transaction Response Summary (secs)</h3>

<table>
    <tr>
        <th>count</th>
        <th>min</th>
        <th>avg</th>
        <th>80pct</th>
        <th>90pct</th>
        <th>95pct</th>
        <th>max</th>
        <th>stdev</th>
    </tr>
    <tr>
        <td>{{ report.results.total_transactions }} </td>
        <td>{{ all_results.min_trans_val|round(2) }}</td>
        <td>{{ all_results.average_trans_val|round(2) }}</td>
        <td>{{ all_results.pct_80_trans_val|round(2) }}</td>
        <td>{{ all_results.pct_90_trans_val|round(2) }}</td>
        <td>{{ all_results.pct_95_trans_val|round(2) }}</td>
        <td>{{ all_results.max_trans_val|round(2) }}</td>
        <td>{{ all_results.stdev_trans_val|round(2) }}</td>
    </tr>
</table>

<h3>Interval Details (secs)</h3>

<table>
    <tr>
        <th>interval</th>
        <th>count</th>
        <th>rate</th>
        <th>min</th>
        <th>avg</th>
        <th>80pct</th>
        <th>90pct</th>
        <th>95pct</th>
        <th>max</th>
        <th>stdev</th>
    </tr>
    {% for start in all_results.interval_results.interval_list %}
    <tr>
        <td>{{ loop.index + 1 }}</td>
        <td>{{ all_results.interval_results.count.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.rate.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.min.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.avg_resptime_points.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.percentile_80.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.percentile_90.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.percentile_95.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.max.get(start)|round(2) }}</td>
        <td>{{ all_results.interval_results.stdev.get(start)|round(2) }}</td>
    </tr>
    {% endfor %}
</table>

<h3>Graphs</h3>

<h4>Response Time: {{ ts_interval }} sec time-series</h4>

<figure>
    <embed src="All_Transactions_response_times.svg" type="image/svg+xml" />
</figure>

<h4>Response Time: raw data (all points)</h4>

<figure>
    <embed src="All_Transactions_response_times_intervals.svg" type="image/svg+xml" />
</figure>

<h4>Throughput: 5 sec time-series</h4>

<figure>
    <embed src="All_Transactions_throughput.svg" type="image/svg+xml" />
</figure>

{% for timer in report.custom_timers %}
<hr />
<h2>Custom Timer: {{ timer.name }}</h2>

<h3>Timer Summary (secs)</h3>
<table>
    <tr>
        <th>count</th>
        <th>min</th>
        <th>avg</th>
        <th>80pct</th>
        <th>90pct</th>
        <th>95pct</th>
        <th>max</th>
        <th>stdev</th>
    </tr>
    <tr>
        <td>{{ timer.trans_timer_vals|length }} </td>
        <td>{{ timer.min_trans_val|round(2) }}</td>
        <td>{{ timer.average_trans_val|round(2) }}</td>
        <td>{{ timer.pct_80_trans_val|round(2) }}</td>
        <td>{{ timer.pct_90_trans_val|round(2) }}</td>
        <td>{{ timer.pct_95_trans_val|round(2) }}</td>
        <td>{{ timer.max_trans_val|round(2) }}</td>
        <td>{{ timer.stdev_trans_val|round(2) }}</td>
    </tr>
</table>

<h3>Interval Details (secs)</h3>

<table>
    <tr>
        <th>interval</th>
        <th>count</th>
        <th>rate</th>
        <th>min</th>
        <th>avg</th>
        <th>80pct</th>
        <th>90pct</th>
        <th>95pct</th>
        <th>max</th>
        <th>stdev</th>
    </tr>
    {% for start in timer.interval_results.interval_list %}
    <tr>
        <td>{{ loop.index + 1 }}</td>
        <td>{{ timer.interval_results.count.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.rate.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.min.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.avg_resptime_points.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.percentile_80.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.percentile_90.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.percentile_95.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.max.get(start)|round(2) }}</td>
        <td>{{ timer.interval_results.stdev.get(start)|round(2) }}</td>
    </tr>
    {% endfor %}
</table>

<h3>Graphs</h3>

<h4>Response Time: {{ ts_interval }} sec time-series</h4>

<figure>
    <embed src="{{ timer.name }}_response_times.svg" type="image/svg+xml" />
</figure>

<h4>Response Time: raw data (all points)</h4>

<figure>
    <embed src="{{ timer.name }}_response_times_intervals.svg" type="image/svg+xml" />
</figure>

<h4>Throughput: 5 sec time-series</h4>

<figure>
    <embed src="{{ timer.name }}_throughput.svg" type="image/svg+xml" />
</figure>
{% endfor %}

</body>
</html>
