locust 2.20.0__tar.gz → 2.20.1__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.20.0 → locust-2.20.1}/.github/workflows/tests.yml +6 -6
- {locust-2.20.0 → locust-2.20.1}/.gitignore +2 -1
- {locust-2.20.0 → locust-2.20.1}/CHANGELOG.md +34 -0
- {locust-2.20.0 → locust-2.20.1}/PKG-INFO +8 -4
- {locust-2.20.0 → locust-2.20.1}/README.md +6 -2
- {locust-2.20.0 → locust-2.20.1}/docs/api.rst +1 -0
- {locust-2.20.0 → locust-2.20.1}/docs/changelog.rst +7 -0
- {locust-2.20.0 → locust-2.20.1}/docs/running-distributed.rst +5 -5
- {locust-2.20.0 → locust-2.20.1}/docs/what-is-locust.rst +3 -3
- {locust-2.20.0 → locust-2.20.1}/locust/_version.py +2 -2
- {locust-2.20.0 → locust-2.20.1}/locust/argument_parser.py +1 -1
- {locust-2.20.0 → locust-2.20.1}/locust/debug.py +7 -3
- {locust-2.20.0 → locust-2.20.1}/locust/event.py +9 -2
- {locust-2.20.0 → locust-2.20.1}/locust/main.py +3 -1
- {locust-2.20.0 → locust-2.20.1}/locust/rpc/zmqrpc.py +1 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_debugging.py +5 -2
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_zmqrpc.py +6 -4
- {locust-2.20.0 → locust-2.20.1}/locust/user/task.py +1 -1
- {locust-2.20.0 → locust-2.20.1}/locust/webui/package.json +1 -1
- {locust-2.20.0 → locust-2.20.1}/locust/webui/yarn.lock +15 -15
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/PKG-INFO +8 -4
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/requires.txt +1 -1
- {locust-2.20.0 → locust-2.20.1}/pyproject.toml +1 -1
- {locust-2.20.0 → locust-2.20.1}/.coveragerc +0 -0
- {locust-2.20.0 → locust-2.20.1}/.dockerignore +0 -0
- {locust-2.20.0 → locust-2.20.1}/.git-blame-ignore-revs +0 -0
- {locust-2.20.0 → locust-2.20.1}/.gitattributes +0 -0
- {locust-2.20.0 → locust-2.20.1}/.github/CONTRIBUTING.md +0 -0
- {locust-2.20.0 → locust-2.20.1}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.20.0 → locust-2.20.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.20.0 → locust-2.20.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.20.0 → locust-2.20.1}/.github/workflows/stale.yml +0 -0
- {locust-2.20.0 → locust-2.20.1}/.readthedocs.yaml +0 -0
- {locust-2.20.0 → locust-2.20.1}/.vscode/launch.json +0 -0
- {locust-2.20.0 → locust-2.20.1}/.vscode/launch_locust.json +0 -0
- {locust-2.20.0 → locust-2.20.1}/.vscode/settings.json +0 -0
- {locust-2.20.0 → locust-2.20.1}/Dockerfile +0 -0
- {locust-2.20.0 → locust-2.20.1}/LICENSE +0 -0
- {locust-2.20.0 → locust-2.20.1}/MANIFEST.in +0 -0
- {locust-2.20.0 → locust-2.20.1}/Makefile +0 -0
- {locust-2.20.0 → locust-2.20.1}/README +0 -0
- {locust-2.20.0 → locust-2.20.1}/SECURITY.md +0 -0
- {locust-2.20.0 → locust-2.20.1}/Vagrantfile +0 -0
- {locust-2.20.0 → locust-2.20.1}/benchmarks/dispatch.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/_static/theme-overrides.css +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/conf.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/configuration.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/custom-load-shape.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/developing-locust.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/extending-locust.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/further-reading.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/history.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/modern-webui-splash-screenshot.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/number_of_users.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/response_times.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/increase-performance.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/index.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/installation.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/logging.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/quickstart.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/requirements.txt +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/retrieving-stats.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/running-cloud-integration.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/running-in-debugger.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/running-in-docker.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/running-without-web-ui.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/tasksets.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/testing-other-systems.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/use-as-lib.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/add_command_line_argument.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/basic.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/browse_docs_test.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_messages.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_shape/stages.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_shape/step_load.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_wait_function.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/debugging.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/debugging_advanced.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/events.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/extend_modern_web_ui.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/extend_web_ui/extend.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/extend_web_ui/static/extend.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/extend_web_ui/templates/extend.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/fast_http_locust.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/grpc_user.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/hello.proto +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/hello_server.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/grpc/locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/manual_stats_reporting.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/multiple_hosts.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/rest.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/semaphore_wait.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/stop_on_threshold.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/README.md +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/main.tf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/output.tf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/test_data_management.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/use_as_lib.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/vagrant/README.md +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.20.0 → locust-2.20.1}/examples/worker_index.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/generate_changelog.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/__main__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/clients.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/contrib/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/contrib/fasthttp.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/dispatch.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/env.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/exception.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/html.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/input_events.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/log.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/py.typed +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/rpc/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/rpc/protocol.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/runners.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/shape.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/chart.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/css/application.css +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/css/application.css.map +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/css/tables.css +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/css/tables.css.map +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/echarts.common.min.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/favicon.ico +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/logo.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/ui-screenshot-charts.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/ui-screenshot-start-test.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/ui-screenshot-stats.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/img/ui-screenshot-workers.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/jquery-1.11.3.min.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/jquery.jqote2.min.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/jquery.tools.min.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/locust.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/sass/_base.sass +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/sass/_mixins.sass +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/sass/application.sass +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/sass/tables.sass +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/tasks.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/static/vintage.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/stats.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/templates/index.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/templates/report.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/templates/stats_data.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/mock_locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/mock_logging.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_dispatch.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_env.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_fasthttp.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_http.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_interruptable_task.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_locust_class.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_log.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_main.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_parser.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_runners.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_stats.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_tags.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_taskratio.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_users.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_util.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_wait_time.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/test_web.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/testcases.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/test/util.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/user/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/user/inspectuser.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/user/sequential_taskset.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/user/users.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/user/wait_time.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/__init__.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/cache.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/deprecation.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/exception_handler.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/load_locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/rounding.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/util/timespan.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/web.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/.eslintrc +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/.gitignore +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/.prettierrc +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dev.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dist/assets/index-01afe4fa.js +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dist/index.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/dist/report.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/index.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/public/report.html +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/App.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/Report.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Table/Table.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/constants/swarm.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/global.d.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/useNotifications.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/index.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/test/constants.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/test/mocks/statsRequest.mock.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/test/setup.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/test/testUtils.tsx +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/tests/number.test.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/tests/object.test.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/tests/string.test.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/tests/url.test.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/tsconfig.json +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/vite.config.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust/webui/vitest.config.ts +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/SOURCES.txt +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.20.0 → locust-2.20.1}/locust.egg-info/top_level.txt +0 -0
- {locust-2.20.0 → locust-2.20.1}/package.json +0 -0
- {locust-2.20.0 → locust-2.20.1}/scripts/locustfile.py +0 -0
- {locust-2.20.0 → locust-2.20.1}/scripts/run-disributed-headless.sh +0 -0
- {locust-2.20.0 → locust-2.20.1}/scripts/run-disributed-web.sh +0 -0
- {locust-2.20.0 → locust-2.20.1}/scripts/run-local-headless.sh +0 -0
- {locust-2.20.0 → locust-2.20.1}/scripts/run-local-web.sh +0 -0
- {locust-2.20.0 → locust-2.20.1}/setup.cfg +0 -0
- {locust-2.20.0 → locust-2.20.1}/tox.ini +0 -0
@@ -86,12 +86,12 @@ jobs:
|
|
86
86
|
username: locustbuild
|
87
87
|
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
88
88
|
- name: Set up QEMU
|
89
|
-
uses: docker/setup-qemu-action@
|
89
|
+
uses: docker/setup-qemu-action@v3
|
90
90
|
- name: Set up Docker Buildx
|
91
|
-
uses: docker/setup-buildx-action@
|
91
|
+
uses: docker/setup-buildx-action@v3
|
92
92
|
- name: build and publish image
|
93
93
|
id: docker_build
|
94
|
-
uses: docker/build-push-action@
|
94
|
+
uses: docker/build-push-action@v5
|
95
95
|
with:
|
96
96
|
build-args: |
|
97
97
|
BUILDKIT_CONTEXT_KEEP_GIT_DIR=1
|
@@ -117,12 +117,12 @@ jobs:
|
|
117
117
|
username: locustbuild
|
118
118
|
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
119
119
|
- name: Set up QEMU
|
120
|
-
uses: docker/setup-qemu-action@
|
120
|
+
uses: docker/setup-qemu-action@v3
|
121
121
|
- name: Set up Docker Buildx
|
122
|
-
uses: docker/setup-buildx-action@
|
122
|
+
uses: docker/setup-buildx-action@v3
|
123
123
|
- name: build and publish image
|
124
124
|
id: docker_build
|
125
|
-
uses: docker/build-push-action@
|
125
|
+
uses: docker/build-push-action@v5
|
126
126
|
with:
|
127
127
|
build-args: |
|
128
128
|
BUILDKIT_CONTEXT_KEEP_GIT_DIR=1
|
@@ -1,6 +1,40 @@
|
|
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.20.0](https://github.com/locustio/locust/tree/2.20.0) (2023-12-13)
|
5
|
+
|
6
|
+
[Full Changelog](https://github.com/locustio/locust/compare/2.19.1...2.20.0)
|
7
|
+
|
8
|
+
**Fixed bugs:**
|
9
|
+
|
10
|
+
- har2locust KeyError: '\_resourceType' [\#2503](https://github.com/locustio/locust/issues/2503)
|
11
|
+
- FastHTTPUser determines StatusCode 304 as Failed [\#2500](https://github.com/locustio/locust/issues/2500)
|
12
|
+
- FastHttpUser is stricter than HttpUser about the host attribute [\#2492](https://github.com/locustio/locust/issues/2492)
|
13
|
+
- Unable to modify custom parameters from UI using modern UI [\#2489](https://github.com/locustio/locust/issues/2489)
|
14
|
+
- Exception 'LookupError: unknown encoding:' when response contains `content-type` not handled by requests.utils.get\_encoding\_from\_headers [\#2482](https://github.com/locustio/locust/issues/2482)
|
15
|
+
|
16
|
+
**Merged pull requests:**
|
17
|
+
|
18
|
+
- Fix useSwarmUi Test with Mock Timers [\#2514](https://github.com/locustio/locust/pull/2514) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
19
|
+
- Custom messages: Throw an exception if someone tries to register twice for the same event [\#2513](https://github.com/locustio/locust/pull/2513) ([cyberw](https://github.com/cyberw))
|
20
|
+
- Fixed response failure for unsupported encoding [\#2512](https://github.com/locustio/locust/pull/2512) ([prince-melvin](https://github.com/prince-melvin))
|
21
|
+
- Add event.measure context manager for simpler firing of request event [\#2511](https://github.com/locustio/locust/pull/2511) ([cyberw](https://github.com/cyberw))
|
22
|
+
- Update Web UI About box [\#2510](https://github.com/locustio/locust/pull/2510) ([cyberw](https://github.com/cyberw))
|
23
|
+
- Chart Average Response Time in Modern UI [\#2509](https://github.com/locustio/locust/pull/2509) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
24
|
+
- Update the About Section [\#2508](https://github.com/locustio/locust/pull/2508) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
25
|
+
- Allow Boolean and Null Values to be Set from the Web UI [\#2507](https://github.com/locustio/locust/pull/2507) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
26
|
+
- custom messages: Support sending datetimes and bson.ObjectId [\#2504](https://github.com/locustio/locust/pull/2504) ([cyberw](https://github.com/cyberw))
|
27
|
+
- Add Notifications for Log Viewer [\#2502](https://github.com/locustio/locust/pull/2502) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
28
|
+
- FastHttpUser: Treat response code 304 as OK [\#2501](https://github.com/locustio/locust/pull/2501) ([cyberw](https://github.com/cyberw))
|
29
|
+
- Fix Warnings from the Web UI Tests [\#2499](https://github.com/locustio/locust/pull/2499) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
30
|
+
- Adjust "Starting web interface at"-output [\#2498](https://github.com/locustio/locust/pull/2498) ([cyberw](https://github.com/cyberw))
|
31
|
+
- Update mypy, some type hints, and some tiny updates to Runner classes [\#2497](https://github.com/locustio/locust/pull/2497) ([cyberw](https://github.com/cyberw))
|
32
|
+
- Remove Typecheck from Web UI Build Process and Update Github Actions [\#2496](https://github.com/locustio/locust/pull/2496) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
33
|
+
- Replace Vitest canvas mock library [\#2495](https://github.com/locustio/locust/pull/2495) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
34
|
+
- Implement Modern Web UI Tests [\#2494](https://github.com/locustio/locust/pull/2494) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
35
|
+
- Further relax FastHttpUser's host checking to match HttpUser's [\#2493](https://github.com/locustio/locust/pull/2493) ([pjenvey](https://github.com/pjenvey))
|
36
|
+
- Unable to modify custom parameters from the modern UI [\#2491](https://github.com/locustio/locust/pull/2491) ([andrewbaldwin44](https://github.com/andrewbaldwin44))
|
37
|
+
|
4
38
|
## [2.19.1](https://github.com/locustio/locust/tree/2.19.1) (2023-11-27)
|
5
39
|
|
6
40
|
[Full Changelog](https://github.com/locustio/locust/compare/2.19.0...2.19.1)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.20.
|
3
|
+
Version: 2.20.1
|
4
4
|
Summary: Developer friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://locust.io/
|
@@ -30,7 +30,7 @@ License-File: LICENSE
|
|
30
30
|
Requires-Dist: gevent>=22.10.2
|
31
31
|
Requires-Dist: flask>=2.0.0
|
32
32
|
Requires-Dist: Werkzeug>=2.0.0
|
33
|
-
Requires-Dist: requests>=2.
|
33
|
+
Requires-Dist: requests>=2.26.0
|
34
34
|
Requires-Dist: msgpack>=1.0.0
|
35
35
|
Requires-Dist: pyzmq>=25.0.0
|
36
36
|
Requires-Dist: geventhttpclient>=2.0.11
|
@@ -45,12 +45,16 @@ Requires-Dist: pywin32; platform_system == "Windows"
|
|
45
45
|
|
46
46
|
[](https://pypi.org/project/locust/)
|
47
47
|
[](https://pypi.org/project/locust/)
|
48
|
+
[](https://pepy.tech/project/locust)
|
48
49
|
[](https://github.com/locustio/locust/actions?query=workflow%3ATests)
|
49
|
-
[](https://github.com/locustio/locust/blob/master/LICENSE)
|
50
50
|
[](https://github.com/locustio/locust/graphs/contributors)
|
51
51
|
[](https://github.com/support-ukraine/support-ukraine)
|
52
52
|
|
53
|
-
Locust is an
|
53
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer friendly approach lets you to define your tests in regular Python code.
|
54
|
+
|
55
|
+
Locust tests can be run from command line or using its web-based UI. Throughput, response times and errors can be viewed in real time and/or exported for later analysis.
|
56
|
+
|
57
|
+
You can import regular Python libraries into your tests, and with Locust's pluggable architecture it is infinitely expandable. Unlike when using most other tools, your test design will never be limited by a GUI or domain-specific language.
|
54
58
|
|
55
59
|
To get started right away, head over to the [documentation](http://docs.locust.io/en/stable/installation.html).
|
56
60
|
|
@@ -2,12 +2,16 @@
|
|
2
2
|
|
3
3
|
[](https://pypi.org/project/locust/)
|
4
4
|
[](https://pypi.org/project/locust/)
|
5
|
+
[](https://pepy.tech/project/locust)
|
5
6
|
[](https://github.com/locustio/locust/actions?query=workflow%3ATests)
|
6
|
-
[](https://github.com/locustio/locust/blob/master/LICENSE)
|
7
7
|
[](https://github.com/locustio/locust/graphs/contributors)
|
8
8
|
[](https://github.com/support-ukraine/support-ukraine)
|
9
9
|
|
10
|
-
Locust is an
|
10
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer friendly approach lets you to define your tests in regular Python code.
|
11
|
+
|
12
|
+
Locust tests can be run from command line or using its web-based UI. Throughput, response times and errors can be viewed in real time and/or exported for later analysis.
|
13
|
+
|
14
|
+
You can import regular Python libraries into your tests, and with Locust's pluggable architecture it is infinitely expandable. Unlike when using most other tools, your test design will never be limited by a GUI or domain-specific language.
|
11
15
|
|
12
16
|
To get started right away, head over to the [documentation](http://docs.locust.io/en/stable/installation.html).
|
13
17
|
|
@@ -4,6 +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.20.1
|
8
|
+
======
|
9
|
+
* run_single_user improvements https://github.com/locustio/locust/pull/2519
|
10
|
+
* Support IPv6 for zmq connection between master and worker https://github.com/locustio/locust/pull/2521
|
11
|
+
* Modern UI: Update Vite to 4.5.1 https://github.com/locustio/locust/pull/2530
|
12
|
+
* Other tiny fixes
|
13
|
+
|
7
14
|
2.20.0
|
8
15
|
======
|
9
16
|
* Add event.measure context manager for simpler firing of request event (experimental) https://github.com/locustio/locust/pull/2511
|
@@ -53,30 +53,30 @@ Options
|
|
53
53
|
=======
|
54
54
|
|
55
55
|
``--master-host <hostname or ip>``
|
56
|
-
|
56
|
+
----------------------------------
|
57
57
|
|
58
58
|
Optionally used together with ``--worker`` to set the hostname/IP of the master node (defaults
|
59
59
|
to localhost)
|
60
60
|
|
61
61
|
``--master-port <port number>``
|
62
|
-
|
62
|
+
-------------------------------
|
63
63
|
|
64
64
|
Optionally used together with ``--worker`` to set the port number of the master node (defaults to 5557).
|
65
65
|
|
66
66
|
``--master-bind-host <ip>``
|
67
|
-
|
67
|
+
---------------------------
|
68
68
|
|
69
69
|
Optionally used together with ``--master``. Determines which network interface the master node
|
70
70
|
will bind to. Defaults to * (all available interfaces).
|
71
71
|
|
72
72
|
``--master-bind-port <port number>``
|
73
|
-
|
73
|
+
------------------------------------
|
74
74
|
|
75
75
|
Optionally used together with ``--master``. Determines what network ports that the master node will
|
76
76
|
listen to. Defaults to 5557.
|
77
77
|
|
78
78
|
``--expect-workers <number of workers>``
|
79
|
-
|
79
|
+
----------------------------------------
|
80
80
|
|
81
81
|
Used when starting the master node with ``--headless``. The master node will then wait until X worker
|
82
82
|
nodes has connected before the test is started.
|
@@ -2,11 +2,11 @@
|
|
2
2
|
What is Locust?
|
3
3
|
===============================
|
4
4
|
|
5
|
-
Locust is an
|
5
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer friendly approach lets you to define your tests in regular Python code.
|
6
6
|
|
7
|
-
|
7
|
+
Locust tests can be run from command line or using its web-based UI. Throughput, response times and errors can be viewed in real time and/or exported for later analysis.
|
8
8
|
|
9
|
-
|
9
|
+
You can import regular Python libraries into your tests, and with Locust's pluggable architecture it is infinitely expandable. Unlike when using most other tools, your test design will never be limited by a GUI or domain-specific language.
|
10
10
|
|
11
11
|
To start using Locust, go to :ref:`installation`
|
12
12
|
|
@@ -355,7 +355,7 @@ def setup_parser_arguments(parser):
|
|
355
355
|
dest="web_auth",
|
356
356
|
metavar="<username:password>",
|
357
357
|
default=None,
|
358
|
-
help="DEPRECATED Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password",
|
358
|
+
help="DEPRECATED. See https://github.com/locustio/locust/issues/2517 Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password ",
|
359
359
|
env_var="LOCUST_WEB_AUTH",
|
360
360
|
)
|
361
361
|
web_ui_group.add_argument(
|
@@ -2,6 +2,7 @@ from datetime import datetime, timezone
|
|
2
2
|
import os
|
3
3
|
import inspect
|
4
4
|
import locust
|
5
|
+
import locust.log
|
5
6
|
from locust import User, argument_parser
|
6
7
|
from typing import Type, Optional
|
7
8
|
from locust.env import Environment
|
@@ -102,7 +103,7 @@ def run_single_user(
|
|
102
103
|
include_time=False,
|
103
104
|
include_context=False,
|
104
105
|
include_payload=False,
|
105
|
-
loglevel=
|
106
|
+
loglevel: Optional[str] = "WARNING",
|
106
107
|
):
|
107
108
|
"""
|
108
109
|
Runs a single User. Useful when you want to run a debugger.
|
@@ -113,8 +114,8 @@ def run_single_user(
|
|
113
114
|
|
114
115
|
It prints some info about every request to stdout, and you can get additional info using the `include_*` flags
|
115
116
|
|
116
|
-
|
117
|
-
but you can change that by passing a log level (
|
117
|
+
It also initiates logging on WARNING level (not INFO, because it could interfere with the printing of requests),
|
118
|
+
but you can change that by passing a log level (or disabling logging entirely by passing None)
|
118
119
|
"""
|
119
120
|
global _env
|
120
121
|
|
@@ -141,6 +142,9 @@ def run_single_user(
|
|
141
142
|
)
|
142
143
|
# fire various events (quit and test_stop will never get called, sorry about that)
|
143
144
|
_env.events.init.fire(environment=_env, runner=None, web_ui=None)
|
145
|
+
# uncaught events will be suppressed, so check if that happened
|
146
|
+
if locust.log.unhandled_greenlet_exception:
|
147
|
+
raise Exception("Unhandled exception in init")
|
144
148
|
|
145
149
|
# do the things that the Runner usually does
|
146
150
|
_env.user_classes = [user_class]
|
@@ -55,7 +55,12 @@ class EventHook:
|
|
55
55
|
) -> Generator[Dict[str, Any], None, None]:
|
56
56
|
"""Convenience method for firing the event with automatically calculated response time and automatically marking the request as failed if an exception is raised (this is really only useful for the *request* event)
|
57
57
|
|
58
|
-
|
58
|
+
Example usage (in a task):
|
59
|
+
|
60
|
+
with self.environment.events.request.measure("myrequestType", "myRequestName") as request_meta:
|
61
|
+
# do the stuff you want to measure
|
62
|
+
|
63
|
+
You can optionally add/overwrite entries in the request_meta dict and they will be passed to the request event.
|
59
64
|
|
60
65
|
Experimental.
|
61
66
|
"""
|
@@ -91,7 +96,7 @@ class DeprecatedEventHook(EventHook):
|
|
91
96
|
class Events:
|
92
97
|
request: EventHook
|
93
98
|
"""
|
94
|
-
Fired when a request in completed
|
99
|
+
Fired when a request in completed.
|
95
100
|
|
96
101
|
Event arguments:
|
97
102
|
|
@@ -102,6 +107,8 @@ class Events:
|
|
102
107
|
:param response: Response object (e.g. a :py:class:`requests.Response`)
|
103
108
|
:param context: :ref:`User/request context <request_context>`
|
104
109
|
:param exception: Exception instance that was thrown. None if request was successful.
|
110
|
+
|
111
|
+
If you want to simplify a custom client, you can have Locust measure the time for you by using :meth:`measure() <locust.event.EventHook.measure>`
|
105
112
|
"""
|
106
113
|
|
107
114
|
user_error: EventHook
|
@@ -428,7 +428,9 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
|
|
428
428
|
else:
|
429
429
|
logger.info(f"Starting web interface at {protocol}://0.0.0.0:{options.web_port}")
|
430
430
|
if options.web_auth:
|
431
|
-
logging.
|
431
|
+
logging.warning(
|
432
|
+
"BasicAuth support is deprecated, it will be removed in a future release, unless someone reimplements it in a more modern way! See https://github.com/locustio/locust/issues/2517"
|
433
|
+
)
|
432
434
|
web_ui = environment.create_web_ui(
|
433
435
|
host=web_host,
|
434
436
|
port=options.web_port,
|
@@ -23,7 +23,7 @@ class TestDebugging(DebugTestCase):
|
|
23
23
|
|
24
24
|
class MyUser1(HttpUser):
|
25
25
|
@task
|
26
|
-
def my_task():
|
26
|
+
def my_task(self):
|
27
27
|
pass
|
28
28
|
|
29
29
|
def _stop_user():
|
@@ -34,4 +34,7 @@ class TestDebugging(DebugTestCase):
|
|
34
34
|
t = Timer(1, _stop_user)
|
35
35
|
t.start()
|
36
36
|
|
37
|
-
debug.run_single_user(
|
37
|
+
debug.run_single_user(
|
38
|
+
MyUser1,
|
39
|
+
loglevel=None, # another log setup might mess with other tests...
|
40
|
+
)
|
@@ -8,7 +8,7 @@ from locust.exception import RPCError, RPCSendError, RPCReceiveError
|
|
8
8
|
class ZMQRPC_tests(LocustTestCase):
|
9
9
|
def setUp(self):
|
10
10
|
super().setUp()
|
11
|
-
self.server = zmqrpc.Server("
|
11
|
+
self.server = zmqrpc.Server("*", 0)
|
12
12
|
self.client = zmqrpc.Client("localhost", self.server.port, "identity")
|
13
13
|
|
14
14
|
def tearDown(self):
|
@@ -19,8 +19,10 @@ class ZMQRPC_tests(LocustTestCase):
|
|
19
19
|
def test_constructor(self):
|
20
20
|
self.assertEqual(self.server.socket.getsockopt(zmq.TCP_KEEPALIVE), 1)
|
21
21
|
self.assertEqual(self.server.socket.getsockopt(zmq.TCP_KEEPALIVE_IDLE), 30)
|
22
|
+
self.assertEqual(self.server.socket.getsockopt(zmq.IPV6), 1)
|
22
23
|
self.assertEqual(self.client.socket.getsockopt(zmq.TCP_KEEPALIVE), 1)
|
23
24
|
self.assertEqual(self.client.socket.getsockopt(zmq.TCP_KEEPALIVE_IDLE), 30)
|
25
|
+
self.assertEqual(self.client.socket.getsockopt(zmq.IPV6), 1)
|
24
26
|
|
25
27
|
def test_client_send(self):
|
26
28
|
self.client.send(Message("test", "message", "identity"))
|
@@ -40,15 +42,15 @@ class ZMQRPC_tests(LocustTestCase):
|
|
40
42
|
self.assertEqual(msg.node_id, "identity")
|
41
43
|
|
42
44
|
def test_client_retry(self):
|
43
|
-
server = zmqrpc.Server("
|
45
|
+
server = zmqrpc.Server("*", 0)
|
44
46
|
server.socket.close()
|
45
47
|
with self.assertRaises(RPCError):
|
46
48
|
server.recv_from_client()
|
47
49
|
|
48
50
|
def test_rpc_error(self):
|
49
|
-
server = zmqrpc.Server("
|
51
|
+
server = zmqrpc.Server("*", 0)
|
50
52
|
with self.assertRaises(RPCError):
|
51
|
-
server = zmqrpc.Server("
|
53
|
+
server = zmqrpc.Server("*", server.port)
|
52
54
|
server.close()
|
53
55
|
with self.assertRaises(RPCSendError):
|
54
56
|
server.send_to_client(Message("test", "message", "identity"))
|
@@ -3337,10 +3337,10 @@ mute-stream@0.0.8:
|
|
3337
3337
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
3338
3338
|
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
3339
3339
|
|
3340
|
-
nanoid@^3.3.
|
3341
|
-
version "3.3.
|
3342
|
-
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.
|
3343
|
-
integrity sha512-
|
3340
|
+
nanoid@^3.3.7:
|
3341
|
+
version "3.3.7"
|
3342
|
+
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
|
3343
|
+
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
|
3344
3344
|
|
3345
3345
|
natural-compare@^1.4.0:
|
3346
3346
|
version "1.4.0"
|
@@ -3634,11 +3634,11 @@ pkg-types@^1.0.3:
|
|
3634
3634
|
pathe "^1.1.0"
|
3635
3635
|
|
3636
3636
|
postcss@^8.4.27:
|
3637
|
-
version "8.4.
|
3638
|
-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.
|
3639
|
-
integrity sha512-
|
3637
|
+
version "8.4.32"
|
3638
|
+
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9"
|
3639
|
+
integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==
|
3640
3640
|
dependencies:
|
3641
|
-
nanoid "^3.3.
|
3641
|
+
nanoid "^3.3.7"
|
3642
3642
|
picocolors "^1.0.0"
|
3643
3643
|
source-map-js "^1.0.2"
|
3644
3644
|
|
@@ -3919,9 +3919,9 @@ rimraf@^3.0.2:
|
|
3919
3919
|
glob "^7.1.3"
|
3920
3920
|
|
3921
3921
|
rollup@^3.27.1:
|
3922
|
-
version "3.29.
|
3923
|
-
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.
|
3924
|
-
integrity sha512-
|
3922
|
+
version "3.29.4"
|
3923
|
+
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
|
3924
|
+
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
|
3925
3925
|
optionalDependencies:
|
3926
3926
|
fsevents "~2.3.2"
|
3927
3927
|
|
@@ -4609,10 +4609,10 @@ vite-tsconfig-paths@^4.2.1:
|
|
4609
4609
|
optionalDependencies:
|
4610
4610
|
fsevents "~2.3.2"
|
4611
4611
|
|
4612
|
-
vite@^4.
|
4613
|
-
version "4.
|
4614
|
-
resolved "https://registry.yarnpkg.com/vite/-/vite-4.
|
4615
|
-
integrity sha512-
|
4612
|
+
vite@^4.5.1:
|
4613
|
+
version "4.5.1"
|
4614
|
+
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a"
|
4615
|
+
integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==
|
4616
4616
|
dependencies:
|
4617
4617
|
esbuild "^0.18.10"
|
4618
4618
|
postcss "^8.4.27"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.20.
|
3
|
+
Version: 2.20.1
|
4
4
|
Summary: Developer friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://locust.io/
|
@@ -30,7 +30,7 @@ License-File: LICENSE
|
|
30
30
|
Requires-Dist: gevent>=22.10.2
|
31
31
|
Requires-Dist: flask>=2.0.0
|
32
32
|
Requires-Dist: Werkzeug>=2.0.0
|
33
|
-
Requires-Dist: requests>=2.
|
33
|
+
Requires-Dist: requests>=2.26.0
|
34
34
|
Requires-Dist: msgpack>=1.0.0
|
35
35
|
Requires-Dist: pyzmq>=25.0.0
|
36
36
|
Requires-Dist: geventhttpclient>=2.0.11
|
@@ -45,12 +45,16 @@ Requires-Dist: pywin32; platform_system == "Windows"
|
|
45
45
|
|
46
46
|
[](https://pypi.org/project/locust/)
|
47
47
|
[](https://pypi.org/project/locust/)
|
48
|
+
[](https://pepy.tech/project/locust)
|
48
49
|
[](https://github.com/locustio/locust/actions?query=workflow%3ATests)
|
49
|
-
[](https://github.com/locustio/locust/blob/master/LICENSE)
|
50
50
|
[](https://github.com/locustio/locust/graphs/contributors)
|
51
51
|
[](https://github.com/support-ukraine/support-ukraine)
|
52
52
|
|
53
|
-
Locust is an
|
53
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer friendly approach lets you to define your tests in regular Python code.
|
54
|
+
|
55
|
+
Locust tests can be run from command line or using its web-based UI. Throughput, response times and errors can be viewed in real time and/or exported for later analysis.
|
56
|
+
|
57
|
+
You can import regular Python libraries into your tests, and with Locust's pluggable architecture it is infinitely expandable. Unlike when using most other tools, your test design will never be limited by a GUI or domain-specific language.
|
54
58
|
|
55
59
|
To get started right away, head over to the [documentation](http://docs.locust.io/en/stable/installation.html).
|
56
60
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|