locust 2.46.5.dev4__tar.gz → 2.46.5.dev5__tar.gz
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-2.46.5.dev4 → locust-2.46.5.dev5}/PKG-INFO +1 -1
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/_version.py +2 -2
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/web.py +14 -3
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/.gitignore +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/LICENSE +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/README.md +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/hatch_build.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/__init__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/__main__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/argument_parser.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/clients.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/__init__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/csv_request_logger.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/dns.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/fasthttp.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/milvus.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/mongodb.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/mqtt.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/oai.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/postgres.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/qdrant.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/socketio.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/debug.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/dispatch.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/env.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/event.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/exception.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/html.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/input_events.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/log.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/main.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/opentelemetry.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/py.typed +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/__init__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/protocol.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/runners.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/shape.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/stats.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/__init__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/inspectuser.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/markov_taskset.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/sequential_taskset.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/task.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/users.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/wait_time.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/__init__.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/cache.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/date.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/deprecation.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/directory.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/exception_handler.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/load_locustfile.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/rounding.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/timespan.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/url.py +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/terminal.gif +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/auth.html +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/index.html +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/report.html +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/pyproject.toml +0 -0
- {locust-2.46.5.dev4 → locust-2.46.5.dev5}/pytest_locust/plugin.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '2.46.5.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 46, 5, '
|
|
21
|
+
__version__ = version = '2.46.5.dev5'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 46, 5, 'dev5')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -183,9 +183,10 @@ class WebUI:
|
|
|
183
183
|
def handle_exception(error):
|
|
184
184
|
error_message = str(error)
|
|
185
185
|
error_code = getattr(error, "code", 500)
|
|
186
|
+
error_name = getattr(error, "name", type(error).__name__)
|
|
186
187
|
logger.log(
|
|
187
188
|
logging.DEBUG if error_code <= 404 else logging.ERROR,
|
|
188
|
-
f"UI got request for {request.method} {request.path}, but it resulted in a {error_code}: {
|
|
189
|
+
f"UI got request for {request.method} {request.path}, but it resulted in a {error_code}: {error_name}",
|
|
189
190
|
)
|
|
190
191
|
return make_response(error_message, error_code)
|
|
191
192
|
|
|
@@ -260,10 +261,20 @@ class WebUI:
|
|
|
260
261
|
for key, value in request.form.items():
|
|
261
262
|
match key:
|
|
262
263
|
case "user_count": # if we just renamed this field to "users" we wouldn't need this
|
|
263
|
-
|
|
264
|
+
try:
|
|
265
|
+
user_count = int(value)
|
|
266
|
+
except ValueError:
|
|
267
|
+
err_msg = f"Invalid user_count value: {value!r} (must be an integer)"
|
|
268
|
+
logger.error(err_msg)
|
|
269
|
+
return jsonify({"success": False, "message": err_msg, "host": environment.host})
|
|
264
270
|
parsed_options_dict["users"] = user_count
|
|
265
271
|
case "spawn_rate":
|
|
266
|
-
|
|
272
|
+
try:
|
|
273
|
+
spawn_rate = float(value)
|
|
274
|
+
except ValueError:
|
|
275
|
+
err_msg = f"Invalid spawn_rate value: {value!r} (must be a number)"
|
|
276
|
+
logger.error(err_msg)
|
|
277
|
+
return jsonify({"success": False, "message": err_msg, "host": environment.host})
|
|
267
278
|
parsed_options_dict[key] = spawn_rate
|
|
268
279
|
case "host":
|
|
269
280
|
# Replace < > to guard against XSS
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|