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.
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/CHANGELOG.md +14 -0
- {locust-2.18.3.dev6/locust.egg-info → locust-2.18.4.dev3}/PKG-INFO +1 -1
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/changelog.rst +5 -1
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/what-is-locust.rst +3 -3
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/_version.py +2 -2
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/html.py +13 -6
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/main.py +4 -4
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/web.py +5 -14
- 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
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/index.html +1 -1
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/App.tsx +2 -1
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/Report.tsx +3 -2
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +2 -5
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Reports/Reports.tsx +1 -1
- locust-2.18.4.dev3/locust/webui/src/constants/theme.ts +12 -0
- locust-2.18.4.dev3/locust/webui/src/hooks/useSwarmUi.ts +117 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/styles/theme.ts +0 -5
- {locust-2.18.3.dev6 → locust-2.18.4.dev3/locust.egg-info}/PKG-INFO +1 -1
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/SOURCES.txt +2 -1
- locust-2.18.3.dev6/locust/webui/src/hooks/useSwarmUi.ts +0 -100
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.coveragerc +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.dockerignore +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.git-blame-ignore-revs +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.gitattributes +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/CONTRIBUTING.md +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/workflows/stale.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.github/workflows/tests.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.gitignore +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.readthedocs.yaml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/launch.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/launch_locust.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/.vscode/settings.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Dockerfile +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/LICENSE +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/MANIFEST.in +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Makefile +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/README +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/README.md +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/SECURITY.md +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/Vagrantfile +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/benchmarks/dispatch.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/_static/theme-overrides.css +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/api.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/conf.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/configuration.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/custom-load-shape.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/developing-locust.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/extending-locust.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/further-reading.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/history.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/modern-webui-splash-screenshot.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/number_of_users.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/response_times.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/increase-performance.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/index.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/installation.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/logging.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/quickstart.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/requirements.txt +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/retrieving-stats.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-cloud-integration.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-distributed.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-in-debugger.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-in-docker.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/running-without-web-ui.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/tasksets.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/testing-other-systems.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/use-as-lib.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/add_command_line_argument.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/basic.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/browse_docs_test.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_messages.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/stages.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/step_load.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_wait_function.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/debugging.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/debugging_advanced.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/events.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_modern_web_ui.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/extend.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/static/extend.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/extend_web_ui/templates/extend.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/fast_http_locust.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/grpc_user.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello.proto +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/hello_server.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/grpc/locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/manual_stats_reporting.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/multiple_hosts.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/rest.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/semaphore_wait.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/stop_on_threshold.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/README.md +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/main.tf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/output.tf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/test_data_management.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/use_as_lib.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/vagrant/README.md +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/examples/worker_index.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/generate_changelog.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/__main__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/argument_parser.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/clients.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/contrib/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/contrib/fasthttp.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/debug.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/dispatch.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/env.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/event.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/exception.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/input_events.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/log.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/py.typed +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/protocol.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/runners.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/shape.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/chart.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/application.css +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/application.css.map +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/tables.css +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/css/tables.css.map +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/echarts.common.min.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/favicon.ico +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/logo.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-charts.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-start-test.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-stats.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/img/ui-screenshot-workers.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery-1.11.3.min.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery.jqote2.min.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/jquery.tools.min.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/locust.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/_base.sass +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/_mixins.sass +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/application.sass +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/sass/tables.sass +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/tasks.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/static/vintage.js +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/stats.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/index.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/report.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/templates/stats_data.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/mock_locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/mock_logging.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_debugging.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_dispatch.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_env.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_fasthttp.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_http.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_locust_class.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_log.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_main.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_parser.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_runners.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_stats.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_tags.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_taskratio.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_users.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_util.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_wait_time.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_web.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/testcases.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/test/util.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/inspectuser.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/sequential_taskset.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/task.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/users.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/user/wait_time.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/__init__.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/cache.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/deprecation.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/exception_handler.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/load_locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/rounding.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/util/timespan.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.eslintrc +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.gitignore +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/.prettierrc +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dev.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/dist/report.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/index.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/package.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/public/report.html +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmCustomParmeters.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/SwarnRatios/SwarmRatios.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/constants/swarm.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/global.d.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useAsync.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/index.tsx +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/tsconfig.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/vite.config.ts +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust/webui/yarn.lock +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/requires.txt +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/locust.egg-info/top_level.txt +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/package.json +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/pyproject.toml +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/locustfile.py +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-disributed-headless.sh +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-disributed-web.sh +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-local-headless.sh +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/scripts/run-local-web.sh +0 -0
- {locust-2.18.3.dev6 → locust-2.18.4.dev3}/setup.cfg +0 -0
- {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)
|
@@ -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
|
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
|
-
-
|
65
|
-
- Lars Holmberg (`@cyberw <https://github.com/cyberw>`_
|
66
|
-
- Andrew Baldwin (`@andrewbaldwin44 <https://github.com/andrewbaldwin44>`_
|
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.
|
16
|
-
__version_tuple__ = version_tuple = (2, 18,
|
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
|
-
|
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 =
|
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
|
-
|
114
|
-
app.root_path =
|
115
|
-
self.webui_build_path =
|
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
|
-
|
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 =
|
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):
|