locust 2.23.2.dev26__tar.gz → 2.23.2.dev39__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.
Files changed (349) hide show
  1. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.gitignore +1 -0
  2. {locust-2.23.2.dev26/locust.egg-info → locust-2.23.2.dev39}/PKG-INFO +3 -2
  3. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/configuration.rst +35 -13
  4. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/index.rst +0 -8
  5. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/logging.rst +0 -1
  6. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-in-docker.rst +0 -3
  7. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/use_as_lib.py +2 -2
  8. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/_version.py +2 -2
  9. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/argument_parser.py +38 -1
  10. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_parser.py +42 -9
  11. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/auth.html +1 -1
  12. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dev.html +1 -1
  13. locust-2.23.2.dev26/locust/webui/dist/assets/index-207c29ed.js → locust-2.23.2.dev39/locust/webui/dist/assets/index-0d6d578a.js +2 -2
  14. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/auth.html +2 -2
  15. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/index.html +3 -3
  16. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/report.html +1 -1
  17. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/index.html +2 -2
  18. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/report.html +1 -1
  19. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Footer/About.tsx +12 -5
  20. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +1 -1
  21. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/Auth.tsx +1 -1
  22. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/Dashboard.test.tsx +1 -1
  23. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/mocks/statsRequest.mock.ts +8 -8
  24. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/vite.config.ts +1 -0
  25. {locust-2.23.2.dev26 → locust-2.23.2.dev39/locust.egg-info}/PKG-INFO +3 -2
  26. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/SOURCES.txt +1 -1
  27. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/requires.txt +3 -0
  28. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/pyproject.toml +3 -2
  29. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.coveragerc +0 -0
  30. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.dockerignore +0 -0
  31. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.git-blame-ignore-revs +0 -0
  32. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.gitattributes +0 -0
  33. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/CONTRIBUTING.md +0 -0
  34. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  35. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  36. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  37. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/workflows/stale.yml +0 -0
  38. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/workflows/tests.yml +0 -0
  39. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.readthedocs.yaml +0 -0
  40. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/extensions.json +0 -0
  41. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/launch.json +0 -0
  42. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/launch_locust.json +0 -0
  43. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/settings.json +0 -0
  44. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/CHANGELOG.md +0 -0
  45. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Dockerfile +0 -0
  46. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/LICENSE +0 -0
  47. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/MANIFEST.in +0 -0
  48. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Makefile +0 -0
  49. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/README +0 -0
  50. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/README.md +0 -0
  51. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/SECURITY.md +0 -0
  52. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Vagrantfile +0 -0
  53. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/benchmarks/dispatch.py +0 -0
  54. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/_static/theme-overrides.css +0 -0
  55. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/api.rst +0 -0
  56. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/changelog.rst +0 -0
  57. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/conf.py +0 -0
  58. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/custom-load-shape.rst +0 -0
  59. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/developing-locust.rst +0 -0
  60. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/extending-locust.rst +0 -0
  61. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/further-reading.rst +0 -0
  62. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/history.rst +0 -0
  63. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/locust_workers.png +0 -0
  64. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/number_of_users.png +0 -0
  65. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/response_times.png +0 -0
  66. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/total_requests_per_second.png +0 -0
  67. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/userclass_picker_example.png +0 -0
  68. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/webui-running-statistics.png +0 -0
  69. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/webui-splash-screenshot.png +0 -0
  70. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/increase-performance.rst +0 -0
  71. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/installation.rst +0 -0
  72. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/quickstart.rst +0 -0
  73. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/requirements.txt +0 -0
  74. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/retrieving-stats.rst +0 -0
  75. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-cloud-integration.rst +0 -0
  76. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-distributed.rst +0 -0
  77. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-in-debugger.rst +0 -0
  78. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-without-web-ui.rst +0 -0
  79. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/tasksets.rst +0 -0
  80. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/testing-other-systems.rst +0 -0
  81. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/use-as-lib.rst +0 -0
  82. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/what-is-locust.rst +0 -0
  83. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/writing-a-locustfile.rst +0 -0
  84. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/add_command_line_argument.py +0 -0
  85. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/basic.py +0 -0
  86. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/browse_docs_sequence_test.py +0 -0
  87. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/browse_docs_test.py +0 -0
  88. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_messages.py +0 -0
  89. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/double_wave.py +0 -0
  90. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/stages.py +0 -0
  91. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/staging_user_classes.py +0 -0
  92. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/step_load.py +0 -0
  93. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/wait_user_count.py +0 -0
  94. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_wait_function.py +0 -0
  95. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_xmlrpc_client/server.py +0 -0
  96. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
  97. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/debugging.py +0 -0
  98. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/debugging_advanced.py +0 -0
  99. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/docker-compose/docker-compose.yml +0 -0
  100. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/dynamic_user_credentials.py +0 -0
  101. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/events.py +0 -0
  102. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_modern_web_ui.py +0 -0
  103. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/extend.py +0 -0
  104. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
  105. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/static/extend.js +0 -0
  106. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/templates/extend.html +0 -0
  107. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/fast_http_locust.py +0 -0
  108. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/grpc_user.py +0 -0
  109. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello.proto +0 -0
  110. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_pb2.py +0 -0
  111. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_pb2_grpc.py +0 -0
  112. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_server.py +0 -0
  113. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/locustfile.py +0 -0
  114. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/locustfile.py +0 -0
  115. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/manual_stats_reporting.py +0 -0
  116. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/multiple_hosts.py +0 -0
  117. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/nested_inline_tasksets.py +0 -0
  118. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/rest.py +0 -0
  119. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
  120. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/semaphore_wait.py +0 -0
  121. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/stop_on_threshold.py +0 -0
  122. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/README.md +0 -0
  123. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/data_subnet.tf +0 -0
  124. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/main.tf +0 -0
  125. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/output.tf +0 -0
  126. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/plan/basic.py +0 -0
  127. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/provisioner.tf +0 -0
  128. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/variables.tf +0 -0
  129. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/test_data_management.py +0 -0
  130. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/vagrant/README.md +0 -0
  131. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/vagrant/supervisord.conf +0 -0
  132. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/web_ui_auth.py +0 -0
  133. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/worker_index.py +0 -0
  134. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/generate_changelog.py +0 -0
  135. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/__init__.py +0 -0
  136. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/__main__.py +0 -0
  137. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/clients.py +0 -0
  138. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/contrib/__init__.py +0 -0
  139. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/contrib/fasthttp.py +0 -0
  140. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/debug.py +0 -0
  141. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/dispatch.py +0 -0
  142. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/env.py +0 -0
  143. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/event.py +0 -0
  144. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/exception.py +0 -0
  145. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/html.py +0 -0
  146. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/input_events.py +0 -0
  147. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/log.py +0 -0
  148. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/main.py +0 -0
  149. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/py.typed +0 -0
  150. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/__init__.py +0 -0
  151. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/protocol.py +0 -0
  152. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/zmqrpc.py +0 -0
  153. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/runners.py +0 -0
  154. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/shape.py +0 -0
  155. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/chart.js +0 -0
  156. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/application.css +0 -0
  157. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/application.css.map +0 -0
  158. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/tables.css +0 -0
  159. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/tables.css.map +0 -0
  160. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/echarts.common.min.js +0 -0
  161. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/favicon.ico +0 -0
  162. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/logo.png +0 -0
  163. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-charts.png +0 -0
  164. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-start-test.png +0 -0
  165. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-stats.png +0 -0
  166. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-workers.png +0 -0
  167. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery-1.11.3.min.js +0 -0
  168. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery.jqote2.min.js +0 -0
  169. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery.tools.min.js +0 -0
  170. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/locust.js +0 -0
  171. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/_base.sass +0 -0
  172. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/_mixins.sass +0 -0
  173. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/application.sass +0 -0
  174. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/tables.sass +0 -0
  175. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/tasks.js +0 -0
  176. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/vintage.js +0 -0
  177. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/stats.py +0 -0
  178. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/index.html +0 -0
  179. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/report.html +0 -0
  180. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/stats_data.html +0 -0
  181. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/__init__.py +0 -0
  182. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/fake_module1_for_env_test.py +0 -0
  183. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/fake_module2_for_env_test.py +0 -0
  184. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/mock_locustfile.py +0 -0
  185. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/mock_logging.py +0 -0
  186. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_debugging.py +0 -0
  187. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_dispatch.py +0 -0
  188. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_env.py +0 -0
  189. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_fasthttp.py +0 -0
  190. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_http.py +0 -0
  191. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_interruptable_task.py +0 -0
  192. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_load_locustfile.py +0 -0
  193. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_locust_class.py +0 -0
  194. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_log.py +0 -0
  195. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_main.py +0 -0
  196. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_old_wait_api.py +0 -0
  197. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_runners.py +0 -0
  198. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_sequential_taskset.py +0 -0
  199. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_stats.py +0 -0
  200. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_tags.py +0 -0
  201. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_taskratio.py +0 -0
  202. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_users.py +0 -0
  203. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_util.py +0 -0
  204. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_wait_time.py +0 -0
  205. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_web.py +0 -0
  206. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_zmqrpc.py +0 -0
  207. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/testcases.py +0 -0
  208. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/util.py +0 -0
  209. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/__init__.py +0 -0
  210. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/inspectuser.py +0 -0
  211. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/sequential_taskset.py +0 -0
  212. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/task.py +0 -0
  213. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/users.py +0 -0
  214. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/wait_time.py +0 -0
  215. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/__init__.py +0 -0
  216. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/cache.py +0 -0
  217. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/deprecation.py +0 -0
  218. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/exception_handler.py +0 -0
  219. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/load_locustfile.py +0 -0
  220. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/rounding.py +0 -0
  221. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/timespan.py +0 -0
  222. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/web.py +0 -0
  223. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.eslintrc +0 -0
  224. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.gitignore +0 -0
  225. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.prettierrc +0 -0
  226. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/assets/favicon.ico +0 -0
  227. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/assets/logo.png +0 -0
  228. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/package.json +0 -0
  229. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/assets/favicon.ico +0 -0
  230. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/assets/logo.png +0 -0
  231. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/App.test.tsx +0 -0
  232. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/App.tsx +0 -0
  233. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
  234. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
  235. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
  236. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
  237. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FallbackRender/FallbackRender.test.tsx +0 -0
  238. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FallbackRender/FallbackRender.tsx +0 -0
  239. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/Form.tsx +0 -0
  240. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/Select.tsx +0 -0
  241. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
  242. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
  243. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
  244. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Layout.tsx +0 -0
  245. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
  246. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
  247. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
  248. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
  249. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
  250. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
  251. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
  252. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
  253. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
  254. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Modal/Modal.tsx +0 -0
  255. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
  256. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Reports/Reports.tsx +0 -0
  257. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
  258. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
  259. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
  260. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
  261. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
  262. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
  263. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
  264. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
  265. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
  266. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
  267. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
  268. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
  269. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
  270. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
  271. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
  272. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmUserClassPicker.tsx +0 -0
  273. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
  274. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
  275. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
  276. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmUserClassPicker.test.tsx +0 -0
  277. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
  278. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
  279. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Table/Table.test.tsx +0 -0
  280. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Table/Table.tsx +0 -0
  281. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
  282. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
  283. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
  284. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.test.tsx +0 -0
  285. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.tsx +0 -0
  286. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
  287. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/auth.ts +0 -0
  288. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/swarm.ts +0 -0
  289. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/theme.ts +0 -0
  290. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/global.d.ts +0 -0
  291. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
  292. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSelecteViewColumns.test.tsx +0 -0
  293. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
  294. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
  295. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useInterval.ts +0 -0
  296. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useNotifications.ts +0 -0
  297. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSelectViewColumns.ts +0 -0
  298. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSortByField.ts +0 -0
  299. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
  300. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/index.tsx +0 -0
  301. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/Dashboard.tsx +0 -0
  302. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/HtmlReport.tsx +0 -0
  303. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/Auth.test.tsx +0 -0
  304. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/HtmlReport.test.tsx +0 -0
  305. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/api/swarm.ts +0 -0
  306. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/hooks.ts +0 -0
  307. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
  308. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
  309. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/root.slice.ts +0 -0
  310. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
  311. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
  312. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
  313. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
  314. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/url.slice.ts +0 -0
  315. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/store.ts +0 -0
  316. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/utils.ts +0 -0
  317. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/styles/theme.ts +0 -0
  318. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/constants.ts +0 -0
  319. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
  320. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/setup.ts +0 -0
  321. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/testUtils.tsx +0 -0
  322. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/auth.types.ts +0 -0
  323. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/swarm.types.ts +0 -0
  324. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/tab.types.ts +0 -0
  325. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/table.types.ts +0 -0
  326. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/ui.types.ts +0 -0
  327. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/number.ts +0 -0
  328. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/object.ts +0 -0
  329. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/string.ts +0 -0
  330. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/number.test.ts +0 -0
  331. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/object.test.ts +0 -0
  332. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/string.test.ts +0 -0
  333. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/url.test.ts +0 -0
  334. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/url.ts +0 -0
  335. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/tsconfig.json +0 -0
  336. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/vitest.config.ts +0 -0
  337. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/yarn.lock +0 -0
  338. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/dependency_links.txt +0 -0
  339. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/entry_points.txt +0 -0
  340. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/not-zip-safe +0 -0
  341. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/top_level.txt +0 -0
  342. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/package.json +0 -0
  343. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/locustfile.py +0 -0
  344. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-disributed-headless.sh +0 -0
  345. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-disributed-web.sh +0 -0
  346. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-local-headless.sh +0 -0
  347. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-local-web.sh +0 -0
  348. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/setup.cfg +0 -0
  349. {locust-2.23.2.dev26 → locust-2.23.2.dev39}/tox.ini +0 -0
@@ -29,3 +29,4 @@ __pycache__
29
29
  yarn-error.log
30
30
  .venv
31
31
  .DS_Store
32
+ .python-version
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.23.2.dev26
3
+ Version: 2.23.2.dev39
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
- Project-URL: Homepage, https://locust.io/
6
+ Project-URL: Homepage, https://github.com/locustio/locust
7
7
  Project-URL: Documentation, https://docs.locust.io/
8
8
  Project-URL: Code, https://github.com/locustio/locust
9
9
  Project-URL: Help/Questions, https://stackoverflow.com/questions/tagged/locust
@@ -35,6 +35,7 @@ Requires-Dist: msgpack>=1.0.0
35
35
  Requires-Dist: pyzmq>=25.0.0
36
36
  Requires-Dist: geventhttpclient>=2.0.11
37
37
  Requires-Dist: ConfigArgParse>=1.5.5
38
+ Requires-Dist: tomli>=1.1.0; python_version < "3.11"
38
39
  Requires-Dist: psutil>=5.9.1
39
40
  Requires-Dist: Flask-Login>=0.6.3
40
41
  Requires-Dist: Flask-Cors>=3.0.10
@@ -24,7 +24,8 @@ Locust is configured mainly through command line arguments.
24
24
  Environment Variables
25
25
  =====================
26
26
 
27
- Options can also be set through through environment variables. They are typically the same as the command line argument but capitalized and prefixed with ``LOCUST_``:
27
+ Options can also be set through environment variables. They are typically the same as the command line argument
28
+ but capitalized and prefixed with ``LOCUST_``:
28
29
 
29
30
  On Linux/macOS:
30
31
 
@@ -44,17 +45,23 @@ On Windows:
44
45
  Configuration File
45
46
  ==================
46
47
 
47
- Options can also be set in a configuration file in the `config file <https://github.com/bw2/ConfigArgParse#config-file-syntax>`_
48
- format.
48
+ Options can also be set in a configuration file in the
49
+ `config or TOML file format <https://github.com/bw2/ConfigArgParse#config-file-syntax>`_.
49
50
 
50
- Locust will look for ``~/.locust.conf`` and ``./locust.conf`` by default, and you can specify an
51
- additional file using the ``--config`` flag.
51
+ Locust will look for ``~/.locust.conf``, ``./locust.conf`` and ``./pyproject.toml`` by default.
52
+ You can specify an additional file using the ``--config`` flag.
52
53
 
53
- Example:
54
+ .. code-block:: console
54
55
 
55
- .. code-block::
56
+ $ locust --config custom_config.conf
57
+
58
+ Here's a quick example of the configuration files supported by Locust:
59
+
60
+ locust.conf
61
+ --------------
62
+
63
+ .. code-block:: ini
56
64
 
57
- # master.conf in current directory
58
65
  locustfile = locust_files/my_locust_file.py
59
66
  headless = true
60
67
  master = true
@@ -63,19 +70,34 @@ Example:
63
70
  users = 100
64
71
  spawn-rate = 10
65
72
  run-time = 10m
66
-
73
+ tags = [Critical, Normal]
67
74
 
68
- .. code-block:: console
75
+ pyproject.toml
76
+ --------------
69
77
 
70
- $ locust --config master.conf
78
+ When using a TOML file, configuration options should be defined within the ``[tool.locust]`` section.
79
+
80
+ .. code-block:: toml
81
+
82
+ [tool.locust]
83
+ locustfile = "locust_files/my_locust_file.py"
84
+ headless = true
85
+ master = true
86
+ expect-workers = 5
87
+ host = "https://target-system"
88
+ users = 100
89
+ spawn-rate = 10
90
+ run-time = "10m"
91
+ tags = ["Critical", "Normal"]
71
92
 
72
93
  .. note::
73
94
 
74
- Configuration values are read (overridden) in the following order:
95
+ Configuration values are read (and overridden) in the following order:
75
96
 
76
97
  .. code-block:: console
77
98
 
78
- ~/locust.conf -> ./locust.conf -> (file specified using --conf) -> env vars -> cmd args
99
+ ~/.locust.conf -> ./locust.conf -> ./pyproject.toml -> (file specified using --conf) -> env vars -> cmd args
100
+
79
101
 
80
102
  All available configuration options
81
103
  ===================================
@@ -2,14 +2,6 @@
2
2
  Locust Documentation
3
3
  =====================
4
4
 
5
- .. sidebar:: About locust
6
-
7
- Locust is a scalable load testing framework written in Python
8
-
9
- * **Website**: `https://locust.io/ <https://locust.io/>`_
10
- * **Source code**: `https://github.com/locustio/locust <https://github.com/locustio/locust>`_
11
- * **Twitter**: `@locustio <https://twitter.com/locustio>`_
12
-
13
5
 
14
6
  Getting started
15
7
  ---------------
@@ -18,7 +18,6 @@ so using the root logger in your own test scripts will put the message into the
18
18
  import logging
19
19
  logging.info("this log message will go wherever the other locust log messages go")
20
20
 
21
-
22
21
  It's also possible to control the whole logging configuration in your own test scripts by using the
23
22
  ``--skip-log-setup`` option. You will then have to
24
23
  `configure the logging <https://docs.python.org/3/library/logging.config.html>`_ yourself.
@@ -14,7 +14,6 @@ On Windows, this command will sometimes cause errors. Windows users should try u
14
14
 
15
15
  docker run -p 8089:8089 --mount type=bind,source=$pwd,target=/mnt/locust locustio/locust -f /mnt/locust/locustfile.py
16
16
 
17
-
18
17
  Docker Compose
19
18
  ==============
20
19
 
@@ -27,7 +26,6 @@ The above compose configuration could be used to start a master node and 4 worke
27
26
 
28
27
  docker-compose up --scale worker=4
29
28
 
30
-
31
29
  Use docker image as a base image
32
30
  ================================
33
31
 
@@ -37,7 +35,6 @@ official Locust docker image as a base image::
37
35
  FROM locustio/locust
38
36
  RUN pip3 install some-python-package
39
37
 
40
-
41
38
  Running a distributed load test on Kubernetes
42
39
  ==============================================
43
40
 
@@ -36,8 +36,8 @@ gevent.spawn(stats_history, env.runner)
36
36
  # start the test
37
37
  runner.start(1, spawn_rate=10)
38
38
 
39
- # in 60 seconds stop the runner
40
- gevent.spawn_later(60, lambda: runner.quit())
39
+ # in 30 seconds stop the runner
40
+ gevent.spawn_later(30, runner.quit)
41
41
 
42
42
  # wait for the greenlets
43
43
  runner.greenlet.join()
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.23.2.dev26'
16
- __version_tuple__ = version_tuple = (2, 23, 2, 'dev26')
15
+ __version__ = version = '2.23.2.dev39'
16
+ __version_tuple__ = version_tuple = (2, 23, 2, 'dev39')
@@ -12,10 +12,16 @@ import socket
12
12
  import sys
13
13
  import tempfile
14
14
  import textwrap
15
+ from collections import OrderedDict
15
16
  from typing import Any, NamedTuple
16
17
  from urllib.parse import urlparse
17
18
  from uuid import uuid4
18
19
 
20
+ if sys.version_info >= (3, 11):
21
+ import tomllib
22
+ else:
23
+ import tomli as tomllib
24
+
19
25
  import configargparse
20
26
  import gevent
21
27
  import requests
@@ -23,7 +29,7 @@ import requests
23
29
  version = locust.__version__
24
30
 
25
31
 
26
- DEFAULT_CONFIG_FILES = ["~/.locust.conf", "locust.conf"]
32
+ DEFAULT_CONFIG_FILES = ("~/.locust.conf", "locust.conf", "pyproject.toml")
27
33
 
28
34
 
29
35
  class LocustArgumentParser(configargparse.ArgumentParser):
@@ -63,6 +69,31 @@ class LocustArgumentParser(configargparse.ArgumentParser):
63
69
  }
64
70
 
65
71
 
72
+ class LocustTomlConfigParser(configargparse.TomlConfigParser):
73
+ def parse(self, stream):
74
+ try:
75
+ config = tomllib.loads(stream.read())
76
+ except Exception as e:
77
+ raise configargparse.ConfigFileParserException(f"Couldn't parse TOML file: {e}")
78
+
79
+ # convert to dict and filter based on section names
80
+ result = OrderedDict()
81
+
82
+ for section in self.sections:
83
+ data = configargparse.get_toml_section(config, section)
84
+ if data:
85
+ for key, value in data.items():
86
+ if isinstance(value, list):
87
+ result[key] = value
88
+ elif value is None:
89
+ pass
90
+ else:
91
+ result[key] = str(value)
92
+ break
93
+
94
+ return result
95
+
96
+
66
97
  def _is_package(path):
67
98
  """
68
99
  Is the given path a Python package?
@@ -186,6 +217,12 @@ def download_locustfile_from_url(url: str) -> str:
186
217
  def get_empty_argument_parser(add_help=True, default_config_files=DEFAULT_CONFIG_FILES) -> LocustArgumentParser:
187
218
  parser = LocustArgumentParser(
188
219
  default_config_files=default_config_files,
220
+ config_file_parser_class=configargparse.CompositeConfigParser(
221
+ [
222
+ LocustTomlConfigParser(["tool.locust"]),
223
+ configargparse.DefaultConfigFileParser,
224
+ ]
225
+ ),
189
226
  add_env_var_help=False,
190
227
  add_config_file_help=False,
191
228
  add_help=add_help,
@@ -38,17 +38,50 @@ class TestParser(unittest.TestCase):
38
38
  opts = self.parser.parse_args(args)
39
39
  self.assertEqual(opts.skip_log_setup, True)
40
40
 
41
- def test_parameter_parsing(self):
42
- with NamedTemporaryFile(mode="w") as file:
43
- os.environ["LOCUST_LOCUSTFILE"] = "locustfile_from_env"
44
- file.write("host host_from_config\nweb-host webhost_from_config")
41
+ def test_parse_options_from_conf_file(self):
42
+ with NamedTemporaryFile(mode="w", suffix=".conf") as file:
43
+ config_data = """\
44
+ locustfile = ./test_locustfile.py
45
+ web-host = 127.0.0.1
46
+ web-port = 45787
47
+ headless
48
+ tags = [Critical, Normal]
49
+ """
50
+
51
+ file.write(config_data)
45
52
  file.flush()
46
53
  parser = get_parser(default_config_files=[file.name])
47
- options = parser.parse_args(["-H", "host_from_args"])
48
- del os.environ["LOCUST_LOCUSTFILE"]
49
- self.assertEqual(options.web_host, "webhost_from_config")
50
- self.assertEqual(options.locustfile, "locustfile_from_env")
51
- self.assertEqual(options.host, "host_from_args") # overridden
54
+ options = parser.parse_args(["-H", "https://example.com"])
55
+
56
+ self.assertEqual("./test_locustfile.py", options.locustfile)
57
+ self.assertEqual("127.0.0.1", options.web_host)
58
+ self.assertEqual(45787, options.web_port)
59
+ self.assertTrue(options.headless)
60
+ self.assertEqual(["Critical", "Normal"], options.tags)
61
+ self.assertEqual("https://example.com", options.host)
62
+
63
+ def test_parse_options_from_toml_file(self):
64
+ with NamedTemporaryFile(mode="w", suffix=".toml") as file:
65
+ config_data = """\
66
+ [tool.locust]
67
+ locustfile = "./test_locustfile.py"
68
+ web-host = "127.0.0.1"
69
+ web-port = 45787
70
+ headless = true
71
+ tags = ["Critical", "Normal"]
72
+ """
73
+
74
+ file.write(config_data)
75
+ file.flush()
76
+ parser = get_parser(default_config_files=[file.name])
77
+ options = parser.parse_args(["-H", "https://example.com"])
78
+
79
+ self.assertEqual("./test_locustfile.py", options.locustfile)
80
+ self.assertEqual("127.0.0.1", options.web_host)
81
+ self.assertEqual(45787, options.web_port)
82
+ self.assertTrue(options.headless)
83
+ self.assertEqual(["Critical", "Normal"], options.tags)
84
+ self.assertEqual("https://example.com", options.host)
52
85
 
53
86
 
54
87
  class TestArgumentParser(LocustTestCase):
@@ -2,7 +2,7 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
- <link rel="icon" href="/assets/favicon.ico" />
5
+ <link rel="icon" href="./assets/favicon.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
  <meta name="theme-color" content="#000000" />
8
8
 
@@ -3,7 +3,7 @@
3
3
  <html lang="en">
4
4
  <head>
5
5
  <meta charset="utf-8" />
6
- <link rel="icon" href="/assets/favicon.ico" />
6
+ <link rel="icon" href="./assets/favicon.ico" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1" />
8
8
  <meta name="theme-color" content="#000000" />
9
9