locust 2.24.2.dev13__py3-none-any.whl → 2.24.2.dev17__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 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.dev13'
16
- __version_tuple__ = version_tuple = (2, 24, 2, 'dev13')
15
+ __version__ = version = '2.24.2.dev17'
16
+ __version_tuple__ = version_tuple = (2, 24, 2, 'dev17')
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/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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.24.2.dev13
3
+ Version: 2.24.2.dev17
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/locustio/locust
@@ -1,11 +1,11 @@
1
1
  locust/__init__.py,sha256=g6oA-Ba_hs3gLWVf5MKJ1mvfltI8MFnDWG8qslqm8yg,1402
2
2
  locust/__main__.py,sha256=vBQ82334kX06ImDbFlPFgiBRiLIinwNk3z8Khs6hd74,31
3
- locust/_version.py,sha256=6xIopQRFEnaMnTv5AHQbIbE-jjDCo_eABUb2Z7s6VcI,428
3
+ locust/_version.py,sha256=QjY-GOLQpFd5XTa969X4xHKVYbNvx_gSpn2DycI6R8M,428
4
4
  locust/argument_parser.py,sha256=iDnCJNs9ySKOrIn6xZjZXN3YIelOPC1FSR2MK5nEHP4,31973
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=C3vUX3PDPMRNfOMzc52LO7KapQtD4mpL4uTZtQg6xb4,12348
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
@@ -13,7 +13,7 @@ locust/input_events.py,sha256=QBO6Kb0bmNLZHaIvcBORk57CvCJHAYVB5ILfpV8Lrfc,3292
13
13
  locust/log.py,sha256=2IVp9YL4ZPfWdj3sBFuOHfgneg3g7m7tUGR-sy2s3E8,3155
14
14
  locust/main.py,sha256=_WMSjeLyEnZVYKsc-ziMYUcv_Axig93kiNiZ2NIrL9Y,28866
15
15
  locust/py.typed,sha256=gkWLl8yD4mIZnNYYAIRM8g9VarLvWmTAFeUfEbxJLBw,65
16
- locust/runners.py,sha256=4rhiEJdqrESxsoYyrwPy9BW6_8tQ8j5OhFRpygBGxA0,67867
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=jsX9tY_WShYefxro1lBemCSSzoKR6hnqLkbWgJ2z6WA,7489
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=Z-w_uZHE9fKEIJdvWuolarMKLEi0hfDFFMRIaFKbx-s,51761
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.dev13.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
99
- locust-2.24.2.dev13.dist-info/METADATA,sha256=sdY-ltpryU1lISMKhQR-00qQapvgV-ZpmNvHLxq8JM0,7212
100
- locust-2.24.2.dev13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
101
- locust-2.24.2.dev13.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
102
- locust-2.24.2.dev13.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
103
- locust-2.24.2.dev13.dist-info/RECORD,,
98
+ locust-2.24.2.dev17.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
99
+ locust-2.24.2.dev17.dist-info/METADATA,sha256=FvfeNI3eKUOZNLmFy8TlXKVdetXSvWQaqpmxR7jtGrI,7212
100
+ locust-2.24.2.dev17.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
101
+ locust-2.24.2.dev17.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
102
+ locust-2.24.2.dev17.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
103
+ locust-2.24.2.dev17.dist-info/RECORD,,