locust 2.26.1.dev72__py3-none-any.whl → 2.27.1.dev7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- locust/_version.py +2 -2
- locust/argument_parser.py +1 -1
- locust/env.py +0 -2
- locust/html.py +37 -83
- locust/main.py +10 -14
- locust/stats.py +3 -10
- locust/test/test_fasthttp.py +6 -4
- locust/test/test_main.py +6 -15
- locust/test/test_web.py +53 -199
- locust/web.py +18 -56
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/METADATA +1 -1
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/RECORD +16 -41
- locust/static/chart.js +0 -133
- locust/static/css/application.css +0 -491
- locust/static/css/application.css.map +0 -1
- locust/static/css/tables.css +0 -74
- locust/static/css/tables.css.map +0 -1
- locust/static/echarts.common.min.js +0 -22
- locust/static/img/favicon.ico +0 -0
- locust/static/img/logo.png +0 -0
- locust/static/img/ui-screenshot-charts.png +0 -0
- locust/static/img/ui-screenshot-start-test.png +0 -0
- locust/static/img/ui-screenshot-stats.png +0 -0
- locust/static/img/ui-screenshot-workers.png +0 -0
- locust/static/jquery-1.11.3.min.js +0 -5
- locust/static/jquery.jqote2.min.js +0 -14
- locust/static/jquery.tools.min.js +0 -17
- locust/static/locust.js +0 -324
- locust/static/sass/_base.sass +0 -27
- locust/static/sass/_mixins.sass +0 -3
- locust/static/sass/application.sass +0 -320
- locust/static/sass/tables.sass +0 -61
- locust/static/tasks.js +0 -48
- locust/static/vintage.js +0 -35
- locust/templates/index.html +0 -370
- locust/templates/report.html +0 -265
- locust/templates/stats_data.html +0 -10
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/LICENSE +0 -0
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/WHEEL +0 -0
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/entry_points.txt +0 -0
- {locust-2.26.1.dev72.dist-info → locust-2.27.1.dev7.dist-info}/top_level.txt +0 -0
locust/templates/report.html
DELETED
@@ -1,265 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Test Report for {{ escape(str(locustfile)) }}</title>
|
5
|
-
<link rel="shortcut icon" href="../static/img/favicon.ico" type="image/x-icon"/>
|
6
|
-
<style>
|
7
|
-
body {
|
8
|
-
background: #173529;
|
9
|
-
}
|
10
|
-
.container {
|
11
|
-
width: 1000px;
|
12
|
-
margin: 0 auto;
|
13
|
-
padding: 10px;
|
14
|
-
font-family: Arial, Helvetica, sans-serif;
|
15
|
-
font-size: 14px;
|
16
|
-
color: #ecf3ee;
|
17
|
-
}
|
18
|
-
|
19
|
-
.info span {
|
20
|
-
color: #b3c3bc;
|
21
|
-
}
|
22
|
-
|
23
|
-
.charts-container .chart {
|
24
|
-
width: 100%;
|
25
|
-
height: 350px;
|
26
|
-
margin-bottom: 30px;
|
27
|
-
}
|
28
|
-
|
29
|
-
.download {
|
30
|
-
float: right;
|
31
|
-
}
|
32
|
-
|
33
|
-
.download a {
|
34
|
-
color: #00ca5a;
|
35
|
-
}
|
36
|
-
|
37
|
-
{{ static_css|safe }}
|
38
|
-
</style>
|
39
|
-
</head>
|
40
|
-
<body>
|
41
|
-
<div class="container">
|
42
|
-
<h1>Locust Test Report</h1>
|
43
|
-
|
44
|
-
<div class="info">
|
45
|
-
{% if show_download_link %}
|
46
|
-
<p class="download"><a href="?download=1">Download the Report</a></p>
|
47
|
-
{% endif %}
|
48
|
-
<p>During: <span class="l10n datetime">{{ start_time }}</span> - <span class="l10n datetime">{{ end_time }}</span></p>
|
49
|
-
<p>Target Host: <span>{{ escape(str(host)) }}</span></p>
|
50
|
-
<p>Script: <span>{{ escape(str(locustfile)) }}</span></p>
|
51
|
-
</div>
|
52
|
-
|
53
|
-
<div class="requests">
|
54
|
-
<h2>Request Statistics</h2>
|
55
|
-
<table class="stats">
|
56
|
-
<thead>
|
57
|
-
<tr>
|
58
|
-
<th class="sortable">Method</th>
|
59
|
-
<th class="sortable">Name</th>
|
60
|
-
<th class="sortable"># Requests</th>
|
61
|
-
<th class="sortable"># Fails</th>
|
62
|
-
<th class="sortable">Average (ms)</th>
|
63
|
-
<th class="sortable">Min (ms)</th>
|
64
|
-
<th class="sortable">Max (ms)</th>
|
65
|
-
<th class="sortable">Average size (bytes)</th>
|
66
|
-
<th class="sortable">RPS</th>
|
67
|
-
<th class="sortable">Failures/s</th>
|
68
|
-
</tr>
|
69
|
-
</thead>
|
70
|
-
<tbody>
|
71
|
-
{% for s in requests_statistics %}
|
72
|
-
<tr{% if loop.last %} class="total"{% endif %}>
|
73
|
-
<td>{{ escape(s.method or "") }}</td>
|
74
|
-
<td>{{ escape(s.name) }}</td>
|
75
|
-
<td>{{ int(s.num_requests) }}</td>
|
76
|
-
<td>{{ int(s.num_failures) }}</td>
|
77
|
-
<td>{{ int(s.avg_response_time) }}</td>
|
78
|
-
<td>{{ int(s.min_response_time or 0) }}</td>
|
79
|
-
<td>{{ int(s.max_response_time) }}</td>
|
80
|
-
<td>{{ int(s.avg_content_length) }}</td>
|
81
|
-
<td>{{ round(s.total_rps, 1) }}</td>
|
82
|
-
<td>{{ round(s.total_fail_per_sec, 1) }}</td>
|
83
|
-
</tr>
|
84
|
-
{% endfor %}
|
85
|
-
</tbody>
|
86
|
-
</table>
|
87
|
-
</div>
|
88
|
-
|
89
|
-
<div class="responses">
|
90
|
-
<h2>Response Time Statistics</h2>
|
91
|
-
<table class="stats">
|
92
|
-
<thead>
|
93
|
-
<tr>
|
94
|
-
<th class="sortable">Method</th>
|
95
|
-
<th class="sortable">Name</th>
|
96
|
-
<th class="sortable">50%ile (ms)</th>
|
97
|
-
<th class="sortable">60%ile (ms)</th>
|
98
|
-
<th class="sortable">70%ile (ms)</th>
|
99
|
-
<th class="sortable">80%ile (ms)</th>
|
100
|
-
<th class="sortable">90%ile (ms)</th>
|
101
|
-
<th class="sortable">95%ile (ms)</th>
|
102
|
-
<th class="sortable">99%ile (ms)</th>
|
103
|
-
<th class="sortable">100%ile (ms)</th>
|
104
|
-
</tr>
|
105
|
-
</thead>
|
106
|
-
<tbody>
|
107
|
-
{% for s in requests_statistics %}
|
108
|
-
<tr{% if loop.last %} class="total"{% endif %}>
|
109
|
-
<td>{{ escape(s.method or "") }}</td>
|
110
|
-
<td>{{ escape(s.name) }}</td>
|
111
|
-
<td>{{ int(s.get_response_time_percentile(0.5)) }}</td>
|
112
|
-
<td>{{ int(s.get_response_time_percentile(0.6)) }}</td>
|
113
|
-
<td>{{ int(s.get_response_time_percentile(0.7)) }}</td>
|
114
|
-
<td>{{ int(s.get_response_time_percentile(0.8)) }}</td>
|
115
|
-
<td>{{ int(s.get_response_time_percentile(0.9)) }}</td>
|
116
|
-
<td>{{ int(s.get_response_time_percentile(0.95)) }}</td>
|
117
|
-
<td>{{ int(s.get_response_time_percentile(0.99)) }}</td>
|
118
|
-
<td>{{ int(s.get_response_time_percentile(1)) }}</td>
|
119
|
-
</tr>
|
120
|
-
{% endfor %}
|
121
|
-
</tbody>
|
122
|
-
</table>
|
123
|
-
</div>
|
124
|
-
|
125
|
-
{% if failures_statistics %}
|
126
|
-
<div class="failures">
|
127
|
-
<h2>Failures Statistics</h2>
|
128
|
-
<table class="stats">
|
129
|
-
<thead>
|
130
|
-
<tr>
|
131
|
-
<th class="sortable">Method</th>
|
132
|
-
<th class="sortable">Name</th>
|
133
|
-
<th class="sortable">Error</th>
|
134
|
-
<th class="sortable">Occurrences</th>
|
135
|
-
</tr>
|
136
|
-
</thead>
|
137
|
-
<tbody>
|
138
|
-
{% for s in failures_statistics %}
|
139
|
-
<tr>
|
140
|
-
<td>{{ escape(s.method or "") }}</td>
|
141
|
-
<td>{{ escape(s.name) }}</td>
|
142
|
-
<td>{{ escape(str(s.error)) }}</td>
|
143
|
-
<td>{{ s.occurrences }}</td>
|
144
|
-
</tr>
|
145
|
-
{% endfor %}
|
146
|
-
</tbody>
|
147
|
-
</table>
|
148
|
-
</div>
|
149
|
-
{% endif %}
|
150
|
-
|
151
|
-
{% if exceptions_statistics %}
|
152
|
-
<div class="exceptions">
|
153
|
-
<h2>Exceptions Statistics</h2>
|
154
|
-
<table>
|
155
|
-
<thead>
|
156
|
-
<tr>
|
157
|
-
<th class="sortable">Count</th>
|
158
|
-
<th class="sortable">Message</th>
|
159
|
-
<th class="sortable">Traceback</th>
|
160
|
-
<th class="sortable">Nodes</th>
|
161
|
-
</tr>
|
162
|
-
</thead>
|
163
|
-
<tbody>
|
164
|
-
{% for s in exceptions_statistics %}
|
165
|
-
<tr>
|
166
|
-
<td>{{ s.count }}</td>
|
167
|
-
<td>{{ escape(s.msg) }}</td>
|
168
|
-
<td>{{ escape(s.traceback) }}</td>
|
169
|
-
<td>{{ escape(s.nodes) }}</td>
|
170
|
-
</tr>
|
171
|
-
{% endfor %}
|
172
|
-
</tbody>
|
173
|
-
</table>
|
174
|
-
</div>
|
175
|
-
{% endif %}
|
176
|
-
|
177
|
-
{% if history %}
|
178
|
-
<div class="charts-container">
|
179
|
-
<h2>Charts</h2>
|
180
|
-
</div>
|
181
|
-
{% endif %}
|
182
|
-
|
183
|
-
<div id="tasks">
|
184
|
-
<h2>Final ratio</h2>
|
185
|
-
<div class="tasks" data-tasks="{{ escape(tasks) }}"></div>
|
186
|
-
</div>
|
187
|
-
|
188
|
-
</div>
|
189
|
-
|
190
|
-
{# <script type="text/javascript" src="/static/jquery-1.11.3.min.js"></script> #}
|
191
|
-
{# <script type="text/javascript" src="/static/echarts.common.min.js"></script> #}
|
192
|
-
{# <script type="text/javascript" src="/static/vintage.js"></script> #}
|
193
|
-
{# <script type="text/javascript" src="/static/chart.js"></script> #}
|
194
|
-
{# <script type="text/javascript" src="./static/tasks.js"></script> #}
|
195
|
-
<script>
|
196
|
-
{{ static_js|safe }}
|
197
|
-
</script>
|
198
|
-
|
199
|
-
<script>
|
200
|
-
{% include 'stats_data.html' %}
|
201
|
-
var percentile1 = {{ percentile1|tojson }}
|
202
|
-
var percentile2 = {{ percentile2|tojson }}
|
203
|
-
var rpsChart = new LocustLineChart($(".charts-container"), "Total Requests per Second", ["RPS", "Failures/s"], "reqs/s", ['#00ca5a', '#ff6d6d']);
|
204
|
-
var responseTimeChart = new LocustLineChart($(".charts-container"), "Response Times (ms)", [(percentile1*100).toString() + "th percentile" , (percentile2*100).toString() + "th percentile"], "ms");
|
205
|
-
var usersChart = new LocustLineChart($(".charts-container"), "Number of Users", ["Users"], "users");
|
206
|
-
|
207
|
-
if(stats_history["time"].length > 0){
|
208
|
-
rpsChart.chart.setOption({
|
209
|
-
xAxis: {data: stats_history["time"]},
|
210
|
-
series: [
|
211
|
-
{data: stats_history["current_rps"]},
|
212
|
-
{data: stats_history["current_fail_per_sec"]},
|
213
|
-
]
|
214
|
-
});
|
215
|
-
|
216
|
-
responseTimeChart.chart.setOption({
|
217
|
-
xAxis: {data: stats_history["time"]},
|
218
|
-
series: [
|
219
|
-
{data: stats_history["response_time_percentile_1"]},
|
220
|
-
{data: stats_history["response_time_percentile_2"]},
|
221
|
-
]
|
222
|
-
});
|
223
|
-
|
224
|
-
usersChart.chart.setOption({
|
225
|
-
xAxis: {
|
226
|
-
data: stats_history["time"]
|
227
|
-
},
|
228
|
-
series: [
|
229
|
-
{data: stats_history["user_count"]},
|
230
|
-
]
|
231
|
-
});
|
232
|
-
}
|
233
|
-
|
234
|
-
$(".l10n.datetime").html((index, currentContent) => {
|
235
|
-
if (!currentContent || !currentContent.includes(" ") || !currentContent.includes(":")) {
|
236
|
-
return currentContent;
|
237
|
-
}
|
238
|
-
|
239
|
-
return new Date(Date.parse(currentContent.replace(" ", "T") + ".000Z")).toLocaleString();
|
240
|
-
});
|
241
|
-
|
242
|
-
fillTasksFromObj()
|
243
|
-
</script>
|
244
|
-
|
245
|
-
<script>
|
246
|
-
$('.sortable').click(function() {
|
247
|
-
var table = $(this).parents('table').eq(0)
|
248
|
-
var rowArray = table.find('tr:gt(0)').toArray()
|
249
|
-
var aggregatedRow = rowArray.pop()
|
250
|
-
var rows = rowArray.sort(comparer($(this).index()))
|
251
|
-
this.asc = !this.asc
|
252
|
-
if (!this.asc){rows = rows.reverse()}
|
253
|
-
for (var i = 0; i < rows.length; i++){table.append(rows[i])}
|
254
|
-
table.append(aggregatedRow)
|
255
|
-
})
|
256
|
-
function comparer(index) {
|
257
|
-
return function(a,b) {
|
258
|
-
var valA = getCellValue(a, index), valB = getCellValue(b, index)
|
259
|
-
return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.toString().localeCompare(valB)
|
260
|
-
}
|
261
|
-
}
|
262
|
-
function getCellValue(row, index) { return $(row).children('td').eq(index).text() }
|
263
|
-
</script>
|
264
|
-
</body>
|
265
|
-
</html>
|
locust/templates/stats_data.html
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
{% set time_data = [] %}{% set user_count_data = [] %}{% set current_rps_data = [] %}{% set current_fail_per_sec_data = [] %}{% set response_time_percentile_2_data = [] %}{% set response_time_percentile_1_data = [] %}{% for r in history %}{% do time_data.append(r.time) %}{% do user_count_data.append({"value": r.user_count}) %}{% do current_rps_data.append({"value": r.current_rps, "users": r.user_count}) %}{% do current_fail_per_sec_data.append({"value": r.current_fail_per_sec, "users": r.user_count}) %}{% do response_time_percentile_2_data.append({"value": r.response_time_percentile_2, "users": r.user_count}) %}{% do response_time_percentile_1_data.append({"value": r.response_time_percentile_1, "users": r.user_count}) %}{% endfor %}
|
2
|
-
var stats_history = {
|
3
|
-
"time": {{ time_data | tojson }}.map(server_time => new Date(new Date().setUTCHours(...(server_time.split(":")))).toLocaleTimeString()),
|
4
|
-
"user_count": {{ user_count_data | tojson }},
|
5
|
-
"current_rps": {{ current_rps_data | tojson }},
|
6
|
-
"current_fail_per_sec": {{ current_fail_per_sec_data | tojson }},
|
7
|
-
"response_time_percentile_1": {{ response_time_percentile_1_data | tojson }},
|
8
|
-
"response_time_percentile_2": {{ response_time_percentile_2_data | tojson }},
|
9
|
-
"markers": [],
|
10
|
-
};
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|