locust 2.46.8.dev32__tar.gz → 2.46.8.dev43__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.dev32 → locust-2.46.8.dev43}/PKG-INFO +1 -1
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/_version.py +2 -2
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/milvus.py +1 -1
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/qdrant.py +2 -2
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/log.py +3 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/main.py +6 -4
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/runners.py +11 -5
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/.gitignore +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/LICENSE +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/README.md +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/hatch_build.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/__init__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/__main__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/argument_parser.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/clients.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/__init__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/csv_request_logger.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/dns.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/fasthttp.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/mongodb.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/mqtt.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/oai.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/postgres.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/contrib/socketio.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/debug.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/dispatch.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/env.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/event.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/exception.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/html.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/input_events.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/opentelemetry.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/py.typed +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/rpc/__init__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/rpc/protocol.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/shape.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/stats.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/__init__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/inspectuser.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/markov_taskset.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/sequential_taskset.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/task.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/users.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/user/wait_time.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/__init__.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/cache.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/date.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/deprecation.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/directory.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/exception_handler.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/load_locustfile.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/rounding.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/timespan.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/util/url.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/web.py +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/terminal.gif +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/auth.html +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/index.html +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/locust/webui/dist/report.html +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/pyproject.toml +0 -0
- {locust-2.46.8.dev32 → locust-2.46.8.dev43}/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.dev43'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 46, 8, 'dev43')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -284,7 +284,7 @@ class MilvusUser(User):
|
|
|
284
284
|
Milvus server URI, e.g. ``"http://localhost:19530"``.
|
|
285
285
|
collection_name : str
|
|
286
286
|
The name of the collection to operate on.
|
|
287
|
-
|
|
287
|
+
``**client_kwargs``
|
|
288
288
|
Additional keyword arguments forwarded to the client.
|
|
289
289
|
"""
|
|
290
290
|
|
|
@@ -148,9 +148,9 @@ class QdrantUser(User):
|
|
|
148
148
|
Qdrant server URL, e.g. ``"http://localhost:6333"``.
|
|
149
149
|
collection_name : str
|
|
150
150
|
The name of the collection to operate on.
|
|
151
|
-
|
|
151
|
+
``**client_kwargs``
|
|
152
152
|
Additional keyword arguments forwarded to the client.
|
|
153
|
-
|
|
153
|
+
``**collection_kwargs``
|
|
154
154
|
Additional keyword arguments forwarded to ``create_collection``.
|
|
155
155
|
"""
|
|
156
156
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import logging.config
|
|
3
|
+
import os
|
|
3
4
|
import re
|
|
4
5
|
import socket
|
|
5
6
|
from collections import deque
|
|
@@ -63,6 +64,8 @@ def setup_logging(loglevel, logfile=None):
|
|
|
63
64
|
},
|
|
64
65
|
}
|
|
65
66
|
if logfile:
|
|
67
|
+
if logfile_dir := os.path.dirname(logfile):
|
|
68
|
+
os.makedirs(logfile_dir, exist_ok=True)
|
|
66
69
|
# if a file has been specified add a file logging handler and set
|
|
67
70
|
# the locust and root loggers to use it
|
|
68
71
|
LOGGING_CONFIG["handlers"]["file"] = {
|
|
@@ -434,10 +434,8 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
|
|
|
434
434
|
logger.debug("--run-time specified for a worker node will be ignored.")
|
|
435
435
|
|
|
436
436
|
if options.csv_prefix:
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
if not os.path.exists(base_csv_dir) and len(base_csv_dir) != 0:
|
|
440
|
-
os.makedirs(base_csv_dir)
|
|
437
|
+
if base_csv_dir := os.path.dirname(options.csv_prefix):
|
|
438
|
+
os.makedirs(base_csv_dir, exist_ok=True)
|
|
441
439
|
stats_csv_writer = stats.StatsCSVFileWriter(
|
|
442
440
|
environment, stats.PERCENTILES_TO_REPORT, options.csv_prefix, options.stats_history_enabled
|
|
443
441
|
)
|
|
@@ -660,6 +658,8 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
|
|
|
660
658
|
if options.json:
|
|
661
659
|
stats.print_stats_json(runner.stats)
|
|
662
660
|
if options.json_file:
|
|
661
|
+
if json_dir := os.path.dirname(options.json_file):
|
|
662
|
+
os.makedirs(json_dir, exist_ok=True)
|
|
663
663
|
stats.save_stats_json(runner.stats, options.json_file)
|
|
664
664
|
elif not isinstance(runner, locust.runners.WorkerRunner):
|
|
665
665
|
stats.print_stats(runner.stats, current=False)
|
|
@@ -679,6 +679,8 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
|
|
|
679
679
|
html_report = get_html_report(environment, show_download_link=False)
|
|
680
680
|
process_html_filename(options)
|
|
681
681
|
logger.debug("Writing html report to file: %s", options.html_file)
|
|
682
|
+
if html_dir := os.path.dirname(options.html_file):
|
|
683
|
+
os.makedirs(html_dir, exist_ok=True)
|
|
682
684
|
with open(options.html_file, "w", encoding="utf-8") as file:
|
|
683
685
|
file.write(html_report)
|
|
684
686
|
|
|
@@ -32,6 +32,7 @@ from .exception import RPCError, RPCReceiveError, RPCSendError, StopTest
|
|
|
32
32
|
from .log import get_logs, greenlet_exception_logger
|
|
33
33
|
from .rpc import Message, rpc
|
|
34
34
|
from .stats import RequestStats, StatsError, setup_distributed_stats_event_listeners
|
|
35
|
+
from .user.task import LOCUST_STATE_STOPPING
|
|
35
36
|
from .util.directory import get_abspaths_in
|
|
36
37
|
from .util.url import is_url
|
|
37
38
|
|
|
@@ -276,7 +277,9 @@ class Runner:
|
|
|
276
277
|
# User called runner.quit(), so don't block waiting for killing to finish
|
|
277
278
|
user_to_stop.group.killone(user_to_stop.greenlet, block=False)
|
|
278
279
|
elif self.environment.stop_timeout:
|
|
279
|
-
|
|
280
|
+
# a user that a ramp-down already asked to stop is only waited for, stopping it again raises
|
|
281
|
+
if user_to_stop._state != LOCUST_STATE_STOPPING:
|
|
282
|
+
async_calls_to_stop.add(gevent.spawn_later(0, user_to_stop.stop, force=False))
|
|
280
283
|
stop_group.add(user_to_stop.greenlet)
|
|
281
284
|
else:
|
|
282
285
|
async_calls_to_stop.add(gevent.spawn_later(0, user_to_stop.stop, force=True))
|
|
@@ -1446,10 +1449,13 @@ class WorkerRunner(DistributedRunner):
|
|
|
1446
1449
|
case _ if lc := self.custom_messages.get(msg.type):
|
|
1447
1450
|
listener, concurrent = lc
|
|
1448
1451
|
logger.debug(f"Received {msg.type} message from master")
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1452
|
+
try:
|
|
1453
|
+
if not concurrent:
|
|
1454
|
+
listener(environment=self.environment, msg=msg)
|
|
1455
|
+
else:
|
|
1456
|
+
gevent.spawn(listener, environment=self.environment, msg=msg)
|
|
1457
|
+
except Exception:
|
|
1458
|
+
logging.error(f"Uncaught exception in handler for {msg.type}\n{traceback.format_exc()}")
|
|
1453
1459
|
case _:
|
|
1454
1460
|
logger.warning(f"Unknown message type received: {msg.type}")
|
|
1455
1461
|
|
|
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
|