locust 2.23.2.dev26__tar.gz → 2.23.2.dev39__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.gitignore +1 -0
- {locust-2.23.2.dev26/locust.egg-info → locust-2.23.2.dev39}/PKG-INFO +3 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/configuration.rst +35 -13
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/index.rst +0 -8
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/logging.rst +0 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-in-docker.rst +0 -3
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/use_as_lib.py +2 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/_version.py +2 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/argument_parser.py +38 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_parser.py +42 -9
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/auth.html +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dev.html +1 -1
- locust-2.23.2.dev26/locust/webui/dist/assets/index-207c29ed.js → locust-2.23.2.dev39/locust/webui/dist/assets/index-0d6d578a.js +2 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/auth.html +2 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/index.html +3 -3
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/report.html +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/index.html +2 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/report.html +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Footer/About.tsx +12 -5
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/Auth.tsx +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/Dashboard.test.tsx +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/mocks/statsRequest.mock.ts +8 -8
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/vite.config.ts +1 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39/locust.egg-info}/PKG-INFO +3 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/SOURCES.txt +1 -1
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/requires.txt +3 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/pyproject.toml +3 -2
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.coveragerc +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.dockerignore +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.git-blame-ignore-revs +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.gitattributes +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/CONTRIBUTING.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/workflows/stale.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.github/workflows/tests.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.readthedocs.yaml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/extensions.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/launch.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/launch_locust.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/.vscode/settings.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/CHANGELOG.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Dockerfile +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/LICENSE +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/MANIFEST.in +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Makefile +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/README +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/README.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/SECURITY.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/Vagrantfile +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/benchmarks/dispatch.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/_static/theme-overrides.css +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/api.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/changelog.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/conf.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/custom-load-shape.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/developing-locust.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/extending-locust.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/further-reading.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/history.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/locust_workers.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/number_of_users.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/response_times.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/increase-performance.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/installation.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/quickstart.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/requirements.txt +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/retrieving-stats.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-cloud-integration.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-distributed.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-in-debugger.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/running-without-web-ui.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/tasksets.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/testing-other-systems.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/use-as-lib.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/what-is-locust.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/add_command_line_argument.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/basic.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/browse_docs_test.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_messages.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/stages.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/step_load.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_wait_function.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/debugging.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/debugging_advanced.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/events.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_modern_web_ui.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/extend.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/static/extend.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/extend_web_ui/templates/extend.html +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/fast_http_locust.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/grpc_user.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello.proto +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/hello_server.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/grpc/locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/manual_stats_reporting.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/multiple_hosts.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/rest.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/semaphore_wait.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/stop_on_threshold.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/README.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/main.tf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/output.tf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/test_data_management.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/vagrant/README.md +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/web_ui_auth.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/examples/worker_index.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/generate_changelog.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/__main__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/clients.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/contrib/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/contrib/fasthttp.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/debug.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/dispatch.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/env.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/event.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/exception.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/html.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/input_events.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/log.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/main.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/py.typed +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/protocol.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/runners.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/shape.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/chart.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/application.css +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/application.css.map +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/tables.css +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/css/tables.css.map +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/echarts.common.min.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/favicon.ico +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/logo.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-charts.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-start-test.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-stats.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/img/ui-screenshot-workers.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery-1.11.3.min.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery.jqote2.min.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/jquery.tools.min.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/locust.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/_base.sass +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/_mixins.sass +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/application.sass +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/sass/tables.sass +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/tasks.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/static/vintage.js +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/stats.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/index.html +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/report.html +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/templates/stats_data.html +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/mock_locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/mock_logging.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_debugging.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_dispatch.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_env.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_fasthttp.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_http.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_interruptable_task.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_locust_class.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_log.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_main.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_runners.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_stats.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_tags.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_taskratio.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_users.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_util.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_wait_time.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_web.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/testcases.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/test/util.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/inspectuser.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/sequential_taskset.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/task.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/users.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/user/wait_time.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/__init__.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/cache.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/deprecation.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/exception_handler.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/load_locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/rounding.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/util/timespan.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/web.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.eslintrc +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.gitignore +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/.prettierrc +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/package.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/App.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/App.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FallbackRender/FallbackRender.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/FallbackRender/FallbackRender.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/SwarmUserClassPicker.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmForm/tests/SwarmUserClassPicker.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Table/Table.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/auth.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/swarm.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/global.d.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSelecteViewColumns.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useNotifications.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSelectViewColumns.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/index.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/Dashboard.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/HtmlReport.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/Auth.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/pages/tests/HtmlReport.test.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/constants.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/setup.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/test/testUtils.tsx +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/auth.types.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/number.test.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/object.test.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/string.test.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/tests/url.test.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/tsconfig.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/vitest.config.ts +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust/webui/yarn.lock +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/locust.egg-info/top_level.txt +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/package.json +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/locustfile.py +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-disributed-headless.sh +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-disributed-web.sh +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-local-headless.sh +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/scripts/run-local-web.sh +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/setup.cfg +0 -0
- {locust-2.23.2.dev26 → locust-2.23.2.dev39}/tox.ini +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.23.2.
|
3
|
+
Version: 2.23.2.dev39
|
4
4
|
Summary: Developer friendly load testing framework
|
5
5
|
License: MIT
|
6
|
-
Project-URL: Homepage, https://
|
6
|
+
Project-URL: Homepage, https://github.com/locustio/locust
|
7
7
|
Project-URL: Documentation, https://docs.locust.io/
|
8
8
|
Project-URL: Code, https://github.com/locustio/locust
|
9
9
|
Project-URL: Help/Questions, https://stackoverflow.com/questions/tagged/locust
|
@@ -35,6 +35,7 @@ Requires-Dist: msgpack>=1.0.0
|
|
35
35
|
Requires-Dist: pyzmq>=25.0.0
|
36
36
|
Requires-Dist: geventhttpclient>=2.0.11
|
37
37
|
Requires-Dist: ConfigArgParse>=1.5.5
|
38
|
+
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
38
39
|
Requires-Dist: psutil>=5.9.1
|
39
40
|
Requires-Dist: Flask-Login>=0.6.3
|
40
41
|
Requires-Dist: Flask-Cors>=3.0.10
|
@@ -24,7 +24,8 @@ Locust is configured mainly through command line arguments.
|
|
24
24
|
Environment Variables
|
25
25
|
=====================
|
26
26
|
|
27
|
-
Options can also be set through
|
27
|
+
Options can also be set through environment variables. They are typically the same as the command line argument
|
28
|
+
but capitalized and prefixed with ``LOCUST_``:
|
28
29
|
|
29
30
|
On Linux/macOS:
|
30
31
|
|
@@ -44,17 +45,23 @@ On Windows:
|
|
44
45
|
Configuration File
|
45
46
|
==================
|
46
47
|
|
47
|
-
Options can also be set in a configuration file in the
|
48
|
-
format.
|
48
|
+
Options can also be set in a configuration file in the
|
49
|
+
`config or TOML file format <https://github.com/bw2/ConfigArgParse#config-file-syntax>`_.
|
49
50
|
|
50
|
-
Locust will look for ``~/.locust.conf`` and ``./
|
51
|
-
additional file using the ``--config`` flag.
|
51
|
+
Locust will look for ``~/.locust.conf``, ``./locust.conf`` and ``./pyproject.toml`` by default.
|
52
|
+
You can specify an additional file using the ``--config`` flag.
|
52
53
|
|
53
|
-
|
54
|
+
.. code-block:: console
|
54
55
|
|
55
|
-
|
56
|
+
$ locust --config custom_config.conf
|
57
|
+
|
58
|
+
Here's a quick example of the configuration files supported by Locust:
|
59
|
+
|
60
|
+
locust.conf
|
61
|
+
--------------
|
62
|
+
|
63
|
+
.. code-block:: ini
|
56
64
|
|
57
|
-
# master.conf in current directory
|
58
65
|
locustfile = locust_files/my_locust_file.py
|
59
66
|
headless = true
|
60
67
|
master = true
|
@@ -63,19 +70,34 @@ Example:
|
|
63
70
|
users = 100
|
64
71
|
spawn-rate = 10
|
65
72
|
run-time = 10m
|
66
|
-
|
73
|
+
tags = [Critical, Normal]
|
67
74
|
|
68
|
-
|
75
|
+
pyproject.toml
|
76
|
+
--------------
|
69
77
|
|
70
|
-
|
78
|
+
When using a TOML file, configuration options should be defined within the ``[tool.locust]`` section.
|
79
|
+
|
80
|
+
.. code-block:: toml
|
81
|
+
|
82
|
+
[tool.locust]
|
83
|
+
locustfile = "locust_files/my_locust_file.py"
|
84
|
+
headless = true
|
85
|
+
master = true
|
86
|
+
expect-workers = 5
|
87
|
+
host = "https://target-system"
|
88
|
+
users = 100
|
89
|
+
spawn-rate = 10
|
90
|
+
run-time = "10m"
|
91
|
+
tags = ["Critical", "Normal"]
|
71
92
|
|
72
93
|
.. note::
|
73
94
|
|
74
|
-
Configuration values are read (overridden) in the following order:
|
95
|
+
Configuration values are read (and overridden) in the following order:
|
75
96
|
|
76
97
|
.. code-block:: console
|
77
98
|
|
78
|
-
|
99
|
+
~/.locust.conf -> ./locust.conf -> ./pyproject.toml -> (file specified using --conf) -> env vars -> cmd args
|
100
|
+
|
79
101
|
|
80
102
|
All available configuration options
|
81
103
|
===================================
|
@@ -2,14 +2,6 @@
|
|
2
2
|
Locust Documentation
|
3
3
|
=====================
|
4
4
|
|
5
|
-
.. sidebar:: About locust
|
6
|
-
|
7
|
-
Locust is a scalable load testing framework written in Python
|
8
|
-
|
9
|
-
* **Website**: `https://locust.io/ <https://locust.io/>`_
|
10
|
-
* **Source code**: `https://github.com/locustio/locust <https://github.com/locustio/locust>`_
|
11
|
-
* **Twitter**: `@locustio <https://twitter.com/locustio>`_
|
12
|
-
|
13
5
|
|
14
6
|
Getting started
|
15
7
|
---------------
|
@@ -18,7 +18,6 @@ so using the root logger in your own test scripts will put the message into the
|
|
18
18
|
import logging
|
19
19
|
logging.info("this log message will go wherever the other locust log messages go")
|
20
20
|
|
21
|
-
|
22
21
|
It's also possible to control the whole logging configuration in your own test scripts by using the
|
23
22
|
``--skip-log-setup`` option. You will then have to
|
24
23
|
`configure the logging <https://docs.python.org/3/library/logging.config.html>`_ yourself.
|
@@ -14,7 +14,6 @@ On Windows, this command will sometimes cause errors. Windows users should try u
|
|
14
14
|
|
15
15
|
docker run -p 8089:8089 --mount type=bind,source=$pwd,target=/mnt/locust locustio/locust -f /mnt/locust/locustfile.py
|
16
16
|
|
17
|
-
|
18
17
|
Docker Compose
|
19
18
|
==============
|
20
19
|
|
@@ -27,7 +26,6 @@ The above compose configuration could be used to start a master node and 4 worke
|
|
27
26
|
|
28
27
|
docker-compose up --scale worker=4
|
29
28
|
|
30
|
-
|
31
29
|
Use docker image as a base image
|
32
30
|
================================
|
33
31
|
|
@@ -37,7 +35,6 @@ official Locust docker image as a base image::
|
|
37
35
|
FROM locustio/locust
|
38
36
|
RUN pip3 install some-python-package
|
39
37
|
|
40
|
-
|
41
38
|
Running a distributed load test on Kubernetes
|
42
39
|
==============================================
|
43
40
|
|
@@ -36,8 +36,8 @@ gevent.spawn(stats_history, env.runner)
|
|
36
36
|
# start the test
|
37
37
|
runner.start(1, spawn_rate=10)
|
38
38
|
|
39
|
-
# in
|
40
|
-
gevent.spawn_later(
|
39
|
+
# in 30 seconds stop the runner
|
40
|
+
gevent.spawn_later(30, runner.quit)
|
41
41
|
|
42
42
|
# wait for the greenlets
|
43
43
|
runner.greenlet.join()
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '2.23.2.
|
16
|
-
__version_tuple__ = version_tuple = (2, 23, 2, '
|
15
|
+
__version__ = version = '2.23.2.dev39'
|
16
|
+
__version_tuple__ = version_tuple = (2, 23, 2, 'dev39')
|
@@ -12,10 +12,16 @@ import socket
|
|
12
12
|
import sys
|
13
13
|
import tempfile
|
14
14
|
import textwrap
|
15
|
+
from collections import OrderedDict
|
15
16
|
from typing import Any, NamedTuple
|
16
17
|
from urllib.parse import urlparse
|
17
18
|
from uuid import uuid4
|
18
19
|
|
20
|
+
if sys.version_info >= (3, 11):
|
21
|
+
import tomllib
|
22
|
+
else:
|
23
|
+
import tomli as tomllib
|
24
|
+
|
19
25
|
import configargparse
|
20
26
|
import gevent
|
21
27
|
import requests
|
@@ -23,7 +29,7 @@ import requests
|
|
23
29
|
version = locust.__version__
|
24
30
|
|
25
31
|
|
26
|
-
DEFAULT_CONFIG_FILES =
|
32
|
+
DEFAULT_CONFIG_FILES = ("~/.locust.conf", "locust.conf", "pyproject.toml")
|
27
33
|
|
28
34
|
|
29
35
|
class LocustArgumentParser(configargparse.ArgumentParser):
|
@@ -63,6 +69,31 @@ class LocustArgumentParser(configargparse.ArgumentParser):
|
|
63
69
|
}
|
64
70
|
|
65
71
|
|
72
|
+
class LocustTomlConfigParser(configargparse.TomlConfigParser):
|
73
|
+
def parse(self, stream):
|
74
|
+
try:
|
75
|
+
config = tomllib.loads(stream.read())
|
76
|
+
except Exception as e:
|
77
|
+
raise configargparse.ConfigFileParserException(f"Couldn't parse TOML file: {e}")
|
78
|
+
|
79
|
+
# convert to dict and filter based on section names
|
80
|
+
result = OrderedDict()
|
81
|
+
|
82
|
+
for section in self.sections:
|
83
|
+
data = configargparse.get_toml_section(config, section)
|
84
|
+
if data:
|
85
|
+
for key, value in data.items():
|
86
|
+
if isinstance(value, list):
|
87
|
+
result[key] = value
|
88
|
+
elif value is None:
|
89
|
+
pass
|
90
|
+
else:
|
91
|
+
result[key] = str(value)
|
92
|
+
break
|
93
|
+
|
94
|
+
return result
|
95
|
+
|
96
|
+
|
66
97
|
def _is_package(path):
|
67
98
|
"""
|
68
99
|
Is the given path a Python package?
|
@@ -186,6 +217,12 @@ def download_locustfile_from_url(url: str) -> str:
|
|
186
217
|
def get_empty_argument_parser(add_help=True, default_config_files=DEFAULT_CONFIG_FILES) -> LocustArgumentParser:
|
187
218
|
parser = LocustArgumentParser(
|
188
219
|
default_config_files=default_config_files,
|
220
|
+
config_file_parser_class=configargparse.CompositeConfigParser(
|
221
|
+
[
|
222
|
+
LocustTomlConfigParser(["tool.locust"]),
|
223
|
+
configargparse.DefaultConfigFileParser,
|
224
|
+
]
|
225
|
+
),
|
189
226
|
add_env_var_help=False,
|
190
227
|
add_config_file_help=False,
|
191
228
|
add_help=add_help,
|
@@ -38,17 +38,50 @@ class TestParser(unittest.TestCase):
|
|
38
38
|
opts = self.parser.parse_args(args)
|
39
39
|
self.assertEqual(opts.skip_log_setup, True)
|
40
40
|
|
41
|
-
def
|
42
|
-
with NamedTemporaryFile(mode="w") as file:
|
43
|
-
|
44
|
-
|
41
|
+
def test_parse_options_from_conf_file(self):
|
42
|
+
with NamedTemporaryFile(mode="w", suffix=".conf") as file:
|
43
|
+
config_data = """\
|
44
|
+
locustfile = ./test_locustfile.py
|
45
|
+
web-host = 127.0.0.1
|
46
|
+
web-port = 45787
|
47
|
+
headless
|
48
|
+
tags = [Critical, Normal]
|
49
|
+
"""
|
50
|
+
|
51
|
+
file.write(config_data)
|
45
52
|
file.flush()
|
46
53
|
parser = get_parser(default_config_files=[file.name])
|
47
|
-
options = parser.parse_args(["-H", "
|
48
|
-
|
49
|
-
self.assertEqual(
|
50
|
-
self.assertEqual(
|
51
|
-
self.assertEqual(options.
|
54
|
+
options = parser.parse_args(["-H", "https://example.com"])
|
55
|
+
|
56
|
+
self.assertEqual("./test_locustfile.py", options.locustfile)
|
57
|
+
self.assertEqual("127.0.0.1", options.web_host)
|
58
|
+
self.assertEqual(45787, options.web_port)
|
59
|
+
self.assertTrue(options.headless)
|
60
|
+
self.assertEqual(["Critical", "Normal"], options.tags)
|
61
|
+
self.assertEqual("https://example.com", options.host)
|
62
|
+
|
63
|
+
def test_parse_options_from_toml_file(self):
|
64
|
+
with NamedTemporaryFile(mode="w", suffix=".toml") as file:
|
65
|
+
config_data = """\
|
66
|
+
[tool.locust]
|
67
|
+
locustfile = "./test_locustfile.py"
|
68
|
+
web-host = "127.0.0.1"
|
69
|
+
web-port = 45787
|
70
|
+
headless = true
|
71
|
+
tags = ["Critical", "Normal"]
|
72
|
+
"""
|
73
|
+
|
74
|
+
file.write(config_data)
|
75
|
+
file.flush()
|
76
|
+
parser = get_parser(default_config_files=[file.name])
|
77
|
+
options = parser.parse_args(["-H", "https://example.com"])
|
78
|
+
|
79
|
+
self.assertEqual("./test_locustfile.py", options.locustfile)
|
80
|
+
self.assertEqual("127.0.0.1", options.web_host)
|
81
|
+
self.assertEqual(45787, options.web_port)
|
82
|
+
self.assertTrue(options.headless)
|
83
|
+
self.assertEqual(["Critical", "Normal"], options.tags)
|
84
|
+
self.assertEqual("https://example.com", options.host)
|
52
85
|
|
53
86
|
|
54
87
|
class TestArgumentParser(LocustTestCase):
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<html lang="en">
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8" />
|
5
|
-
<link rel="icon" href="
|
5
|
+
<link rel="icon" href="./assets/favicon.ico" />
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
7
|
<meta name="theme-color" content="#000000" />
|
8
8
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<html lang="en">
|
4
4
|
<head>
|
5
5
|
<meta charset="utf-8" />
|
6
|
-
<link rel="icon" href="
|
6
|
+
<link rel="icon" href="./assets/favicon.ico" />
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
8
8
|
<meta name="theme-color" content="#000000" />
|
9
9
|
|