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.
Files changed (69) hide show
  1. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/PKG-INFO +1 -1
  2. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/_version.py +2 -2
  3. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/web.py +14 -3
  4. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/.gitignore +0 -0
  5. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/LICENSE +0 -0
  6. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/README.md +0 -0
  7. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/hatch_build.py +0 -0
  8. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/__init__.py +0 -0
  9. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/__main__.py +0 -0
  10. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/argument_parser.py +0 -0
  11. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/clients.py +0 -0
  12. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/__init__.py +0 -0
  13. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/csv_request_logger.py +0 -0
  14. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/dns.py +0 -0
  15. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/fasthttp.py +0 -0
  16. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/milvus.py +0 -0
  17. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/mongodb.py +0 -0
  18. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/mqtt.py +0 -0
  19. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/oai.py +0 -0
  20. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/postgres.py +0 -0
  21. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/qdrant.py +0 -0
  22. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/contrib/socketio.py +0 -0
  23. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/debug.py +0 -0
  24. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/dispatch.py +0 -0
  25. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/env.py +0 -0
  26. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/event.py +0 -0
  27. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/exception.py +0 -0
  28. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/html.py +0 -0
  29. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/input_events.py +0 -0
  30. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/log.py +0 -0
  31. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/main.py +0 -0
  32. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/opentelemetry.py +0 -0
  33. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/py.typed +0 -0
  34. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/__init__.py +0 -0
  35. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/protocol.py +0 -0
  36. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/rpc/zmqrpc.py +0 -0
  37. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/runners.py +0 -0
  38. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/shape.py +0 -0
  39. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/stats.py +0 -0
  40. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/__init__.py +0 -0
  41. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/inspectuser.py +0 -0
  42. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/markov_taskset.py +0 -0
  43. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/sequential_taskset.py +0 -0
  44. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/task.py +0 -0
  45. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/users.py +0 -0
  46. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/user/wait_time.py +0 -0
  47. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/__init__.py +0 -0
  48. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/cache.py +0 -0
  49. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/date.py +0 -0
  50. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/deprecation.py +0 -0
  51. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/directory.py +0 -0
  52. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/exception_handler.py +0 -0
  53. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/load_locustfile.py +0 -0
  54. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/rounding.py +0 -0
  55. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/timespan.py +0 -0
  56. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/util/url.py +0 -0
  57. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/favicon-dark.png +0 -0
  58. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/favicon-light.png +0 -0
  59. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/graphs-dark.png +0 -0
  60. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/graphs-light.png +0 -0
  61. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
  62. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/terminal.gif +0 -0
  63. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/testruns-dark.png +0 -0
  64. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/assets/testruns-light.png +0 -0
  65. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/auth.html +0 -0
  66. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/index.html +0 -0
  67. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/locust/webui/dist/report.html +0 -0
  68. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/pyproject.toml +0 -0
  69. {locust-2.46.5.dev4 → locust-2.46.5.dev5}/pytest_locust/plugin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: locust
3
- Version: 2.46.5.dev4
3
+ Version: 2.46.5.dev5
4
4
  Summary: Developer-friendly load testing framework
5
5
  Project-URL: Homepage, https://locust.cloud/
6
6
  Project-URL: Repository, https://github.com/locustio/locust
@@ -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.dev4'
22
- __version_tuple__ = version_tuple = (2, 46, 5, 'dev4')
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}: {error.name}",
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
- user_count = int(value)
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
- spawn_rate = float(value)
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