locust 2.46.8.dev6__tar.gz → 2.46.8.dev14__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.8.dev6 → locust-2.46.8.dev14}/PKG-INFO +1 -1
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/_version.py +2 -2
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/fasthttp.py +3 -3
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/web.py +11 -1
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/.gitignore +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/LICENSE +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/README.md +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/hatch_build.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/__init__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/__main__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/argument_parser.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/clients.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/__init__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/csv_request_logger.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/dns.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/milvus.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/mongodb.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/mqtt.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/oai.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/postgres.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/qdrant.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/contrib/socketio.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/debug.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/dispatch.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/env.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/event.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/exception.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/html.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/input_events.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/log.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/main.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/opentelemetry.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/py.typed +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/rpc/__init__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/rpc/protocol.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/runners.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/shape.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/stats.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/__init__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/inspectuser.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/markov_taskset.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/sequential_taskset.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/task.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/users.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/user/wait_time.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/__init__.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/cache.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/date.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/deprecation.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/directory.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/exception_handler.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/load_locustfile.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/rounding.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/timespan.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/util/url.py +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/terminal.gif +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/auth.html +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/index.html +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/locust/webui/dist/report.html +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/pyproject.toml +0 -0
- {locust-2.46.8.dev6 → locust-2.46.8.dev14}/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.8.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 46, 8, '
|
|
21
|
+
__version__ = version = '2.46.8.dev14'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 46, 8, 'dev14')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -633,9 +633,9 @@ class LocustUserAgent(UserAgent):
|
|
|
633
633
|
def _urlopen(self, request):
|
|
634
634
|
"""Override _urlopen() in order to make it use the response_type attribute"""
|
|
635
635
|
client = self.clientpool.get_client(request.url_split)
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
)
|
|
636
|
+
# quoted_uri (percent-encoded, as geventhttpclient's own UserAgent sends it) was added in geventhttpclient 2.3.4
|
|
637
|
+
request_uri = getattr(request.url_split, "quoted_uri", request.url_split.request_uri)
|
|
638
|
+
resp = client.request(request.method, request_uri, body=request.payload, headers=request.headers)
|
|
639
639
|
return self.response_type(resp, request=request, sent_request=resp._sent_request)
|
|
640
640
|
|
|
641
641
|
def _verify_status(self, status_code, url=None):
|
|
@@ -162,6 +162,7 @@ class WebUI:
|
|
|
162
162
|
app.debug = True
|
|
163
163
|
self.greenlet: gevent.Greenlet | None = None
|
|
164
164
|
self._swarm_greenlet: gevent.Greenlet | None = None
|
|
165
|
+
self._run_time_greenlet: gevent.Greenlet | None = None
|
|
165
166
|
self.template_args = {}
|
|
166
167
|
self.auth_args = {}
|
|
167
168
|
self.app.template_folder = build_path or DEFAULT_BUILD_PATH
|
|
@@ -336,6 +337,7 @@ class WebUI:
|
|
|
336
337
|
if self._swarm_greenlet is not None:
|
|
337
338
|
self._swarm_greenlet.kill(block=True)
|
|
338
339
|
self._swarm_greenlet = None
|
|
340
|
+
self._cancel_run_time_timer()
|
|
339
341
|
|
|
340
342
|
if environment.runner is not None:
|
|
341
343
|
if user_count is None or user_count < 0 or spawn_rate is None or spawn_rate <= 0:
|
|
@@ -350,7 +352,8 @@ class WebUI:
|
|
|
350
352
|
"host": environment.host,
|
|
351
353
|
}
|
|
352
354
|
if run_time:
|
|
353
|
-
gevent.spawn_later(run_time, self._stop_runners)
|
|
355
|
+
self._run_time_greenlet = gevent.spawn_later(run_time, self._stop_runners)
|
|
356
|
+
self._run_time_greenlet.link_exception(greenlet_exception_handler)
|
|
354
357
|
response_data["run_time"] = run_time
|
|
355
358
|
|
|
356
359
|
if self.userclass_picker_is_active:
|
|
@@ -366,6 +369,7 @@ class WebUI:
|
|
|
366
369
|
if self._swarm_greenlet is not None:
|
|
367
370
|
self._swarm_greenlet.kill(block=True)
|
|
368
371
|
self._swarm_greenlet = None
|
|
372
|
+
self._cancel_run_time_timer()
|
|
369
373
|
if environment.runner is not None:
|
|
370
374
|
environment.runner.stop()
|
|
371
375
|
return jsonify({"success": True, "message": "Test stopped"})
|
|
@@ -797,5 +801,11 @@ class WebUI:
|
|
|
797
801
|
self.environment._remove_user_classes_with_weight_zero()
|
|
798
802
|
self.environment._validate_user_class_name_uniqueness()
|
|
799
803
|
|
|
804
|
+
def _cancel_run_time_timer(self):
|
|
805
|
+
if self._run_time_greenlet is not None:
|
|
806
|
+
self._run_time_greenlet.kill(block=False)
|
|
807
|
+
self._run_time_greenlet = None
|
|
808
|
+
|
|
800
809
|
def _stop_runners(self):
|
|
810
|
+
self._run_time_greenlet = None
|
|
801
811
|
self.environment.runner.stop()
|
|
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
|