locust 2.24.2.dev13__py3-none-any.whl → 2.24.2.dev19__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 +3 -0
- locust/main.py +3 -0
- locust/runners.py +2 -0
- locust/test/test_env.py +40 -0
- locust/test/test_web.py +29 -0
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/METADATA +1 -1
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/RECORD +13 -13
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/LICENSE +0 -0
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/WHEEL +0 -0
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/entry_points.txt +0 -0
- {locust-2.24.2.dev13.dist-info → locust-2.24.2.dev19.dist-info}/top_level.txt +0 -0
locust/_version.py
CHANGED
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '2.24.2.
|
16
|
-
__version_tuple__ = version_tuple = (2, 24, 2, '
|
15
|
+
__version__ = version = '2.24.2.dev19'
|
16
|
+
__version_tuple__ = version_tuple = (2, 24, 2, 'dev19')
|
locust/argument_parser.py
CHANGED
@@ -559,7 +559,7 @@ def setup_parser_arguments(parser):
|
|
559
559
|
"--legacy-ui",
|
560
560
|
default=False,
|
561
561
|
action="store_true",
|
562
|
-
help="Use the legacy frontend for the web UI",
|
562
|
+
help="Use the legacy frontend for the web UI (deprecated, support will be removed soon)",
|
563
563
|
env_var="LOCUST_LEGACY_UI",
|
564
564
|
)
|
565
565
|
|
locust/env.py
CHANGED
@@ -198,6 +198,9 @@ class Environment:
|
|
198
198
|
return self.web_ui
|
199
199
|
|
200
200
|
def update_user_class(self, user_settings):
|
201
|
+
if isinstance(self.runner, MasterRunner):
|
202
|
+
self.runner.send_message("update_user_class", user_settings)
|
203
|
+
|
201
204
|
user_class_name = user_settings.get("user_class_name")
|
202
205
|
user_class = self.available_user_classes[user_class_name]
|
203
206
|
user_tasks = self.available_user_tasks[user_class_name]
|
locust/main.py
CHANGED
@@ -182,6 +182,9 @@ def main():
|
|
182
182
|
sys.stderr.write("[DEPRECATED] The --hatch-rate parameter has been renamed --spawn-rate\n")
|
183
183
|
options.spawn_rate = options.hatch_rate
|
184
184
|
|
185
|
+
if options.legacy_ui:
|
186
|
+
sys.stderr.write("[DEPRECATED] The legacy UI is deprecated and will be removed soon\n")
|
187
|
+
|
185
188
|
# setup logging
|
186
189
|
if not options.skip_log_setup:
|
187
190
|
if options.loglevel.upper() in ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]:
|
locust/runners.py
CHANGED
@@ -1395,6 +1395,8 @@ class WorkerRunner(DistributedRunner):
|
|
1395
1395
|
self.reset_connection()
|
1396
1396
|
elif msg.type == "heartbeat":
|
1397
1397
|
self.last_heartbeat_timestamp = time.time()
|
1398
|
+
elif msg.type == "update_user_class":
|
1399
|
+
self.environment.update_user_class(msg.data)
|
1398
1400
|
elif msg.type in self.custom_messages:
|
1399
1401
|
logger.debug("Received %s message from master" % msg.type)
|
1400
1402
|
listener, concurrent = self.custom_messages[msg.type]
|
locust/test/test_env.py
CHANGED
@@ -241,3 +241,43 @@ class TestEnvironment(LocustTestCase):
|
|
241
241
|
environment.available_user_classes["User1"].json(),
|
242
242
|
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
243
243
|
)
|
244
|
+
|
245
|
+
def test_distributed_update_user_class(self):
|
246
|
+
class MyUser1(User):
|
247
|
+
@task
|
248
|
+
def my_task(self):
|
249
|
+
pass
|
250
|
+
|
251
|
+
@task
|
252
|
+
def my_task_2(self):
|
253
|
+
pass
|
254
|
+
|
255
|
+
class MyUser2(User):
|
256
|
+
@task
|
257
|
+
def my_task(self):
|
258
|
+
pass
|
259
|
+
|
260
|
+
master_env = Environment(
|
261
|
+
user_classes=[MyUser1, MyUser2],
|
262
|
+
available_user_classes={"User1": MyUser1, "User2": MyUser2},
|
263
|
+
available_user_tasks={"User1": MyUser1.tasks, "User2": MyUser2.tasks},
|
264
|
+
)
|
265
|
+
master = master_env.create_master_runner("*", 0)
|
266
|
+
|
267
|
+
worker_env = Environment(
|
268
|
+
user_classes=[MyUser1, MyUser2],
|
269
|
+
available_user_classes={"User1": MyUser1, "User2": MyUser2},
|
270
|
+
available_user_tasks={"User1": MyUser1.tasks, "User2": MyUser2.tasks},
|
271
|
+
)
|
272
|
+
worker = worker_env.create_worker_runner("127.0.0.1", master.server.port)
|
273
|
+
|
274
|
+
master_env.update_user_class({"user_class_name": "User1", "host": "http://localhost", "tasks": ["my_task_2"]})
|
275
|
+
|
276
|
+
self.assertEqual(
|
277
|
+
master_env.available_user_classes["User1"].json(),
|
278
|
+
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
279
|
+
)
|
280
|
+
self.assertEqual(
|
281
|
+
worker_env.available_user_classes["User1"].json(),
|
282
|
+
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
283
|
+
)
|
locust/test/test_web.py
CHANGED
@@ -1351,3 +1351,32 @@ class TestModernWebUI(LocustTestCase, _HeaderCheckMixin):
|
|
1351
1351
|
self.assertTrue(d("#root"))
|
1352
1352
|
self.assertIn('"locustfile": "locust.py"', str(d))
|
1353
1353
|
self.assertIn('"host": "http://localhost"', str(d))
|
1354
|
+
|
1355
|
+
def test_update_user(self):
|
1356
|
+
class MyUser1(User):
|
1357
|
+
@task
|
1358
|
+
def my_task(self):
|
1359
|
+
pass
|
1360
|
+
|
1361
|
+
@task
|
1362
|
+
def my_task_2(self):
|
1363
|
+
pass
|
1364
|
+
|
1365
|
+
class MyUser2(User):
|
1366
|
+
@task
|
1367
|
+
def my_task(self):
|
1368
|
+
pass
|
1369
|
+
|
1370
|
+
self.environment.user_classes = [MyUser1, MyUser2]
|
1371
|
+
self.environment.available_user_classes = {"User1": MyUser1, "User2": MyUser2}
|
1372
|
+
self.environment.available_user_tasks = {"User1": MyUser1.tasks, "User2": MyUser2.tasks}
|
1373
|
+
|
1374
|
+
requests.post(
|
1375
|
+
"http://127.0.0.1:%i/user" % self.web_port,
|
1376
|
+
json={"user_class_name": "User1", "host": "http://localhost", "tasks": ["my_task_2"]},
|
1377
|
+
)
|
1378
|
+
|
1379
|
+
self.assertEqual(
|
1380
|
+
self.environment.available_user_classes["User1"].json(),
|
1381
|
+
{"host": "http://localhost", "tasks": ["my_task_2"], "fixed_count": 0, "weight": 1},
|
1382
|
+
)
|
@@ -1,19 +1,19 @@
|
|
1
1
|
locust/__init__.py,sha256=g6oA-Ba_hs3gLWVf5MKJ1mvfltI8MFnDWG8qslqm8yg,1402
|
2
2
|
locust/__main__.py,sha256=vBQ82334kX06ImDbFlPFgiBRiLIinwNk3z8Khs6hd74,31
|
3
|
-
locust/_version.py,sha256=
|
4
|
-
locust/argument_parser.py,sha256=
|
3
|
+
locust/_version.py,sha256=5NBvVO4oj5bwsW9o1m12F0zB6RR_oGxoklErgHdVzNA,428
|
4
|
+
locust/argument_parser.py,sha256=W0X5t-9BFq1DtOBgTBbMoDYBIXfWEqUD7CZ5Rn-i6LQ,32016
|
5
5
|
locust/clients.py,sha256=o3G9welWb-zhgDUM5TKnMVFMJckr_m0FI8Dxn3OtBUA,14810
|
6
6
|
locust/debug.py,sha256=We6Z9W0btkKSc7PxWmrZx-xMynvOOsKhG6jmDgQin0g,5134
|
7
7
|
locust/dispatch.py,sha256=mn-xVqjLUzRtN91hEqWE2VnVvieQNo97fTVSdMwCDV8,18605
|
8
|
-
locust/env.py,sha256=
|
8
|
+
locust/env.py,sha256=nd6ui1bv6n-kkLkP3r61ZkskDY627dsKOAkYHhtOW7o,12472
|
9
9
|
locust/event.py,sha256=Dip3aRKyd4MhAkfd5nPYmWcGKtQEX8NH1mHT74INZT4,7713
|
10
10
|
locust/exception.py,sha256=jGgJ32ubuf4pWdlaVOkbh2Y0LlG0_DHi-lv3ib8ppOE,1791
|
11
11
|
locust/html.py,sha256=S2vucumZbGADt0PKv__Aow_kt-MpbCCxBqMO9QiRcUg,5718
|
12
12
|
locust/input_events.py,sha256=QBO6Kb0bmNLZHaIvcBORk57CvCJHAYVB5ILfpV8Lrfc,3292
|
13
13
|
locust/log.py,sha256=2IVp9YL4ZPfWdj3sBFuOHfgneg3g7m7tUGR-sy2s3E8,3155
|
14
|
-
locust/main.py,sha256=
|
14
|
+
locust/main.py,sha256=Yi0vMJ3HVNqmjbZXBwaK8N-SbzHyaGRnr46hgxpkP0M,28989
|
15
15
|
locust/py.typed,sha256=gkWLl8yD4mIZnNYYAIRM8g9VarLvWmTAFeUfEbxJLBw,65
|
16
|
-
locust/runners.py,sha256=
|
16
|
+
locust/runners.py,sha256=8z-axnOs3yLWjOoc91rQzQH6hp6qu3ZpkBQ_IGZeFE0,67978
|
17
17
|
locust/shape.py,sha256=t-lwBS8LOjWcKXNL7j2U3zroIXJ1b0fazUwpRYQOKXw,1973
|
18
18
|
locust/stats.py,sha256=BXvAybKiqI6QF5THdnk-fWkL-FiZKwrAm2W8KzkTchg,46118
|
19
19
|
locust/web.py,sha256=DVcx53VXApAc6kFfG7so2_kB_qqcw7ojKpBd-dJoijU,28267
|
@@ -54,7 +54,7 @@ locust/test/mock_locustfile.py,sha256=N9sGjW-BmJ-J_x-5bEOR82VQ0DhR1hki313BHPOWq4
|
|
54
54
|
locust/test/mock_logging.py,sha256=dvfXaY2eb0ZHx7Bjn7R69BarnRq9uu0z4HD8hCiRNmU,819
|
55
55
|
locust/test/test_debugging.py,sha256=w5Lx6h101novinKjTJJDg5AqqY28U2Wg1W4hgCk6Sx8,1069
|
56
56
|
locust/test/test_dispatch.py,sha256=SdnPFdyW0eRj7Bp4mAI8JRkmcwah6Z_b6oaZ_D98QPE,166009
|
57
|
-
locust/test/test_env.py,sha256=
|
57
|
+
locust/test/test_env.py,sha256=ggyx7ZbS7sZPae2wb6JzrvA0p0H7c9HhcBVJn7u1HTw,8956
|
58
58
|
locust/test/test_fasthttp.py,sha256=-UyGdz2Po1wOjcSHs2xPqBtMoJWMaaVrqbx6SaQNAac,30864
|
59
59
|
locust/test/test_http.py,sha256=R23BWBNLjU3OOWCAgIAW8F9H5kqtBx43gPaXC-hhM2g,12570
|
60
60
|
locust/test/test_interruptable_task.py,sha256=HqStHxtdZPT7WtytBiqTpKeNPg9upXzV7UI4QgFdUoU,1408
|
@@ -72,7 +72,7 @@ locust/test/test_taskratio.py,sha256=SQ-sBqeFm2GhkfCD_57-fPzQrk1ilSw3DRb0_nwyxAI
|
|
72
72
|
locust/test/test_users.py,sha256=lp6yAKGK9_MIs9F7s1Vc3561P4oRavhpeVo2y9w3SUU,2135
|
73
73
|
locust/test/test_util.py,sha256=DmFTgNSWWx8zrsx9_ZGO6MsySmBV1H_GzNIVzzyapCM,1229
|
74
74
|
locust/test/test_wait_time.py,sha256=3evSEp6amMWFrzmSYs71MCeIsu7Rtarldb_HnwgSrU0,2353
|
75
|
-
locust/test/test_web.py,sha256=
|
75
|
+
locust/test/test_web.py,sha256=kvdOewTXbNAwwNjO7ise60zE_Vj_eu6dRPVnvj5y1sQ,52702
|
76
76
|
locust/test/test_zmqrpc.py,sha256=kONaZ11hwnneLwaVn7lIDVV7KHpEP2nkxuKhfb9ba3o,2173
|
77
77
|
locust/test/testcases.py,sha256=N4l0gFd8HKg-0bfIjq9nW5o0aNpv0YRTfOtwrtsPpUw,6979
|
78
78
|
locust/test/util.py,sha256=98HXLClkycNTxLiuy1d3W_tM6dBU9bA-p5ZXMfncaWE,2754
|
@@ -95,9 +95,9 @@ locust/webui/dist/report.html,sha256=sOdZZVgZbqgu86BBCSQf3uQUYXgmgSnXF32JpnyAII8
|
|
95
95
|
locust/webui/dist/assets/favicon.ico,sha256=IUl-rYqfpHdV38e-s0bkmFIeLS-n3Ug0DQxk-h202hI,8348
|
96
96
|
locust/webui/dist/assets/index-941b6e82.js,sha256=G3n5R81Svt0HzbWaV3AV20jLWGLr4X50UZ-Adu2KcxU,1645614
|
97
97
|
locust/webui/dist/assets/logo.png,sha256=EIVPqr6wE_yqguHaqFHIsH0ZACLSrvNWyYO7PbyIj4w,19299
|
98
|
-
locust-2.24.2.
|
99
|
-
locust-2.24.2.
|
100
|
-
locust-2.24.2.
|
101
|
-
locust-2.24.2.
|
102
|
-
locust-2.24.2.
|
103
|
-
locust-2.24.2.
|
98
|
+
locust-2.24.2.dev19.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
|
99
|
+
locust-2.24.2.dev19.dist-info/METADATA,sha256=6l_ZV4AdLiT2K9xxaKGV8ooeLqxM3iPBbYhKjjRFD8Q,7212
|
100
|
+
locust-2.24.2.dev19.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
101
|
+
locust-2.24.2.dev19.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
|
102
|
+
locust-2.24.2.dev19.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
|
103
|
+
locust-2.24.2.dev19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|