locust 2.18.3.dev6__tar.gz → 2.18.4.dev3__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 (294) hide show
  1. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/CHANGELOG.md +14 -0
  2. {locust-2.18.3.dev6/locust.egg-info → locust-2.18.4.dev3}/PKG-INFO +1 -1
  3. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/changelog.rst +5 -1
  4. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/what-is-locust.rst +3 -3
  5. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/_version.py +2 -2
  6. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/html.py +13 -6
  7. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/main.py +4 -4
  8. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/web.py +5 -14
  9. locust-2.18.3.dev6/locust/webui/dist/assets/index-61768d49.js → locust-2.18.4.dev3/locust/webui/dist/assets/index-ca104681.js +52 -52
  10. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/index.html +1 -1
  11. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/App.tsx +2 -1
  12. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/Report.tsx +3 -2
  13. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +2 -5
  14. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Reports/Reports.tsx +1 -1
  15. locust-2.18.4.dev3/locust/webui/src/constants/theme.ts +12 -0
  16. locust-2.18.4.dev3/locust/webui/src/hooks/useSwarmUi.ts +117 -0
  17. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/styles/theme.ts +0 -5
  18. {locust-2.18.3.dev6 → locust-2.18.4.dev3/locust.egg-info}/PKG-INFO +1 -1
  19. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/SOURCES.txt +2 -1
  20. locust-2.18.3.dev6/locust/webui/src/hooks/useSwarmUi.ts +0 -100
  21. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.coveragerc +0 -0
  22. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.dockerignore +0 -0
  23. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.git-blame-ignore-revs +0 -0
  24. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.gitattributes +0 -0
  25. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/CONTRIBUTING.md +0 -0
  26. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  27. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  28. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  29. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/workflows/stale.yml +0 -0
  30. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/workflows/tests.yml +0 -0
  31. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.gitignore +0 -0
  32. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.readthedocs.yaml +0 -0
  33. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/launch.json +0 -0
  34. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/launch_locust.json +0 -0
  35. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/settings.json +0 -0
  36. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Dockerfile +0 -0
  37. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/LICENSE +0 -0
  38. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/MANIFEST.in +0 -0
  39. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Makefile +0 -0
  40. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/README +0 -0
  41. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/README.md +0 -0
  42. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/SECURITY.md +0 -0
  43. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Vagrantfile +0 -0
  44. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/benchmarks/dispatch.py +0 -0
  45. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/_static/theme-overrides.css +0 -0
  46. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/api.rst +0 -0
  47. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/conf.py +0 -0
  48. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/configuration.rst +0 -0
  49. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/custom-load-shape.rst +0 -0
  50. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/developing-locust.rst +0 -0
  51. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/extending-locust.rst +0 -0
  52. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/further-reading.rst +0 -0
  53. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/history.rst +0 -0
  54. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/modern-webui-splash-screenshot.png +0 -0
  55. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/number_of_users.png +0 -0
  56. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/response_times.png +0 -0
  57. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/total_requests_per_second.png +0 -0
  58. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/userclass_picker_example.png +0 -0
  59. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/webui-running-statistics.png +0 -0
  60. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/webui-splash-screenshot.png +0 -0
  61. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/increase-performance.rst +0 -0
  62. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/index.rst +0 -0
  63. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/installation.rst +0 -0
  64. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/logging.rst +0 -0
  65. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/quickstart.rst +0 -0
  66. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/requirements.txt +0 -0
  67. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/retrieving-stats.rst +0 -0
  68. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-cloud-integration.rst +0 -0
  69. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-distributed.rst +0 -0
  70. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-in-debugger.rst +0 -0
  71. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-in-docker.rst +0 -0
  72. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-without-web-ui.rst +0 -0
  73. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/tasksets.rst +0 -0
  74. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/testing-other-systems.rst +0 -0
  75. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/use-as-lib.rst +0 -0
  76. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/writing-a-locustfile.rst +0 -0
  77. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/add_command_line_argument.py +0 -0
  78. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/basic.py +0 -0
  79. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/browse_docs_sequence_test.py +0 -0
  80. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/browse_docs_test.py +0 -0
  81. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_messages.py +0 -0
  82. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/double_wave.py +0 -0
  83. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/stages.py +0 -0
  84. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/staging_user_classes.py +0 -0
  85. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/step_load.py +0 -0
  86. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/wait_user_count.py +0 -0
  87. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_wait_function.py +0 -0
  88. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_xmlrpc_client/server.py +0 -0
  89. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
  90. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/debugging.py +0 -0
  91. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/debugging_advanced.py +0 -0
  92. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/docker-compose/docker-compose.yml +0 -0
  93. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/dynamic_user_credentials.py +0 -0
  94. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/events.py +0 -0
  95. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_modern_web_ui.py +0 -0
  96. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/extend.py +0 -0
  97. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
  98. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/static/extend.js +0 -0
  99. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/templates/extend.html +0 -0
  100. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/fast_http_locust.py +0 -0
  101. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/grpc_user.py +0 -0
  102. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello.proto +0 -0
  103. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_pb2.py +0 -0
  104. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_pb2_grpc.py +0 -0
  105. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_server.py +0 -0
  106. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/locustfile.py +0 -0
  107. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/locustfile.py +0 -0
  108. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/manual_stats_reporting.py +0 -0
  109. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/multiple_hosts.py +0 -0
  110. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/nested_inline_tasksets.py +0 -0
  111. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/rest.py +0 -0
  112. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
  113. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/semaphore_wait.py +0 -0
  114. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/stop_on_threshold.py +0 -0
  115. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/README.md +0 -0
  116. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/data_subnet.tf +0 -0
  117. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/main.tf +0 -0
  118. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/output.tf +0 -0
  119. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/plan/basic.py +0 -0
  120. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/provisioner.tf +0 -0
  121. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/variables.tf +0 -0
  122. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/test_data_management.py +0 -0
  123. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/use_as_lib.py +0 -0
  124. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/vagrant/README.md +0 -0
  125. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/vagrant/supervisord.conf +0 -0
  126. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/worker_index.py +0 -0
  127. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/generate_changelog.py +0 -0
  128. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/__init__.py +0 -0
  129. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/__main__.py +0 -0
  130. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/argument_parser.py +0 -0
  131. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/clients.py +0 -0
  132. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/contrib/__init__.py +0 -0
  133. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/contrib/fasthttp.py +0 -0
  134. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/debug.py +0 -0
  135. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/dispatch.py +0 -0
  136. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/env.py +0 -0
  137. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/event.py +0 -0
  138. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/exception.py +0 -0
  139. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/input_events.py +0 -0
  140. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/log.py +0 -0
  141. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/py.typed +0 -0
  142. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/__init__.py +0 -0
  143. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/protocol.py +0 -0
  144. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/zmqrpc.py +0 -0
  145. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/runners.py +0 -0
  146. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/shape.py +0 -0
  147. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/chart.js +0 -0
  148. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/application.css +0 -0
  149. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/application.css.map +0 -0
  150. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/tables.css +0 -0
  151. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/tables.css.map +0 -0
  152. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/echarts.common.min.js +0 -0
  153. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/favicon.ico +0 -0
  154. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/logo.png +0 -0
  155. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-charts.png +0 -0
  156. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-start-test.png +0 -0
  157. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-stats.png +0 -0
  158. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-workers.png +0 -0
  159. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery-1.11.3.min.js +0 -0
  160. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery.jqote2.min.js +0 -0
  161. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery.tools.min.js +0 -0
  162. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/locust.js +0 -0
  163. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/_base.sass +0 -0
  164. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/_mixins.sass +0 -0
  165. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/application.sass +0 -0
  166. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/tables.sass +0 -0
  167. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/tasks.js +0 -0
  168. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/vintage.js +0 -0
  169. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/stats.py +0 -0
  170. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/index.html +0 -0
  171. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/report.html +0 -0
  172. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/stats_data.html +0 -0
  173. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/__init__.py +0 -0
  174. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/fake_module1_for_env_test.py +0 -0
  175. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/fake_module2_for_env_test.py +0 -0
  176. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/mock_locustfile.py +0 -0
  177. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/mock_logging.py +0 -0
  178. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_debugging.py +0 -0
  179. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_dispatch.py +0 -0
  180. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_env.py +0 -0
  181. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_fasthttp.py +0 -0
  182. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_http.py +0 -0
  183. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_load_locustfile.py +0 -0
  184. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_locust_class.py +0 -0
  185. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_log.py +0 -0
  186. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_main.py +0 -0
  187. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_old_wait_api.py +0 -0
  188. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_parser.py +0 -0
  189. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_runners.py +0 -0
  190. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_sequential_taskset.py +0 -0
  191. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_stats.py +0 -0
  192. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_tags.py +0 -0
  193. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_taskratio.py +0 -0
  194. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_users.py +0 -0
  195. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_util.py +0 -0
  196. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_wait_time.py +0 -0
  197. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_web.py +0 -0
  198. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_zmqrpc.py +0 -0
  199. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/testcases.py +0 -0
  200. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/util.py +0 -0
  201. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/__init__.py +0 -0
  202. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/inspectuser.py +0 -0
  203. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/sequential_taskset.py +0 -0
  204. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/task.py +0 -0
  205. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/users.py +0 -0
  206. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/wait_time.py +0 -0
  207. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/__init__.py +0 -0
  208. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/cache.py +0 -0
  209. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/deprecation.py +0 -0
  210. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/exception_handler.py +0 -0
  211. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/load_locustfile.py +0 -0
  212. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/rounding.py +0 -0
  213. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/timespan.py +0 -0
  214. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.eslintrc +0 -0
  215. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.gitignore +0 -0
  216. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.prettierrc +0 -0
  217. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dev.html +0 -0
  218. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/assets/favicon.ico +0 -0
  219. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/assets/logo.png +0 -0
  220. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/report.html +0 -0
  221. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/index.html +0 -0
  222. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/package.json +0 -0
  223. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/assets/favicon.ico +0 -0
  224. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/assets/logo.png +0 -0
  225. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/report.html +0 -0
  226. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
  227. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
  228. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
  229. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Form/Form.tsx +0 -0
  230. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Form/Select.tsx +0 -0
  231. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
  232. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
  233. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Layout.tsx +0 -0
  234. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
  235. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
  236. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
  237. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
  238. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Modal/Modal.tsx +0 -0
  239. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
  240. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
  241. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
  242. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
  243. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
  244. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
  245. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
  246. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
  247. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmCustomParmeters.tsx +0 -0
  248. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
  249. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
  250. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarnRatios/SwarmRatios.tsx +0 -0
  251. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Table/Table.tsx +0 -0
  252. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
  253. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
  254. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
  255. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/constants/swarm.tsx +0 -0
  256. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/global.d.ts +0 -0
  257. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useAsync.ts +0 -0
  258. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useInterval.ts +0 -0
  259. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useSortByField.ts +0 -0
  260. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/index.tsx +0 -0
  261. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/api/swarm.ts +0 -0
  262. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/hooks.ts +0 -0
  263. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/root.slice.ts +0 -0
  264. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
  265. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
  266. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
  267. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/url.slice.ts +0 -0
  268. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/store.ts +0 -0
  269. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/utils.ts +0 -0
  270. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/swarm.types.ts +0 -0
  271. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/tab.types.ts +0 -0
  272. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/table.types.ts +0 -0
  273. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/ui.types.ts +0 -0
  274. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/number.ts +0 -0
  275. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/object.ts +0 -0
  276. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/string.ts +0 -0
  277. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/url.ts +0 -0
  278. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/tsconfig.json +0 -0
  279. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/vite.config.ts +0 -0
  280. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/yarn.lock +0 -0
  281. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/dependency_links.txt +0 -0
  282. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/entry_points.txt +0 -0
  283. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/not-zip-safe +0 -0
  284. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/requires.txt +0 -0
  285. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/top_level.txt +0 -0
  286. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/package.json +0 -0
  287. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/pyproject.toml +0 -0
  288. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/locustfile.py +0 -0
  289. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-disributed-headless.sh +0 -0
  290. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-disributed-web.sh +0 -0
  291. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-local-headless.sh +0 -0
  292. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-local-web.sh +0 -0
  293. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/setup.cfg +0 -0
  294. {locust-2.18.3.dev6 → locust-2.18.4.dev3}/tox.ini +0 -0
@@ -1,6 +1,20 @@
1
1
  # Detailed changelog
2
2
  The most important changes can also be found in [the documentation](https://docs.locust.io/en/latest/changelog.html).
3
3
 
4
+ ## [2.18.3](https://github.com/locustio/locust/tree/2.18.3) (2023-11-12)
5
+
6
+ [Full Changelog](https://github.com/locustio/locust/compare/2.18.2...2.18.3)
7
+
8
+ **Closed issues:**
9
+
10
+ - Add Modern UI HTML Report to --html Option [\#2458](https://github.com/locustio/locust/issues/2458)
11
+
12
+ **Merged pull requests:**
13
+
14
+ - List Andrew as maintainer of the Modern web UI [\#2460](https://github.com/locustio/locust/pull/2460) ([cyberw](https://github.com/cyberw))
15
+ - Add Modern UI HTML Report to --html Option [\#2459](https://github.com/locustio/locust/pull/2459) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
16
+ - Modern UI: Add sorting to columns on statistics page and downloaded report [\#2453](https://github.com/locustio/locust/pull/2453) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
17
+
4
18
  ## [2.18.2](https://github.com/locustio/locust/tree/2.18.2) (2023-11-10)
5
19
 
6
20
  [Full Changelog](https://github.com/locustio/locust/compare/2.18.1...2.18.2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.18.3.dev6
3
+ Version: 2.18.4.dev3
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -4,9 +4,13 @@ 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.18.3
8
+ ======
9
+ * Modern UI: Add sorting to columns on statistics page and downloaded report https://github.com/locustio/locust/pull/2453
10
+
7
11
  2.18.2
8
12
  ======
9
- * FastHttpUser: encoding return str when response is empty by https://github.com/locustio/locust/pull/2451
13
+ * FastHttpUser: encoding return str when response is empty https://github.com/locustio/locust/pull/2451
10
14
 
11
15
  2.18.1
12
16
  ======
@@ -61,9 +61,9 @@ Previous versions of Locust used terminology borrowed from nature (swarming, hat
61
61
  Authors
62
62
  =======
63
63
 
64
- - `Jonatan Heyman <http://heyman.info>`_ (`@jonatanheyman <https://twitter.com/jonatanheyman>`_ on Twitter)
65
- - Lars Holmberg (`@cyberw <https://github.com/cyberw>`_ on Github)
66
- - Andrew Baldwin (`@andrewbaldwin44 <https://github.com/andrewbaldwin44>`_ on Github)
64
+ - Jonatan Heyman (`@heyman <https://github.com/heyman>`_)
65
+ - Lars Holmberg (`@cyberw <https://github.com/cyberw>`_)
66
+ - Andrew Baldwin (`@andrewbaldwin44 <https://github.com/andrewbaldwin44>`_)
67
67
  - Carl Byström, Joakim Hamrén & Hugo Heyman
68
68
 
69
69
  Many thanks to our other great `contributors <https://github.com/locustio/locust/graphs/contributors>`_!
@@ -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.3.dev6'
16
- __version_tuple__ = version_tuple = (2, 18, 3, 'dev6')
15
+ __version__ = version = '2.18.4.dev3'
16
+ __version_tuple__ = version_tuple = (2, 18, 4, 'dev3')
@@ -10,26 +10,31 @@ from .user.inspectuser import get_ratio
10
10
  from html import escape
11
11
  from json import dumps
12
12
  from .runners import MasterRunner, STATE_STOPPED, STATE_STOPPING
13
- from flask import render_template as flask_render_template
14
13
 
15
14
 
16
15
  PERCENTILES_FOR_HTML_REPORT = [0.50, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99, 1.0]
17
16
 
18
17
 
19
- def render_template(file, **kwargs):
20
- templates_path = os.path.join(pathlib.Path(__file__).parent.absolute(), "templates")
21
- env = Environment(loader=FileSystemLoader(templates_path), extensions=["jinja2.ext.do"])
18
+ def render_template(file, template_path, **kwargs):
19
+ env = Environment(loader=FileSystemLoader(template_path), extensions=["jinja2.ext.do"])
22
20
  template = env.get_template(file)
23
21
  return template.render(**kwargs)
24
22
 
25
23
 
26
24
  def get_html_report(
27
25
  environment,
28
- static_path=os.path.join(os.path.dirname(__file__), "static"),
29
26
  show_download_link=True,
30
27
  use_modern_ui=False,
31
28
  theme="",
32
29
  ):
30
+ root_path = os.path.dirname(os.path.abspath(__file__))
31
+ if use_modern_ui:
32
+ static_path = os.path.join(root_path, "webui", "dist", "assets")
33
+ template_path = os.path.join(root_path, "webui", "dist")
34
+ else:
35
+ static_path = os.path.join(root_path, "static")
36
+ template_path = os.path.join(root_path, "templates")
37
+
33
38
  stats = environment.runner.stats
34
39
 
35
40
  start_ts = stats.start_time
@@ -94,8 +99,9 @@ def get_html_report(
94
99
  }
95
100
 
96
101
  if use_modern_ui:
97
- res = flask_render_template(
102
+ res = render_template(
98
103
  "report.html",
104
+ template_path,
99
105
  template_args={
100
106
  "is_report": True,
101
107
  "requests_statistics": [stat.to_dict(escape_string_values=True) for stat in requests_statistics],
@@ -128,6 +134,7 @@ def get_html_report(
128
134
  else:
129
135
  res = render_template(
130
136
  "report.html",
137
+ template_path,
131
138
  int=int,
132
139
  round=round,
133
140
  escape=escape,
@@ -495,8 +495,8 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
495
495
  logger.info("Got SIGTERM signal")
496
496
  shutdown()
497
497
 
498
- def save_html_report():
499
- html_report = get_html_report(environment, show_download_link=False)
498
+ def save_html_report(use_modern_ui=False):
499
+ html_report = get_html_report(environment, show_download_link=False, use_modern_ui=use_modern_ui)
500
500
  logger.info("writing html report to file: %s", options.html_file)
501
501
  with open(options.html_file, "w", encoding="utf-8") as file:
502
502
  file.write(html_report)
@@ -512,10 +512,10 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
512
512
 
513
513
  main_greenlet.join()
514
514
  if options.html_file:
515
- save_html_report()
515
+ save_html_report(options.modern_ui)
516
516
  except KeyboardInterrupt:
517
517
  if options.html_file:
518
- save_html_report()
518
+ save_html_report(options.modern_ui)
519
519
  except Exception:
520
520
  raise
521
521
  shutdown()
@@ -110,9 +110,9 @@ class WebUI:
110
110
  self.app = app
111
111
  app.jinja_env.add_extension("jinja2.ext.do")
112
112
  app.debug = True
113
- self.root_path = os.path.dirname(os.path.abspath(__file__))
114
- app.root_path = self.root_path
115
- self.webui_build_path = f"{self.root_path}/webui/dist"
113
+ root_path = os.path.dirname(os.path.abspath(__file__))
114
+ app.root_path = root_path
115
+ self.webui_build_path = os.path.join(root_path, "webui", "dist")
116
116
  self.app.config["BASIC_AUTH_ENABLED"] = False
117
117
  self.auth: Optional[BasicAuth] = None
118
118
  self.greenlet: Optional[gevent.Greenlet] = None
@@ -144,9 +144,7 @@ class WebUI:
144
144
 
145
145
  @app.route("/assets/<path:path>")
146
146
  def send_assets(path):
147
- webui_build_path = self.webui_build_path
148
-
149
- return send_from_directory(f"{webui_build_path}/assets", path)
147
+ return send_from_directory(os.path.join(self.webui_build_path, "assets"), path)
150
148
 
151
149
  @app.route("/")
152
150
  @self.auth_required_if_enabled
@@ -287,16 +285,9 @@ class WebUI:
287
285
  @app.route("/stats/report")
288
286
  @self.auth_required_if_enabled
289
287
  def stats_report() -> Response:
290
- if self.modern_ui:
291
- self.set_static_modern_ui()
292
- static_path = f"{self.webui_build_path}/assets"
293
- else:
294
- static_path = f"{self.root_path}/static"
295
-
296
288
  theme = request.args.get("theme", "")
297
289
  res = get_html_report(
298
290
  self.environment,
299
- static_path=static_path,
300
291
  show_download_link=not request.args.get("download"),
301
292
  use_modern_ui=self.modern_ui,
302
293
  theme=theme,
@@ -542,7 +533,7 @@ class WebUI:
542
533
 
543
534
  def set_static_modern_ui(self):
544
535
  self.app.template_folder = self.webui_build_path
545
- self.app.static_folder = f"{self.webui_build_path}/assets/"
536
+ self.app.static_folder = os.path.join(self.webui_build_path, "assets")
546
537
  self.app.static_url_path = "/assets/"
547
538
 
548
539
  def update_template_args(self):