locust 2.20.2.dev104__py3-none-any.whl → 2.21.1.dev7__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.20.2.dev104'
16
- __version_tuple__ = version_tuple = (2, 20, 2, 'dev104')
15
+ __version__ = version = '2.21.1.dev7'
16
+ __version_tuple__ = version_tuple = (2, 21, 1, 'dev7')
locust/argument_parser.py CHANGED
@@ -123,7 +123,7 @@ def find_locustfiles(locustfiles: list[str], is_directory: bool) -> list[str]:
123
123
  for root, dirs, files in os.walk(locustdir):
124
124
  for file in files:
125
125
  if not file.startswith("_") and file.lower() != "locust.py" and file.endswith(".py"):
126
- file_path = f"{root}/{file}"
126
+ file_path = os.path.join(root, file)
127
127
  file_paths.append(file_path)
128
128
  else:
129
129
  for file_path in locustfiles:
@@ -397,11 +397,11 @@ def setup_parser_arguments(parser):
397
397
  env_var="LOCUST_USERCLASS_PICKER",
398
398
  )
399
399
  web_ui_group.add_argument(
400
- "--modern-ui",
400
+ "--legacy-ui",
401
401
  default=False,
402
402
  action="store_true",
403
- help="Use the new React-based frontend for the web UI",
404
- env_var="LOCUST_MODERN_UI",
403
+ help="Use the legacy frontend for the web UI",
404
+ env_var="LOCUST_LEGACY_UI",
405
405
  )
406
406
 
407
407
  master_group = parser.add_argument_group(
locust/input_events.py CHANGED
@@ -8,6 +8,7 @@ from typing import Callable
8
8
  import gevent
9
9
 
10
10
  if os.name == "nt":
11
+ import pywintypes
11
12
  from win32api import STD_INPUT_HANDLE
12
13
  from win32console import (
13
14
  ENABLE_ECHO_INPUT,
@@ -48,11 +49,14 @@ class UnixKeyPoller:
48
49
  class WindowsKeyPoller:
49
50
  def __init__(self):
50
51
  if sys.stdin.isatty():
51
- self.read_handle = GetStdHandle(STD_INPUT_HANDLE)
52
- self.read_handle.SetConsoleMode(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT)
53
- self.cur_event_length = 0
54
- self.cur_keys_length = 0
55
- self.captured_chars = []
52
+ try:
53
+ self.read_handle = GetStdHandle(STD_INPUT_HANDLE)
54
+ self.read_handle.SetConsoleMode(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT)
55
+ self.cur_event_length = 0
56
+ self.cur_keys_length = 0
57
+ self.captured_chars = []
58
+ except pywintypes.error:
59
+ raise InitError("Terminal says its a tty but we couldnt enable line input. Keyboard input disabled.")
56
60
  else:
57
61
  raise InitError("Terminal was not a tty. Keyboard input disabled")
58
62
 
locust/main.py CHANGED
@@ -491,7 +491,7 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
491
491
  stats_csv_writer=stats_csv_writer,
492
492
  delayed_start=True,
493
493
  userclass_picker_is_active=options.class_picker,
494
- modern_ui=options.modern_ui,
494
+ modern_ui=not options.legacy_ui,
495
495
  )
496
496
  else:
497
497
  web_ui = None
@@ -682,10 +682,10 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
682
682
 
683
683
  main_greenlet.join()
684
684
  if options.html_file:
685
- save_html_report(options.modern_ui)
685
+ save_html_report(not options.legacy_ui)
686
686
  except KeyboardInterrupt:
687
687
  if options.html_file:
688
- save_html_report(options.modern_ui)
688
+ save_html_report(not options.legacy_ui)
689
689
  except Exception:
690
690
  raise
691
691
  shutdown()
locust/test/test_main.py CHANGED
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import json
4
4
  import os
5
5
  import platform
6
- import pty
7
6
  import signal
8
7
  import socket
9
8
  import subprocess
@@ -17,6 +16,7 @@ from unittest import TestCase
17
16
  import gevent
18
17
  import psutil
19
18
  import requests
19
+ from pyquery import PyQuery as pq
20
20
 
21
21
  from .mock_locustfile import MOCK_LOCUSTFILE_CONTENT, mock_locustfile
22
22
  from .util import get_free_tcp_port, patch_env, temporary_file
@@ -79,6 +79,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
79
79
  self.assertIn("Logging options:", output)
80
80
  self.assertIn("--skip-log-setup Disable Locust's logging setup.", output)
81
81
 
82
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
82
83
  def test_custom_arguments(self):
83
84
  port = get_free_tcp_port()
84
85
  with temporary_file(
@@ -120,6 +121,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
120
121
  self.assertNotIn("command_line_value", stdout)
121
122
  self.assertIn("web_form_value", stdout)
122
123
 
124
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
123
125
  def test_custom_arguments_in_file(self):
124
126
  with temporary_file(
125
127
  content=textwrap.dedent(
@@ -155,6 +157,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
155
157
  self.assertIn("Starting Locust", stderr)
156
158
  self.assertIn("config_file_value", stdout)
157
159
 
160
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
158
161
  def test_custom_exit_code(self):
159
162
  with temporary_file(
160
163
  content=textwrap.dedent(
@@ -184,6 +187,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
184
187
  self.assertIn("Exit code in quit event 42", stdout)
185
188
  self.assertEqual(42, proc.returncode)
186
189
 
190
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
187
191
  def test_webserver(self):
188
192
  with temporary_file(
189
193
  content=textwrap.dedent(
@@ -251,7 +255,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
251
255
  )
252
256
  ) as file_path:
253
257
  proc = subprocess.Popen(
254
- ["locust", "-f", file_path, "--web-port", str(port), "--autostart", "--modern-ui"],
258
+ ["locust", "-f", file_path, "--web-port", str(port), "--autostart"],
255
259
  stdout=PIPE,
256
260
  stderr=PIPE,
257
261
  text=True,
@@ -284,6 +288,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
284
288
  self.assertIn("parameter need to be float and value between. 0 < percentile < 1 Eg 0.95", stderr)
285
289
  self.assertEqual(1, proc.returncode)
286
290
 
291
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
287
292
  def test_webserver_multiple_locustfiles(self):
288
293
  with mock_locustfile(content=MOCK_LOCUSTFILE_CONTENT_A) as mocked1:
289
294
  with mock_locustfile(content=MOCK_LOCUSTFILE_CONTENT_B) as mocked2:
@@ -299,6 +304,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
299
304
  self.assertIn("Shutting down (exit code 0)", stderr)
300
305
  self.assertEqual(0, proc.returncode)
301
306
 
307
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
302
308
  def test_webserver_multiple_locustfiles_in_directory(self):
303
309
  with TemporaryDirectory() as temp_dir:
304
310
  with mock_locustfile(content=MOCK_LOCUSTFILE_CONTENT_A, dir=temp_dir):
@@ -313,6 +319,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
313
319
  self.assertIn("Shutting down (exit code 0)", stderr)
314
320
  self.assertEqual(0, proc.returncode)
315
321
 
322
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
316
323
  def test_webserver_multiple_locustfiles_with_shape(self):
317
324
  content = textwrap.dedent(
318
325
  """
@@ -406,6 +413,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
406
413
  self.assertIn("ERROR/locust.main: Valid --stop-timeout formats are", stderr)
407
414
  self.assertEqual(1, proc.returncode)
408
415
 
416
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
409
417
  def test_headless_spawn_options_wo_run_time(self):
410
418
  with mock_locustfile() as mocked:
411
419
  proc = subprocess.Popen(
@@ -431,6 +439,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
431
439
  self.assertIn("Shutting down (exit code 0)", stderr)
432
440
  self.assertEqual(0, proc.returncode)
433
441
 
442
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
434
443
  def test_run_headless_with_multiple_locustfiles(self):
435
444
  with TemporaryDirectory() as temp_dir:
436
445
  with mock_locustfile(dir=temp_dir):
@@ -582,6 +591,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
582
591
  self.assertIn("Shutting down (exit code 0)", stderr)
583
592
  self.assertEqual(0, proc.returncode)
584
593
 
594
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
585
595
  def test_autostart_wo_run_time(self):
586
596
  port = get_free_tcp_port()
587
597
  with mock_locustfile() as mocked:
@@ -600,7 +610,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
600
610
  )
601
611
  gevent.sleep(1.9)
602
612
  try:
603
- response = requests.get(f"http://0.0.0.0:{port}/")
613
+ response = requests.get(f"http://localhost:{port}/")
604
614
  except Exception:
605
615
  pass
606
616
  self.assertEqual(200, response.status_code)
@@ -611,8 +621,10 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
611
621
  self.assertIn("Shutting down ", stderr)
612
622
  self.assertNotIn("Traceback", stderr)
613
623
  # check response afterwards, because it really isn't as informative as stderr
624
+ d = pq(response.content.decode("utf-8"))
625
+
614
626
  self.assertEqual(200, response.status_code)
615
- self.assertIn('<body class="running">', response.text)
627
+ self.assertIn('"state": "running"', str(d))
616
628
 
617
629
  def test_autostart_w_run_time(self):
618
630
  port = get_free_tcp_port()
@@ -636,7 +648,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
636
648
  )
637
649
  gevent.sleep(1.9)
638
650
  try:
639
- response = requests.get(f"http://0.0.0.0:{port}/")
651
+ response = requests.get(f"http://localhost:{port}/")
640
652
  except Exception:
641
653
  pass
642
654
  _, stderr = proc.communicate(timeout=2)
@@ -645,9 +657,12 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
645
657
  self.assertIn("Shutting down ", stderr)
646
658
  self.assertNotIn("Traceback", stderr)
647
659
  # check response afterwards, because it really isn't as informative as stderr
660
+ d = pq(response.content.decode("utf-8"))
661
+
648
662
  self.assertEqual(200, response.status_code)
649
- self.assertIn('<body class="running">', response.text)
663
+ self.assertIn('"state": "running"', str(d))
650
664
 
665
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
651
666
  def test_run_autostart_with_multiple_locustfiles(self):
652
667
  with TemporaryDirectory() as temp_dir:
653
668
  with mock_locustfile(dir=temp_dir):
@@ -711,6 +726,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
711
726
  "locust",
712
727
  "-f",
713
728
  mocked.file_path,
729
+ "--legacy-ui",
714
730
  "--web-port",
715
731
  str(port),
716
732
  "--autostart",
@@ -722,7 +738,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
722
738
  text=True,
723
739
  )
724
740
  gevent.sleep(1.9)
725
- response = requests.get(f"http://0.0.0.0:{port}/")
741
+ response = requests.get(f"http://localhost:{port}/")
726
742
  try:
727
743
  success = True
728
744
  _, stderr = proc.communicate(timeout=5)
@@ -778,6 +794,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
778
794
  "locust",
779
795
  "-f",
780
796
  f"{mocked1.file_path},{mocked2}",
797
+ "--legacy-ui",
781
798
  "--web-port",
782
799
  str(port),
783
800
  "--autostart",
@@ -789,7 +806,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
789
806
  text=True,
790
807
  )
791
808
  gevent.sleep(1.9)
792
- response = requests.get(f"http://0.0.0.0:{port}/")
809
+ response = requests.get(f"http://localhost:{port}/")
793
810
  try:
794
811
  success = True
795
812
  _, stderr = proc.communicate(timeout=5)
@@ -807,6 +824,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
807
824
  self.assertIn('<body class="spawning">', response.text)
808
825
  self.assertTrue(success, "got timeout and had to kill the process")
809
826
 
827
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
810
828
  def test_web_options(self):
811
829
  port = get_free_tcp_port()
812
830
  if platform.system() == "Darwin":
@@ -842,7 +860,10 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
842
860
  self.assertEqual(200, requests.get("http://127.0.0.1:%i/" % port, timeout=1).status_code)
843
861
  proc.terminate()
844
862
 
863
+ @unittest.skipIf(os.name == "nt", reason="termios doesnt exist on windows, adn thus we cannot import pty")
845
864
  def test_input(self):
865
+ import pty
866
+
846
867
  LOCUSTFILE_CONTENT = textwrap.dedent(
847
868
  """
848
869
  from locust import User, TaskSet, task, between
@@ -1067,6 +1088,7 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
1067
1088
  "locust",
1068
1089
  "-f",
1069
1090
  mocked.file_path,
1091
+ "--legacy-ui",
1070
1092
  "--host",
1071
1093
  "https://test.com/",
1072
1094
  "--run-time",
@@ -1310,6 +1332,7 @@ class MyUser(HttpUser):
1310
1332
  self.assertIn("No tasks defined on MyUser", stderr)
1311
1333
  self.assertEqual(1, proc.returncode)
1312
1334
 
1335
+ @unittest.skipIf(os.name == "nt", reason="Signal handling on windows is hard")
1313
1336
  def test_graceful_exit_when_keyboard_interrupt(self):
1314
1337
  with temporary_file(
1315
1338
  content=textwrap.dedent(
@@ -1780,6 +1803,7 @@ class AnyUser(HttpUser):
1780
1803
  if found[i] != i:
1781
1804
  raise Exception(f"expected index {i} but got", found[i])
1782
1805
 
1806
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1783
1807
  def test_processes(self):
1784
1808
  with mock_locustfile() as mocked:
1785
1809
  command = f"locust -f {mocked.file_path} --processes 4 --headless --run-time 1 --exit-code-on-error 0"
@@ -1799,6 +1823,7 @@ class AnyUser(HttpUser):
1799
1823
  self.assertIn("(index 3) reported as ready", stderr)
1800
1824
  self.assertIn("Shutting down (exit code 0)", stderr)
1801
1825
 
1826
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1802
1827
  def test_processes_autodetect(self):
1803
1828
  with mock_locustfile() as mocked:
1804
1829
  command = f"locust -f {mocked.file_path} --processes -1 --headless --run-time 1 --exit-code-on-error 0"
@@ -1818,6 +1843,7 @@ class AnyUser(HttpUser):
1818
1843
  self.assertIn("(index 0) reported as ready", stderr)
1819
1844
  self.assertIn("Shutting down (exit code 0)", stderr)
1820
1845
 
1846
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1821
1847
  def test_processes_separate_worker(self):
1822
1848
  with mock_locustfile() as mocked:
1823
1849
  master_proc = subprocess.Popen(
@@ -1862,6 +1888,7 @@ class AnyUser(HttpUser):
1862
1888
  self.assertIn("(index 3) reported as ready", master_stderr)
1863
1889
  self.assertIn("Shutting down (exit code 0)", master_stderr)
1864
1890
 
1891
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1865
1892
  def test_processes_ctrl_c(self):
1866
1893
  with mock_locustfile() as mocked:
1867
1894
  proc = psutil.Popen( # use psutil.Popen instead of subprocess.Popen to use extra features
@@ -1901,6 +1928,7 @@ class AnyUser(HttpUser):
1901
1928
  self.assertIn("The last worker quit, stopping test", stderr)
1902
1929
  self.assertIn("Shutting down (exit code 0)", stderr)
1903
1930
 
1931
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1904
1932
  def test_workers_shut_down_if_master_is_gone(self):
1905
1933
  content = """
1906
1934
  from locust import HttpUser, task, constant, runners
@@ -1956,6 +1984,7 @@ class AnyUser(HttpUser):
1956
1984
  self.assertNotIn("Traceback", worker_stderr)
1957
1985
  self.assertIn("Didn't get heartbeat from master in over ", worker_stderr)
1958
1986
 
1987
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1959
1988
  def test_processes_error_doesnt_blow_up_completely(self):
1960
1989
  with mock_locustfile() as mocked:
1961
1990
  proc = subprocess.Popen(
@@ -1979,6 +2008,7 @@ class AnyUser(HttpUser):
1979
2008
  self.assertEqual(stderr.count("Unknown User(s): UserThatDoesntExist"), 5)
1980
2009
  self.assertNotIn("Traceback", stderr)
1981
2010
 
2011
+ @unittest.skipIf(os.name == "nt", reason="--processes doesnt work on windows")
1982
2012
  def test_processes_workers_quit_unexpected(self):
1983
2013
  content = """
1984
2014
  from locust import runners, events, User
locust/test/test_web.py CHANGED
@@ -1130,7 +1130,7 @@ class TestWebUIAuth(LocustTestCase):
1130
1130
  super().setUp()
1131
1131
 
1132
1132
  parser = get_parser(default_config_files=[])
1133
- self.environment.parsed_options = parser.parse_args(["--modern-ui", "--web-login"])
1133
+ self.environment.parsed_options = parser.parse_args(["--web-login"])
1134
1134
 
1135
1135
  self.web_ui = self.environment.create_web_ui("127.0.0.1", 0, modern_ui=True, web_login=True)
1136
1136
 
@@ -1291,7 +1291,6 @@ class TestModernWebUI(LocustTestCase, _HeaderCheckMixin):
1291
1291
  super().setUp()
1292
1292
 
1293
1293
  parser = get_parser(default_config_files=[])
1294
- self.environment.parsed_options = parser.parse_args(["--modern-ui"])
1295
1294
  self.stats = self.environment.stats
1296
1295
 
1297
1296
  self.web_ui = self.environment.create_web_ui("127.0.0.1", 0, modern_ui=True)
locust/web.py CHANGED
@@ -528,7 +528,7 @@ class WebUI:
528
528
  auth_args=self.auth_args,
529
529
  )
530
530
  else:
531
- return "Web Auth is only available on the modern web ui. Enable it with the --modern-ui flag"
531
+ return "Web Auth is only available on the modern web ui."
532
532
 
533
533
  @app.route("/user", methods=["POST"])
534
534
  def update_user():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.20.2.dev104
3
+ Version: 2.21.1.dev7
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -1,7 +1,7 @@
1
1
  locust/__init__.py,sha256=g6oA-Ba_hs3gLWVf5MKJ1mvfltI8MFnDWG8qslqm8yg,1402
2
2
  locust/__main__.py,sha256=vBQ82334kX06ImDbFlPFgiBRiLIinwNk3z8Khs6hd74,31
3
- locust/_version.py,sha256=OwUxoTDc4xEBp4fuyzPMXdAPGbI5vT5KGqm_-ubs_e0,430
4
- locust/argument_parser.py,sha256=8cN3eTlsngpv1Rf46YPz6ivmXODVnI80tPoQA1_BUwM,26828
3
+ locust/_version.py,sha256=EAwrmz1ppgith6MhJ5ZrWjL7S8SslGohpUzt1gp2Xa8,426
4
+ locust/argument_parser.py,sha256=zJ8oDNvBW1jK5axKaiRRjKrA4yffyT4vGmlh5qlLQR0,26827
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=8FDHDzPYO5mWep3gwneKJugbdPnjMiXZjTlbICTlbA8,18606
@@ -9,14 +9,14 @@ locust/env.py,sha256=k6hFjS4OJcDlzkvbrkV_3lGTys0Jy4qEZUi7RlzVTbI,12053
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
- locust/input_events.py,sha256=XFPvwQ1bX29kcUIDf9RwSGnxj8-htxqL0uZ4giOfOIA,3078
12
+ locust/input_events.py,sha256=QBO6Kb0bmNLZHaIvcBORk57CvCJHAYVB5ILfpV8Lrfc,3292
13
13
  locust/log.py,sha256=2IVp9YL4ZPfWdj3sBFuOHfgneg3g7m7tUGR-sy2s3E8,3155
14
- locust/main.py,sha256=7NHcPc822uxkwWvBnk4oo_D7fICNaRdisfJQFYz_oVg,28665
14
+ locust/main.py,sha256=JeYOMBrEGycVjIjBLG4ohNrP0aUupWNug6alEPysa_I,28677
15
15
  locust/py.typed,sha256=gkWLl8yD4mIZnNYYAIRM8g9VarLvWmTAFeUfEbxJLBw,65
16
16
  locust/runners.py,sha256=w7rlwRqTkx9_NJxg0Y5KYZDY5Fd_IWed1qLE07GDovQ,65645
17
17
  locust/shape.py,sha256=t-lwBS8LOjWcKXNL7j2U3zroIXJ1b0fazUwpRYQOKXw,1973
18
18
  locust/stats.py,sha256=oP_g_7a_s9VvwLHDDzi_pZweAqvo5XPKekHYJVjwatU,46177
19
- locust/web.py,sha256=WD3JGrZwpldK8KhA2Uc_9GjG_cy88k4zv-EbsynDO-E,28281
19
+ locust/web.py,sha256=dtTqSU_iLb0WCCjQygt4yVqe5O10I2P1kAVYWJx5Brs,28245
20
20
  locust/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  locust/contrib/fasthttp.py,sha256=lYGCtbtWWrSvlZuL6VqL8dWY2L9iZb6sioQOabXnlzc,26601
22
22
  locust/rpc/__init__.py,sha256=nVGoHWFQxZjnhCDWjbgXIbmFbN9sizAjkhvSs9_642c,58
@@ -61,7 +61,7 @@ locust/test/test_interruptable_task.py,sha256=HqStHxtdZPT7WtytBiqTpKeNPg9upXzV7U
61
61
  locust/test/test_load_locustfile.py,sha256=OTYiQALcP0nf2QzJWyexEdmwfWeYRQ_QFWSKcF2GTt8,7510
62
62
  locust/test/test_locust_class.py,sha256=isZPJkIK82uWbqoJbSvwvNJ4CA0QAviQ4_HPwlQVyB8,25547
63
63
  locust/test/test_log.py,sha256=YPY6vgTAy1KaNU2qoVvQrTH5x_mzRrljEHrkSBy3yxs,7553
64
- locust/test/test_main.py,sha256=Pky7BJI8KrfJ3gOf-izR9TJknVXVYRb1BpjPluOwOdQ,75636
64
+ locust/test/test_main.py,sha256=JLTRWVRFb_f3f8nOXLgF7e0G42OijV7omt27wNWmWzk,77646
65
65
  locust/test/test_old_wait_api.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  locust/test/test_parser.py,sha256=mIDUlYhftTYPw3MN-2b3p5Rt1Znt4cyh9qlbd1P3hwU,17168
67
67
  locust/test/test_runners.py,sha256=JcervlTHo6iHkxaiZMZbny5tfC1U_F3PnQgrrBXIloY,157173
@@ -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=-vARJL1iTO6Qg7jy6ZacMNGSaI3cP987U8yCLmV5p14,51853
75
+ locust/test/test_web.py,sha256=Z-w_uZHE9fKEIJdvWuolarMKLEi0hfDFFMRIaFKbx-s,51761
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=g5I2OYrQUieTs0MmzeuC0Og3Cwoexjjiq31ossyn3E0,2625
@@ -97,9 +97,9 @@ locust/webui/dist/assets/favicon.ico,sha256=IUl-rYqfpHdV38e-s0bkmFIeLS-n3Ug0DQxk
97
97
  locust/webui/dist/assets/index-a83a5dd9.js,sha256=PMUDjzEdp17cqlbWVSlBpJCwKM11lWxpiPSPWc9q2fk,1643372
98
98
  locust/webui/dist/assets/index-a83a5dd9.js.map,sha256=plEb3yaYEEYv-cmZqGhPU11xece9blXxCt7y6sa4aXk,8771392
99
99
  locust/webui/dist/assets/logo.png,sha256=lPCYhpDsPXYY3gUMlq3bzABI5WBtdBOvtay8R9hRFv4,2943
100
- locust-2.20.2.dev104.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
101
- locust-2.20.2.dev104.dist-info/METADATA,sha256=bhN_H4O_w9r4ifDOka4i3lfAWWrXoP6OC56hcFuWcUY,7392
102
- locust-2.20.2.dev104.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
103
- locust-2.20.2.dev104.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
104
- locust-2.20.2.dev104.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
105
- locust-2.20.2.dev104.dist-info/RECORD,,
100
+ locust-2.21.1.dev7.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
101
+ locust-2.21.1.dev7.dist-info/METADATA,sha256=lbXWSHMgTkSQe-9ZY4VgaOmckEktQeBfcZ_PG_-fmQw,7390
102
+ locust-2.21.1.dev7.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
103
+ locust-2.21.1.dev7.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
104
+ locust-2.21.1.dev7.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
105
+ locust-2.21.1.dev7.dist-info/RECORD,,