locust 2.18.5.dev16__tar.gz → 2.18.5.dev32__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.

Potentially problematic release.


This version of locust might be problematic. Click here for more details.

Files changed (293) hide show
  1. {locust-2.18.5.dev16/locust.egg-info → locust-2.18.5.dev32}/PKG-INFO +1 -1
  2. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/changelog.rst +6 -0
  3. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/configuration.rst +2 -2
  4. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/retrieving-stats.rst +2 -2
  5. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/running-distributed.rst +28 -23
  6. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/running-in-debugger.rst +1 -1
  7. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/testing-other-systems.rst +1 -1
  8. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/what-is-locust.rst +1 -1
  9. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/writing-a-locustfile.rst +3 -5
  10. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/_version.py +2 -2
  11. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/argument_parser.py +55 -26
  12. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/main.py +12 -3
  13. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_main.py +2 -2
  14. {locust-2.18.5.dev16 → locust-2.18.5.dev32/locust.egg-info}/PKG-INFO +1 -1
  15. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.coveragerc +0 -0
  16. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.dockerignore +0 -0
  17. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.git-blame-ignore-revs +0 -0
  18. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.gitattributes +0 -0
  19. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/CONTRIBUTING.md +0 -0
  20. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  21. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  23. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/workflows/stale.yml +0 -0
  24. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.github/workflows/tests.yml +0 -0
  25. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.gitignore +0 -0
  26. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.readthedocs.yaml +0 -0
  27. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.vscode/launch.json +0 -0
  28. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.vscode/launch_locust.json +0 -0
  29. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/.vscode/settings.json +0 -0
  30. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/CHANGELOG.md +0 -0
  31. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/Dockerfile +0 -0
  32. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/LICENSE +0 -0
  33. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/MANIFEST.in +0 -0
  34. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/Makefile +0 -0
  35. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/README +0 -0
  36. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/README.md +0 -0
  37. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/SECURITY.md +0 -0
  38. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/Vagrantfile +0 -0
  39. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/benchmarks/dispatch.py +0 -0
  40. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/_static/theme-overrides.css +0 -0
  41. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/api.rst +0 -0
  42. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/conf.py +0 -0
  43. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/custom-load-shape.rst +0 -0
  44. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/developing-locust.rst +0 -0
  45. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/extending-locust.rst +0 -0
  46. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/further-reading.rst +0 -0
  47. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/history.rst +0 -0
  48. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/modern-webui-splash-screenshot.png +0 -0
  49. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/number_of_users.png +0 -0
  50. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/response_times.png +0 -0
  51. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/total_requests_per_second.png +0 -0
  52. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/userclass_picker_example.png +0 -0
  53. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/webui-running-statistics.png +0 -0
  54. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/images/webui-splash-screenshot.png +0 -0
  55. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/increase-performance.rst +0 -0
  56. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/index.rst +0 -0
  57. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/installation.rst +0 -0
  58. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/logging.rst +0 -0
  59. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/quickstart.rst +0 -0
  60. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/requirements.txt +0 -0
  61. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/running-cloud-integration.rst +0 -0
  62. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/running-in-docker.rst +0 -0
  63. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/running-without-web-ui.rst +0 -0
  64. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/tasksets.rst +0 -0
  65. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/docs/use-as-lib.rst +0 -0
  66. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/add_command_line_argument.py +0 -0
  67. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/basic.py +0 -0
  68. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/browse_docs_sequence_test.py +0 -0
  69. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/browse_docs_test.py +0 -0
  70. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_messages.py +0 -0
  71. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_shape/double_wave.py +0 -0
  72. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_shape/stages.py +0 -0
  73. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_shape/staging_user_classes.py +0 -0
  74. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_shape/step_load.py +0 -0
  75. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_shape/wait_user_count.py +0 -0
  76. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_wait_function.py +0 -0
  77. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_xmlrpc_client/server.py +0 -0
  78. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
  79. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/debugging.py +0 -0
  80. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/debugging_advanced.py +0 -0
  81. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/docker-compose/docker-compose.yml +0 -0
  82. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/dynamic_user_credentials.py +0 -0
  83. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/events.py +0 -0
  84. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/extend_modern_web_ui.py +0 -0
  85. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/extend_web_ui/extend.py +0 -0
  86. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
  87. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/extend_web_ui/static/extend.js +0 -0
  88. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/extend_web_ui/templates/extend.html +0 -0
  89. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/fast_http_locust.py +0 -0
  90. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/grpc_user.py +0 -0
  91. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/hello.proto +0 -0
  92. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/hello_pb2.py +0 -0
  93. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/hello_pb2_grpc.py +0 -0
  94. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/hello_server.py +0 -0
  95. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/grpc/locustfile.py +0 -0
  96. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/locustfile.py +0 -0
  97. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/manual_stats_reporting.py +0 -0
  98. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/multiple_hosts.py +0 -0
  99. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/nested_inline_tasksets.py +0 -0
  100. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/rest.py +0 -0
  101. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
  102. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/semaphore_wait.py +0 -0
  103. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/stop_on_threshold.py +0 -0
  104. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/README.md +0 -0
  105. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/data_subnet.tf +0 -0
  106. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/main.tf +0 -0
  107. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/output.tf +0 -0
  108. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/plan/basic.py +0 -0
  109. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/provisioner.tf +0 -0
  110. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/terraform/aws/variables.tf +0 -0
  111. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/test_data_management.py +0 -0
  112. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/use_as_lib.py +0 -0
  113. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/vagrant/README.md +0 -0
  114. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/vagrant/supervisord.conf +0 -0
  115. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/examples/worker_index.py +0 -0
  116. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/generate_changelog.py +0 -0
  117. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/__init__.py +0 -0
  118. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/__main__.py +0 -0
  119. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/clients.py +0 -0
  120. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/contrib/__init__.py +0 -0
  121. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/contrib/fasthttp.py +0 -0
  122. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/debug.py +0 -0
  123. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/dispatch.py +0 -0
  124. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/env.py +0 -0
  125. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/event.py +0 -0
  126. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/exception.py +0 -0
  127. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/html.py +0 -0
  128. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/input_events.py +0 -0
  129. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/log.py +0 -0
  130. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/py.typed +0 -0
  131. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/rpc/__init__.py +0 -0
  132. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/rpc/protocol.py +0 -0
  133. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/rpc/zmqrpc.py +0 -0
  134. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/runners.py +0 -0
  135. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/shape.py +0 -0
  136. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/chart.js +0 -0
  137. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/css/application.css +0 -0
  138. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/css/application.css.map +0 -0
  139. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/css/tables.css +0 -0
  140. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/css/tables.css.map +0 -0
  141. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/echarts.common.min.js +0 -0
  142. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/favicon.ico +0 -0
  143. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/logo.png +0 -0
  144. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/ui-screenshot-charts.png +0 -0
  145. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/ui-screenshot-start-test.png +0 -0
  146. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/ui-screenshot-stats.png +0 -0
  147. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/img/ui-screenshot-workers.png +0 -0
  148. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/jquery-1.11.3.min.js +0 -0
  149. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/jquery.jqote2.min.js +0 -0
  150. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/jquery.tools.min.js +0 -0
  151. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/locust.js +0 -0
  152. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/sass/_base.sass +0 -0
  153. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/sass/_mixins.sass +0 -0
  154. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/sass/application.sass +0 -0
  155. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/sass/tables.sass +0 -0
  156. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/tasks.js +0 -0
  157. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/static/vintage.js +0 -0
  158. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/stats.py +0 -0
  159. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/templates/index.html +0 -0
  160. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/templates/report.html +0 -0
  161. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/templates/stats_data.html +0 -0
  162. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/__init__.py +0 -0
  163. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/fake_module1_for_env_test.py +0 -0
  164. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/fake_module2_for_env_test.py +0 -0
  165. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/mock_locustfile.py +0 -0
  166. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/mock_logging.py +0 -0
  167. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_debugging.py +0 -0
  168. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_dispatch.py +0 -0
  169. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_env.py +0 -0
  170. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_fasthttp.py +0 -0
  171. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_http.py +0 -0
  172. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_load_locustfile.py +0 -0
  173. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_locust_class.py +0 -0
  174. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_log.py +0 -0
  175. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_old_wait_api.py +0 -0
  176. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_parser.py +0 -0
  177. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_runners.py +0 -0
  178. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_sequential_taskset.py +0 -0
  179. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_stats.py +0 -0
  180. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_tags.py +0 -0
  181. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_taskratio.py +0 -0
  182. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_users.py +0 -0
  183. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_util.py +0 -0
  184. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_wait_time.py +0 -0
  185. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_web.py +0 -0
  186. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/test_zmqrpc.py +0 -0
  187. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/testcases.py +0 -0
  188. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/test/util.py +0 -0
  189. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/__init__.py +0 -0
  190. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/inspectuser.py +0 -0
  191. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/sequential_taskset.py +0 -0
  192. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/task.py +0 -0
  193. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/users.py +0 -0
  194. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/user/wait_time.py +0 -0
  195. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/__init__.py +0 -0
  196. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/cache.py +0 -0
  197. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/deprecation.py +0 -0
  198. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/exception_handler.py +0 -0
  199. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/load_locustfile.py +0 -0
  200. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/rounding.py +0 -0
  201. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/util/timespan.py +0 -0
  202. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/web.py +0 -0
  203. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/.eslintrc +0 -0
  204. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/.gitignore +0 -0
  205. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/.prettierrc +0 -0
  206. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dev.html +0 -0
  207. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dist/assets/favicon.ico +0 -0
  208. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dist/assets/index-8ad54eaa.js +0 -0
  209. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dist/assets/logo.png +0 -0
  210. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dist/index.html +0 -0
  211. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/dist/report.html +0 -0
  212. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/index.html +0 -0
  213. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/package.json +0 -0
  214. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/public/assets/favicon.ico +0 -0
  215. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/public/assets/logo.png +0 -0
  216. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/public/report.html +0 -0
  217. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/App.tsx +0 -0
  218. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/Report.tsx +0 -0
  219. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
  220. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
  221. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
  222. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Form/Form.tsx +0 -0
  223. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Form/Select.tsx +0 -0
  224. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
  225. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
  226. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Layout.tsx +0 -0
  227. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
  228. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
  229. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
  230. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
  231. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
  232. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Modal/Modal.tsx +0 -0
  233. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Reports/Reports.tsx +0 -0
  234. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
  235. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
  236. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
  237. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
  238. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
  239. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
  240. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
  241. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
  242. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/SwarmForm/SwarmCustomParmeters.tsx +0 -0
  243. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
  244. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
  245. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/SwarnRatios/SwarmRatios.tsx +0 -0
  246. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Table/Table.tsx +0 -0
  247. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
  248. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
  249. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
  250. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/constants/swarm.tsx +0 -0
  251. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/constants/theme.ts +0 -0
  252. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/global.d.ts +0 -0
  253. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/hooks/useAsync.ts +0 -0
  254. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/hooks/useInterval.ts +0 -0
  255. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/hooks/useSortByField.ts +0 -0
  256. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
  257. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/index.tsx +0 -0
  258. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/api/swarm.ts +0 -0
  259. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/hooks.ts +0 -0
  260. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/slice/root.slice.ts +0 -0
  261. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
  262. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
  263. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
  264. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/slice/url.slice.ts +0 -0
  265. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/store.ts +0 -0
  266. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/redux/utils.ts +0 -0
  267. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/styles/theme.ts +0 -0
  268. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/types/swarm.types.ts +0 -0
  269. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/types/tab.types.ts +0 -0
  270. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/types/table.types.ts +0 -0
  271. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/types/ui.types.ts +0 -0
  272. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/utils/number.ts +0 -0
  273. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/utils/object.ts +0 -0
  274. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/utils/string.ts +0 -0
  275. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/src/utils/url.ts +0 -0
  276. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/tsconfig.json +0 -0
  277. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/vite.config.ts +0 -0
  278. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust/webui/yarn.lock +0 -0
  279. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/SOURCES.txt +0 -0
  280. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/dependency_links.txt +0 -0
  281. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/entry_points.txt +0 -0
  282. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/not-zip-safe +0 -0
  283. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/requires.txt +0 -0
  284. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/locust.egg-info/top_level.txt +0 -0
  285. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/package.json +0 -0
  286. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/pyproject.toml +0 -0
  287. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/scripts/locustfile.py +0 -0
  288. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/scripts/run-disributed-headless.sh +0 -0
  289. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/scripts/run-disributed-web.sh +0 -0
  290. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/scripts/run-local-headless.sh +0 -0
  291. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/scripts/run-local-web.sh +0 -0
  292. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/setup.cfg +0 -0
  293. {locust-2.18.5.dev16 → locust-2.18.5.dev32}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.18.5.dev16
3
+ Version: 2.18.5.dev32
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -4,6 +4,12 @@ Changelog Highlights
4
4
 
5
5
  For full details of the Locust changelog, please see https://github.com/locustio/locust/blob/master/CHANGELOG.md
6
6
 
7
+ 2.19.0
8
+ ======
9
+ * Add --processes parameter to automatically fork subprocesses for workers https://github.com/locustio/locust/pull/2472
10
+ * Automatically shut down workers if master goes missing for too long https://github.com/locustio/locust/pull/2474
11
+ * Update minimum version of various dependencies https://github.com/locustio/locust/pull/2476
12
+
7
13
  2.18.4
8
14
  ======
9
15
  * Various fixes to Modern UI
@@ -59,7 +59,7 @@ Example:
59
59
  headless = true
60
60
  master = true
61
61
  expect-workers = 5
62
- host = http://target-system
62
+ host = https://target-system
63
63
  users = 100
64
64
  spawn-rate = 10
65
65
  run-time = 10m
@@ -67,7 +67,7 @@ Example:
67
67
 
68
68
  .. code-block:: console
69
69
 
70
- $ locust --config=master.conf
70
+ $ locust --config master.conf
71
71
 
72
72
  .. note::
73
73
 
@@ -11,10 +11,10 @@ if you plan on running Locust in an automated way with the ``--headless`` flag:
11
11
 
12
12
  .. code-block:: console
13
13
 
14
- $ locust -f examples/basic.py --csv=example --headless -t10m
14
+ $ locust -f examples/basic.py --csv example --headless -t10m
15
15
 
16
16
  The files will be named ``example_stats.csv``, ``example_failures.csv``, ``example_exceptions.csv`` and ``example_stats_history.csv``
17
- (when using ``--csv=example``). The first two files will contain the stats and failures for the whole
17
+ (when using ``--csv example``). The first two files will contain the stats and failures for the whole
18
18
  test run, with a row for every stats entry (URL endpoint) and an aggregated row. The ``example_stats_history.csv``
19
19
  will get new rows with the *current* (10 seconds sliding window) stats appended during the whole test run.
20
20
  By default only the Aggregate row is appended regularly to the history stats, but if Locust is started with
@@ -10,70 +10,75 @@ But if your test plan is complex or you want to run even more load, you'll need
10
10
 
11
11
  To do this, you start one instance of Locust in master mode using the ``--master`` flag and multiple worker instances using the ``--worker`` flag. If the workers are not on the same machine as the master you use ``--master-host`` to point them to the IP/hostname of the machine running the master.
12
12
 
13
- The master instance runs Locust's web interface, and tells the workers when to spawn/stop Users. The workers run your Users and send back statistics to the master. The master instance doesn't run any Users itself.
13
+ To make this easier, you can use the ``--processes`` flag to launch multiple instances. It will launch a master process and the specified number of worker processes. Used in combination with ``--worker`` it will only launch the workers.
14
+
15
+ The master instance runs Locust's web interface, and tells the workers when to spawn/stop Users. The workers run your Users and send statistics back to the master. The master instance doesn't run any Users itself.
14
16
 
15
17
  Both the master and worker machines must have a copy of the locustfile when running Locust distributed.
16
18
 
17
19
  .. note::
18
- Because Python cannot fully utilize more than one core per process (see `GIL <https://realpython.com/python-gil/>`_), you should typically run **one worker instance per processor core** on the worker machines in order to utilize all their computing power.
20
+ Because Python cannot fully utilize more than one core per process (see `GIL <https://realpython.com/python-gil/>`_), you will need to run **one worker instance per processor core** in order to have access to all your computing power.
19
21
 
20
22
  .. note::
21
23
  There is almost no limit to how many *Users* you can run per worker. Locust/gevent can run thousands or even tens of thousands of Users per process just fine, as long as their total request rate/RPS is not too high.
22
24
 
23
25
  .. note::
24
- If Locust is getting close to running out of CPU resources, it will log a warning.
26
+ If Locust is getting close to running out of CPU resources, it will log a warning. If there is no warning, you can be pretty sure your test is not limited by load generator CPU.
25
27
 
26
- Example
27
- =======
28
+ .. note::
29
+ ``--processes`` was introduced in Locust 2.19. Child processes are launched using fork which is not available in Windows.
28
30
 
29
- To start locust in master mode::
31
+ Example 1: Everything on one machine
32
+ ====================================
30
33
 
31
- locust -f my_locustfile.py --master
34
+ It is really simple to launch a master and 4 worker processes::
32
35
 
33
- And then on each worker (replace ``192.168.0.14`` with the IP of the master machine, or leave out the parameter altogether if your workers are on the same machine as the master)::
36
+ locust --processes 4
34
37
 
35
- locust -f my_locustfile.py --worker --master-host=192.168.0.14
38
+ You can even auto-detect the number of cores in your machine and launch one worker for each of them::
36
39
 
40
+ locust --processes -1
37
41
 
38
- Options
39
- =======
42
+ Example 2: Multiple machines
43
+ ============================
40
44
 
41
- ``--master``
42
- ------------
45
+ Start locust in master mode on one machine::
43
46
 
44
- Sets locust in master mode. The web interface will run on this node.
47
+ locust -f my_locustfile.py --master
45
48
 
49
+ And then on each worker machine::
46
50
 
47
- ``--worker``
48
- ------------
51
+ locust -f my_locustfile.py --worker --master-host <your master's address> --processes 4
49
52
 
50
- Sets locust in worker mode.
53
+ Note that both master and worker nodes need access to the locustfile, it is not sent from master to worker automatically. But you can use `locust-swarm <https://github.com/SvenskaSpel/locust-swarm>`_ to automate that.
51
54
 
55
+ Options
56
+ =======
52
57
 
53
- ``--master-host=X.X.X.X``
58
+ ``--master-host <hostname or ip>``
54
59
  -------------------------
55
60
 
56
61
  Optionally used together with ``--worker`` to set the hostname/IP of the master node (defaults
57
- to 127.0.0.1)
62
+ to localhost)
58
63
 
59
- ``--master-port=5557``
64
+ ``--master-port <port number>``
60
65
  ----------------------
61
66
 
62
67
  Optionally used together with ``--worker`` to set the port number of the master node (defaults to 5557).
63
68
 
64
- ``--master-bind-host=X.X.X.X``
69
+ ``--master-bind-host <ip>``
65
70
  ------------------------------
66
71
 
67
72
  Optionally used together with ``--master``. Determines which network interface the master node
68
73
  will bind to. Defaults to * (all available interfaces).
69
74
 
70
- ``--master-bind-port=5557``
75
+ ``--master-bind-port <port number>``
71
76
  ------------------------------
72
77
 
73
78
  Optionally used together with ``--master``. Determines what network ports that the master node will
74
79
  listen to. Defaults to 5557.
75
80
 
76
- ``--expect-workers=X``
81
+ ``--expect-workers <number of workers>``
77
82
  ----------------------
78
83
 
79
84
  Used when starting the master node with ``--headless``. The master node will then wait until X worker
@@ -47,7 +47,7 @@ Print HTTP communication
47
47
 
48
48
  Sometimes it can be hard to understand why an HTTP request fails in Locust when it works from a regular browser/other application. Here's how to examine the communication in detail:
49
49
 
50
- For ``HttpUser`` (`python-requests <http://python-requests.org>`_):
50
+ For ``HttpUser`` (`python-requests <https://python-requests.org>`_):
51
51
 
52
52
  .. code-block:: python
53
53
 
@@ -8,7 +8,7 @@ Locust only comes with built-in support for HTTP/HTTPS but it can be extended to
8
8
 
9
9
  .. note::
10
10
 
11
- It is important that the protocol libraries you use can be `monkey-patched <http://www.gevent.org/intro.html#monkey-patching>`_ by gevent.
11
+ It is important that the protocol libraries you use can be `monkey-patched <https://www.gevent.org/intro.html#monkey-patching>`_ by gevent.
12
12
 
13
13
  Almost any libraries that are pure Python (using the Python ``socket`` module or some other standard library function like ``subprocess``) should work fine out of the box - but if they do their I/O calls in C, gevent will be unable to patch it. This will block the whole Locust/Python process (in practice limiting you to running a single User per worker process).
14
14
 
@@ -52,7 +52,7 @@ load against a dynamic website where most pages had different content for differ
52
52
  verbose configuration files to declare the tests. In Locust we took a different approach. Instead of configuration formats or UIs
53
53
  you'd get a python framework that would let you define the behaviour of your users using Python code.
54
54
 
55
- `Locust <http://en.wikipedia.org/wiki/Locust>`_ takes its name from the grasshopper species, known for their swarming behaviour.
55
+ `Locust <https://en.wikipedia.org/wiki/Locust>`_ takes its name from the grasshopper species, known for their swarming behaviour.
56
56
 
57
57
  Previous versions of Locust used terminology borrowed from nature (swarming, hatching, attacking etc), but now employs more industry standard naming.
58
58
 
@@ -238,12 +238,10 @@ of request count independently of total user count.
238
238
  host attribute
239
239
  --------------
240
240
 
241
- The host attribute is a URL prefix (i.e. "http://google.com") to the host that is to be loaded.
242
- Usually, this is specified in Locust's web UI or on the command line, using the
243
- :code:`--host` option, when locust is started.
241
+ The host attribute is a URL prefix (e.g. ``https://google.com``) to the host you want ot test. It is automatically added to requests, so you can do ``self.client.get("/")`` for example.
244
242
 
245
- If one declares a host attribute in the user class, it will be used in the case when no :code:`--host`
246
- is specified on the command line or in the web request.
243
+ You can overwrite this value in Locust's web UI or on the command line, using the
244
+ :code:`--host` option.
247
245
 
248
246
  tasks attribute
249
247
  ---------------
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.18.5.dev16'
16
- __version_tuple__ = version_tuple = (2, 18, 5, 'dev16')
15
+ __version__ = version = '2.18.5.dev32'
16
+ __version_tuple__ = version_tuple = (2, 18, 5, 'dev32')
@@ -146,22 +146,32 @@ def get_empty_argument_parser(add_help=True, default_config_files=DEFAULT_CONFIG
146
146
  usage=configargparse.SUPPRESS,
147
147
  description=textwrap.dedent(
148
148
  """
149
- Usage: locust [OPTIONS] [UserClass ...]
150
-
149
+ Usage: locust [options] [UserClass ...]
151
150
  """
152
151
  ),
153
- # epilog="",
152
+ epilog="""Examples:
153
+
154
+ locust -f my_test.py -H https://www.example.com
155
+
156
+ locust -u 100 -t 20m --headless --process 4 MyHttpUser AnotherUser
157
+
158
+ See documentation for more details, including how to set options using a file or environment variables: https://docs.locust.io/en/stable/configuration.html""",
154
159
  )
155
160
  parser.add_argument(
156
161
  "-f",
157
162
  "--locustfile",
163
+ metavar="<filename>",
158
164
  default="locustfile",
159
- help="Python module to import, e.g. '../other_test.py'. Either a .py file, multiple comma-separated .py files or a package "
160
- "directory. Defaults to 'locustfile'.",
165
+ help="The Python file or module that contains your test, e.g. 'my_test.py'. Also accepts multiple comma-separated .py files or a package name/directory. Defaults to 'locustfile'.",
161
166
  env_var="LOCUST_LOCUSTFILE",
162
167
  )
163
168
 
164
- parser.add_argument("--config", is_config_file_arg=True, help="Config file path")
169
+ parser.add_argument(
170
+ "--config",
171
+ is_config_file_arg=True,
172
+ help="File to read additional configuration from. See https://docs.locust.io/en/stable/configuration.html#configuration-file",
173
+ metavar="<filename>",
174
+ )
165
175
 
166
176
  return parser
167
177
 
@@ -251,13 +261,15 @@ def setup_parser_arguments(parser):
251
261
  parser.add_argument(
252
262
  "-H",
253
263
  "--host",
254
- help="Host to load test in the following format: http://10.21.32.33",
264
+ metavar="<base url>",
265
+ help="Host to load test, in the following format: https://www.example.com",
255
266
  env_var="LOCUST_HOST",
256
267
  )
257
268
  parser.add_argument(
258
269
  "-u",
259
270
  "--users",
260
271
  type=int,
272
+ metavar="<int>",
261
273
  dest="num_users",
262
274
  help="Peak number of concurrent Locust users. Primarily used together with --headless or --autostart. Can be changed during a test by keyboard inputs w, W (spawn 1, 10 users) and s, S (stop 1, 10 users)",
263
275
  env_var="LOCUST_USERS",
@@ -266,12 +278,14 @@ def setup_parser_arguments(parser):
266
278
  "-r",
267
279
  "--spawn-rate",
268
280
  type=float,
281
+ metavar="<float>",
269
282
  help="Rate to spawn users at (users per second). Primarily used together with --headless or --autostart",
270
283
  env_var="LOCUST_SPAWN_RATE",
271
284
  )
272
285
  parser.add_argument(
273
286
  "--hatch-rate",
274
287
  env_var="LOCUST_HATCH_RATE",
288
+ metavar="<float>",
275
289
  type=float,
276
290
  default=0,
277
291
  help=configargparse.SUPPRESS,
@@ -279,6 +293,7 @@ def setup_parser_arguments(parser):
279
293
  parser.add_argument(
280
294
  "-t",
281
295
  "--run-time",
296
+ metavar="<time string>",
282
297
  help="Stop after the specified amount of time, e.g. (300s, 20m, 3h, 1h30m, etc.). Only used together with --headless or --autostart. Defaults to run forever.",
283
298
  env_var="LOCUST_RUN_TIME",
284
299
  )
@@ -294,6 +309,7 @@ def setup_parser_arguments(parser):
294
309
  web_ui_group.add_argument(
295
310
  "--web-host",
296
311
  default="",
312
+ metavar="<ip>",
297
313
  help="Host to bind the web interface to. Defaults to '*' (all interfaces)",
298
314
  env_var="LOCUST_WEB_HOST",
299
315
  )
@@ -301,6 +317,7 @@ def setup_parser_arguments(parser):
301
317
  "--web-port",
302
318
  "-P",
303
319
  type=int,
320
+ metavar="<port number>",
304
321
  default=8089,
305
322
  help="Port on which to run web host",
306
323
  env_var="LOCUST_WEB_PORT",
@@ -320,6 +337,7 @@ def setup_parser_arguments(parser):
320
337
  web_ui_group.add_argument(
321
338
  "--autoquit",
322
339
  type=int,
340
+ metavar="<seconds>",
323
341
  default=-1,
324
342
  help="Quits Locust entirely, X seconds after the run is finished. Only used together with --autostart. The default is to keep Locust running until you shut it down using CTRL+C",
325
343
  env_var="LOCUST_AUTOQUIT",
@@ -335,19 +353,22 @@ def setup_parser_arguments(parser):
335
353
  "--web-auth",
336
354
  type=str,
337
355
  dest="web_auth",
356
+ metavar="<username:password>",
338
357
  default=None,
339
- help="Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password",
358
+ help="DEPRECATED Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password",
340
359
  env_var="LOCUST_WEB_AUTH",
341
360
  )
342
361
  web_ui_group.add_argument(
343
362
  "--tls-cert",
344
363
  default="",
364
+ metavar="<filename>",
345
365
  help="Optional path to TLS certificate to use to serve over HTTPS",
346
366
  env_var="LOCUST_TLS_CERT",
347
367
  )
348
368
  web_ui_group.add_argument(
349
369
  "--tls-key",
350
370
  default="",
371
+ metavar="<filename>",
351
372
  help="Optional path to TLS private key to use to serve over HTTPS",
352
373
  env_var="LOCUST_TLS_KEY",
353
374
  )
@@ -374,37 +395,40 @@ def setup_parser_arguments(parser):
374
395
  master_group.add_argument(
375
396
  "--master",
376
397
  action="store_true",
377
- help="Set locust to run in distributed mode with this process as master",
398
+ help="Launch locust as a master node, to which worker nodes connect.",
378
399
  env_var="LOCUST_MODE_MASTER",
379
400
  )
380
401
  master_group.add_argument(
381
402
  "--master-bind-host",
382
403
  default="*",
383
- help="Interfaces (hostname, ip) that locust master should bind to. Only used when running with --master. Defaults to * (all available interfaces).",
404
+ metavar="<ip>",
405
+ help="IP address for the master to listen on, e.g '192.168.1.1'. Defaults to * (all available interfaces).",
384
406
  env_var="LOCUST_MASTER_BIND_HOST",
385
407
  )
386
408
  master_group.add_argument(
387
409
  "--master-bind-port",
388
410
  type=int,
411
+ metavar="<port number>",
389
412
  default=5557,
390
- help="Port that locust master should bind to. Only used when running with --master. Defaults to 5557.",
413
+ help="Port for the master to listen on. Defaults to 5557.",
391
414
  env_var="LOCUST_MASTER_BIND_PORT",
392
415
  )
393
416
  master_group.add_argument(
394
417
  "--expect-workers",
395
418
  type=int,
419
+ metavar="<int>",
396
420
  default=1,
397
- help="How many workers master should expect to connect before starting the test (only when --headless/autostart is used).",
421
+ help="Delay starting the test until this number of workers have connected (only used in combination with --headless/--autostart).",
398
422
  env_var="LOCUST_EXPECT_WORKERS",
399
423
  )
400
424
  master_group.add_argument(
401
425
  "--expect-workers-max-wait",
402
426
  type=int,
427
+ metavar="<int>",
403
428
  default=0,
404
429
  help="How long should the master wait for workers to connect before giving up. Defaults to wait forever",
405
430
  env_var="LOCUST_EXPECT_WORKERS_MAX_WAIT",
406
431
  )
407
-
408
432
  master_group.add_argument(
409
433
  "--expect-slaves",
410
434
  action="store_true",
@@ -414,9 +438,8 @@ def setup_parser_arguments(parser):
414
438
  worker_group = parser.add_argument_group(
415
439
  "Worker options",
416
440
  """Options for running a Locust Worker node when running Locust distributed.
417
- Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, since other options such as -u, -r, -t are specified on the Master node.""",
441
+ Typically ONLY these options (and --locustfile) need to be specified on workers, since other options (-u, -r, -t, ...) are controlled by the master node.""",
418
442
  )
419
- # if locust should be run in distributed mode as worker
420
443
  worker_group.add_argument(
421
444
  "--worker",
422
445
  action="store_true",
@@ -426,7 +449,8 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
426
449
  worker_group.add_argument(
427
450
  "--processes",
428
451
  type=int,
429
- help="Number of times to fork the locust process, to enable using multiple CPU cores. Use -1 to launch one process per CPU core in your system. Combine with --worker flag or let it automatically set --worker and --master flags for an all-in-one-solution. Not available on Windows. Experimental.",
452
+ metavar="<int>",
453
+ help="Number of times to fork the locust process, to enable using system. Combine with --worker flag or let it automatically set --worker and --master flags for an all-in-one-solution. Not available on Windows. Experimental.",
430
454
  env_var="LOCUST_PROCESSES",
431
455
  )
432
456
  worker_group.add_argument(
@@ -434,21 +458,20 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
434
458
  action="store_true",
435
459
  help=configargparse.SUPPRESS,
436
460
  )
437
- # master host options
438
461
  worker_group.add_argument(
439
462
  "--master-host",
440
463
  default="127.0.0.1",
441
- help="Host or IP address of locust master for distributed load testing. Only used when running with --worker. Defaults to 127.0.0.1.",
464
+ help="Hostname of locust master node to connect to. Defaults to 127.0.0.1.",
442
465
  env_var="LOCUST_MASTER_NODE_HOST",
443
- metavar="MASTER_NODE_HOST",
466
+ metavar="<hostname>",
444
467
  )
445
468
  worker_group.add_argument(
446
469
  "--master-port",
447
470
  type=int,
471
+ metavar="<port number>",
448
472
  default=5557,
449
- help="The port to connect to that is used by the locust master for distributed load testing. Only used when running with --worker. Defaults to 5557.",
473
+ help="Port to connect to on master node. Defaults to 5557.",
450
474
  env_var="LOCUST_MASTER_NODE_PORT",
451
- metavar="MASTER_NODE_PORT",
452
475
  )
453
476
 
454
477
  tag_group = parser.add_argument_group(
@@ -459,7 +482,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
459
482
  "-T",
460
483
  "--tags",
461
484
  nargs="*",
462
- metavar="TAG",
485
+ metavar="<tag>",
463
486
  env_var="LOCUST_TAGS",
464
487
  help="List of tags to include in the test, so only tasks with any matching tags will be executed",
465
488
  )
@@ -467,7 +490,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
467
490
  "-E",
468
491
  "--exclude-tags",
469
492
  nargs="*",
470
- metavar="TAG",
493
+ metavar="<tag>",
471
494
  env_var="LOCUST_EXCLUDE_TAGS",
472
495
  help="List of tags to exclude from the test, so only tasks with no matching tags will be executed",
473
496
  )
@@ -476,6 +499,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
476
499
  stats_group.add_argument(
477
500
  "--csv", # Name repeated in 'parse_options'
478
501
  dest="csv_prefix",
502
+ metavar="<string>",
479
503
  help="Store current request stats to files in CSV format. Setting this option will generate three files: [CSV_PREFIX]_stats.csv, [CSV_PREFIX]_stats_history.csv and [CSV_PREFIX]_failures.csv",
480
504
  env_var="LOCUST_CSV",
481
505
  )
@@ -507,6 +531,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
507
531
  )
508
532
  stats_group.add_argument(
509
533
  "--html",
534
+ metavar="<filename>",
510
535
  dest="html_file",
511
536
  help="Store HTML report to file path specified",
512
537
  env_var="LOCUST_HTML",
@@ -532,11 +557,13 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
532
557
  "-L",
533
558
  default="INFO",
534
559
  help="Choose between DEBUG/INFO/WARNING/ERROR/CRITICAL. Default is INFO.",
560
+ metavar="<level>",
535
561
  env_var="LOCUST_LOGLEVEL",
536
562
  )
537
563
  log_group.add_argument(
538
564
  "--logfile",
539
565
  help="Path to log file. If not set, log will go to stderr",
566
+ metavar="<filename>",
540
567
  env_var="LOCUST_LOGFILE",
541
568
  )
542
569
 
@@ -562,8 +589,9 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
562
589
  other_group.add_argument(
563
590
  "--exit-code-on-error",
564
591
  type=int,
592
+ metavar="<int>",
565
593
  default=1,
566
- help="Sets the process exit code to use when a test result contain any failure or error",
594
+ help="Sets the process exit code to use when a test result contain any failure or error. Defaults to 1.",
567
595
  env_var="LOCUST_EXIT_CODE_ON_ERROR",
568
596
  )
569
597
  other_group.add_argument(
@@ -571,6 +599,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
571
599
  "--stop-timeout",
572
600
  action="store",
573
601
  dest="stop_timeout",
602
+ metavar="<number>",
574
603
  default="0",
575
604
  help="Number of seconds to wait for a simulated user to complete any executing task before exiting. Default is to terminate immediately. This parameter only needs to be specified for the master process when running Locust distributed.",
576
605
  env_var="LOCUST_STOP_TIMEOUT",
@@ -594,8 +623,8 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
594
623
  user_classes_group.add_argument(
595
624
  "user_classes",
596
625
  nargs="*",
597
- metavar="UserClass",
598
- help="Optionally specify which User classes that should be used (available User classes can be listed with -l or --list). LOCUST_USER_CLASSES environment variable can also be used to specify User classes",
626
+ metavar="<UserClass1 UserClass2>",
627
+ help="At the end of the command line, you can list User classes to be used (available User classes can be listed with --list). LOCUST_USER_CLASSES environment variable can also be used to specify User classes. Default is to use all available User classes",
599
628
  default=os.environ.get("LOCUST_USER_CLASSES", "").split(),
600
629
  )
601
630
 
@@ -166,12 +166,21 @@ def main():
166
166
 
167
167
  if options.processes:
168
168
  if os.name == "nt":
169
- raise Exception("--processes is not supported in Windows (except in WSL)")
169
+ sys.stderr.write("--processes is not supported in Windows (except in WSL)\n")
170
+ sys.exit(1)
170
171
  if options.processes == -1:
171
172
  options.processes = os.cpu_count()
172
- assert options.processes, "couldnt detect number of cpus!?"
173
+ if not options.processes:
174
+ sys.stderr.write("--processes failed to detect number of cpus!?\n")
175
+ sys.exit(1)
173
176
  elif options.processes < -1:
174
- raise Exception(f"invalid processes count {options.processes}")
177
+ sys.stderr.write(f"Invalid --processes count {options.processes}\n")
178
+ sys.exit(1)
179
+ elif options.master:
180
+ sys.stderr.write(
181
+ "--master cannot be combined with --processes. Remove --master, as it is implicit as long as --worker is not set.\n"
182
+ )
183
+ sys.exit(1)
175
184
  for _ in range(options.processes):
176
185
  child_pid = gevent.fork()
177
186
  if child_pid:
@@ -72,9 +72,9 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
72
72
  timeout=5,
73
73
  text=True,
74
74
  ).strip()
75
- self.assertTrue(output.startswith("Usage: locust [OPTIONS] [UserClass ...]"))
75
+ self.assertTrue(output.startswith("Usage: locust [options] [UserClass"))
76
76
  self.assertIn("Common options:", output)
77
- self.assertIn("-f LOCUSTFILE, --locustfile LOCUSTFILE", output)
77
+ self.assertIn("-f <filename>, --locustfile <filename>", output)
78
78
  self.assertIn("Logging options:", output)
79
79
  self.assertIn("--skip-log-setup Disable Locust's logging setup.", output)
80
80
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.18.5.dev16
3
+ Version: 2.18.5.dev32
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
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