locust 2.29.1.dev4__tar.gz → 2.29.1.dev31__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.29.1.dev4 → locust-2.29.1.dev31}/PKG-INFO +2 -1
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/api.rst +5 -6
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/use-as-lib.rst +5 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/__init__.py +2 -1
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/_version.py +2 -2
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/clients.py +136 -7
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/event.py +3 -1
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/PKG-INFO +2 -1
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/requires.txt +1 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/pyproject.toml +1 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.coveragerc +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.dockerignore +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.git-blame-ignore-revs +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.gitattributes +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/CONTRIBUTING.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/workflows/stale.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.github/workflows/tests.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.gitignore +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.pre-commit-config.yaml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.readthedocs.yaml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.vscode/extensions.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.vscode/launch.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.vscode/launch_locust.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/.vscode/settings.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/CHANGELOG.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/Dockerfile +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/LICENSE +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/MANIFEST.in +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/Makefile +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/README.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/SECURITY.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/Vagrantfile +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/benchmarks/dispatch.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/_static/theme-overrides.css +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/changelog.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/conf.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/configuration.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/custom-load-shape.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/developing-locust.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/extending-locust.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/extensions.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/faq.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/further-reading.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/history.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/extend_modern_web_ui_cache_stats.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/locust_workers.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/number_of_users.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/response_times.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/increase-performance.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/increasing-request-rate.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/index.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/installation.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/logging.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/quickstart.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/requirements.txt +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/retrieving-stats.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/running-distributed.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/running-in-debugger.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/running-in-docker.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/running-without-web-ui.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/tasksets.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/testing-other-systems.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/what-is-locust.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/add_command_line_argument.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/basic.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/browse_docs_test.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_messages.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_shape/stages.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_shape/step_load.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_wait_function.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/debugging.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/debugging_advanced.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-disributed-headless.sh +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-disributed-web.sh +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-local-headless.sh +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-local-web.sh +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/events.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/extend_web_ui.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/fast_http_locust.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/grpc_user.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/hello.proto +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/hello_server.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/grpc/locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/manual_stats_reporting.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/multiple_hosts.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/rest.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/semaphore_wait.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/stop_on_threshold.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/README.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/main.tf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/output.tf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/test_data_management.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/use_as_lib.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/vagrant/README.md +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/web_ui_auth.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/web_ui_cache_stats.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/worker_index.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/generate_changelog.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/__main__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/argument_parser.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/contrib/__init__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/contrib/fasthttp.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/debug.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/dispatch.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/env.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/exception.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/html.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/input_events.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/log.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/main.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/py.typed +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/rpc/__init__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/rpc/protocol.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/runners.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/shape.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/stats.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/__init__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/mock_locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/mock_logging.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_debugging.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_dispatch.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_env.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_fasthttp.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_http.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_interruptable_task.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_locust_class.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_log.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_main.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_parser.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_runners.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_stats.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_tags.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_taskratio.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_users.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_util.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_wait_time.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_web.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/testcases.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/test/util.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/__init__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/inspectuser.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/sequential_taskset.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/task.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/users.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/user/wait_time.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/__init__.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/cache.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/date.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/deprecation.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/exception_handler.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/load_locustfile.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/rounding.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/util/timespan.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/web.py +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/.eslintrc +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/.gitignore +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/.prettierrc +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/auth.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dev.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/assets/index-84c63e70.js +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/auth.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/index.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/dist/report.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/index.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/package.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/public/report.html +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/App.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/App.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/FallbackRender/FallbackRender.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/FallbackRender/FallbackRender.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LogViewer/logUtils.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/SwarmUserClassPicker.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmForm/tests/SwarmUserClassPicker.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Table/Table.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/constants/auth.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/constants/logs.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/constants/swarm.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/global.d.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/tests/useSelecteViewColumns.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/useNotifications.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/useSelectViewColumns.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/index.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/Auth.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/Dashboard.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/HtmlReport.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/tests/Auth.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/tests/Dashboard.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/pages/tests/HtmlReport.test.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/test/constants.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/test/mocks/statsRequest.mock.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/test/setup.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/test/testUtils.tsx +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/types/auth.types.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/array.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/date.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/tests/number.test.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/tests/object.test.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/tests/string.test.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/tests/url.test.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/tsconfig.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/vite.config.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/vitest.config.ts +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust/webui/yarn.lock +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/SOURCES.txt +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/locust.egg-info/top_level.txt +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/package.json +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/setup.cfg +0 -0
- {locust-2.29.1.dev4 → locust-2.29.1.dev31}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.29.1.
|
3
|
+
Version: 2.29.1.dev31
|
4
4
|
Summary: Developer-friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://github.com/locustio/locust
|
@@ -36,6 +36,7 @@ Requires-Dist: pyzmq>=25.0.0
|
|
36
36
|
Requires-Dist: geventhttpclient>=2.3.1
|
37
37
|
Requires-Dist: ConfigArgParse>=1.5.5
|
38
38
|
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
39
|
+
Requires-Dist: typing_extensions>=4.6.0; python_version < "3.11"
|
39
40
|
Requires-Dist: psutil>=5.9.1
|
40
41
|
Requires-Dist: Flask-Login>=0.6.3
|
41
42
|
Requires-Dist: Flask-Cors>=3.0.10
|
@@ -114,6 +114,11 @@ of locust scripts (since the Environment instance hasn't been created when the l
|
|
114
114
|
:members:
|
115
115
|
|
116
116
|
|
117
|
+
.. note::
|
118
|
+
|
119
|
+
It's highly recommended that you add a wildcard keyword argument in your event listeners
|
120
|
+
to prevent your code from breaking if new arguments are added in a future version.
|
121
|
+
|
117
122
|
EventHook class
|
118
123
|
---------------
|
119
124
|
|
@@ -122,12 +127,6 @@ The event hooks are instances of the **locust.events.EventHook** class:
|
|
122
127
|
.. autoclass:: locust.event.EventHook
|
123
128
|
:members:
|
124
129
|
|
125
|
-
.. note::
|
126
|
-
|
127
|
-
It's highly recommended that you add a wildcard keyword argument in your event listeners
|
128
|
-
to prevent your code from breaking if new arguments are added in a future version.
|
129
|
-
|
130
|
-
|
131
130
|
Runner classes
|
132
131
|
=====================
|
133
132
|
|
@@ -49,6 +49,11 @@ to view the stats, and to control the runner (e.g. start and stop load tests):
|
|
49
49
|
env.create_web_ui()
|
50
50
|
env.web_ui.greenlet.join()
|
51
51
|
|
52
|
+
Skipping monkey patching
|
53
|
+
========================
|
54
|
+
|
55
|
+
Some packages such as boto3 may have incompatibility when using Locust as a library, where monkey patching is already applied. In this case monkey patching may be disabled by setting ``LOCUST_SKIP_MONKEY_PATCH=1`` as env variable.
|
56
|
+
|
52
57
|
Full example
|
53
58
|
============
|
54
59
|
|
@@ -12,7 +12,8 @@ if os.getenv("LOCUST_PLAYWRIGHT", None):
|
|
12
12
|
|
13
13
|
from gevent import monkey
|
14
14
|
|
15
|
-
|
15
|
+
if not os.getenv("LOCUST_SKIP_MONKEY_PATCH", None):
|
16
|
+
monkey.patch_all()
|
16
17
|
|
17
18
|
from ._version import version as __version__
|
18
19
|
from .contrib.fasthttp import FastHttpUser
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '2.29.1.
|
16
|
-
__version_tuple__ = version_tuple = (2, 29, 1, '
|
15
|
+
__version__ = version = '2.29.1.dev31'
|
16
|
+
__version_tuple__ = version_tuple = (2, 29, 1, 'dev31')
|
@@ -2,8 +2,8 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
import re
|
4
4
|
import time
|
5
|
-
from collections.abc import Generator
|
6
5
|
from contextlib import contextmanager
|
6
|
+
from typing import TYPE_CHECKING
|
7
7
|
from urllib.parse import urlparse, urlunparse
|
8
8
|
|
9
9
|
import requests
|
@@ -15,6 +15,41 @@ from urllib3 import PoolManager
|
|
15
15
|
|
16
16
|
from .exception import CatchResponseError, LocustError, ResponseError
|
17
17
|
|
18
|
+
if TYPE_CHECKING:
|
19
|
+
import sys
|
20
|
+
from collections.abc import Callable, Generator, Iterable, Mapping, MutableMapping
|
21
|
+
from typing import Any, TypedDict
|
22
|
+
|
23
|
+
from requests.cookies import RequestsCookieJar
|
24
|
+
|
25
|
+
if sys.version_info >= (3, 11):
|
26
|
+
from typing import Unpack
|
27
|
+
else:
|
28
|
+
from typing_extensions import Unpack
|
29
|
+
|
30
|
+
# Annotations below were generated using output from mypy.
|
31
|
+
# Mypy underneath uses information from the https://github.com/python/typeshed repo.
|
32
|
+
|
33
|
+
class RequestKwargs(TypedDict, total=False):
|
34
|
+
params: Any | None # simplified signature
|
35
|
+
headers: Mapping[str, str | bytes | None] | None
|
36
|
+
cookies: RequestsCookieJar | MutableMapping[str, str] | None
|
37
|
+
files: Any | None # simplified signature
|
38
|
+
auth: Any | None # simplified signature
|
39
|
+
timeout: float | tuple[float, float] | tuple[float, None] | None
|
40
|
+
allow_redirects: bool
|
41
|
+
proxies: MutableMapping[str, str] | None
|
42
|
+
hooks: Mapping[str, Iterable[Callable[[Response], Any]] | Callable[[Response], Any]] | None
|
43
|
+
stream: bool | None
|
44
|
+
verify: bool | str | None
|
45
|
+
cert: str | tuple[str, str] | None
|
46
|
+
|
47
|
+
class RESTKwargs(RequestKwargs, total=False):
|
48
|
+
name: str | None
|
49
|
+
catch_response: bool
|
50
|
+
context: dict
|
51
|
+
|
52
|
+
|
18
53
|
absolute_http_url_regexp = re.compile(r"^https?://", re.I)
|
19
54
|
|
20
55
|
|
@@ -94,7 +129,18 @@ class HttpSession(requests.Session):
|
|
94
129
|
finally:
|
95
130
|
self.request_name = None
|
96
131
|
|
97
|
-
def request(
|
132
|
+
def request( # type: ignore[override]
|
133
|
+
self,
|
134
|
+
method: str | bytes,
|
135
|
+
url: str | bytes,
|
136
|
+
name: str | None = None,
|
137
|
+
catch_response: bool = False,
|
138
|
+
context: dict = {},
|
139
|
+
*,
|
140
|
+
data: Any | None = None,
|
141
|
+
json: Any | None = None,
|
142
|
+
**kwargs: Unpack[RequestKwargs],
|
143
|
+
):
|
98
144
|
"""
|
99
145
|
Constructs and sends a :py:class:`requests.Request`.
|
100
146
|
Returns :py:class:`requests.Response` object.
|
@@ -108,7 +154,8 @@ class HttpSession(requests.Session):
|
|
108
154
|
response, even if the response code is ok (2xx). The opposite also works, one can use catch_response to catch a request
|
109
155
|
and then mark it as successful even if the response code was not (i.e 500 or 404).
|
110
156
|
:param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
|
111
|
-
:param data: (optional) Dictionary
|
157
|
+
:param data: (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the :class:`Request`.
|
158
|
+
:param json: (optional) json to send in the body of the :class:`Request`.
|
112
159
|
:param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
|
113
160
|
:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
|
114
161
|
:param files: (optional) Dictionary of ``'filename': file-like-objects`` for multipart encoding upload.
|
@@ -117,9 +164,17 @@ class HttpSession(requests.Session):
|
|
117
164
|
:type timeout: float or tuple
|
118
165
|
:param allow_redirects: (optional) Set to True by default.
|
119
166
|
:type allow_redirects: bool
|
120
|
-
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
|
167
|
+
:param proxies: (optional) Dictionary mapping protocol or protocol and hostname to the URL of the proxy.
|
168
|
+
:param hooks: (optional) Dictionary mapping hook name to one event or list of events, event must be callable.
|
121
169
|
:param stream: (optional) whether to immediately download the response content. Defaults to ``False``.
|
122
|
-
:param verify: (optional)
|
170
|
+
:param verify: (optional) Either a boolean, in which case it controls whether we verify
|
171
|
+
the server's TLS certificate, or a string, in which case it must be a path
|
172
|
+
to a CA bundle to use. Defaults to ``True``. When set to
|
173
|
+
``False``, requests will accept any TLS certificate presented by
|
174
|
+
the server, and will ignore hostname mismatches and/or expired
|
175
|
+
certificates, which will make your application vulnerable to
|
176
|
+
man-in-the-middle (MitM) attacks. Setting verify to ``False``
|
177
|
+
may be useful during local development or testing.
|
123
178
|
:param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
|
124
179
|
"""
|
125
180
|
|
@@ -132,7 +187,7 @@ class HttpSession(requests.Session):
|
|
132
187
|
|
133
188
|
start_time = time.time()
|
134
189
|
start_perf_counter = time.perf_counter()
|
135
|
-
response = self._send_request_safe_mode(method, url, **kwargs)
|
190
|
+
response = self._send_request_safe_mode(method, url, data=data, json=json, **kwargs)
|
136
191
|
response_time = (time.perf_counter() - start_perf_counter) * 1000
|
137
192
|
|
138
193
|
request_before_redirect = (response.history and response.history[0] or response).request
|
@@ -187,6 +242,80 @@ class HttpSession(requests.Session):
|
|
187
242
|
r.request = Request(method, url).prepare()
|
188
243
|
return r
|
189
244
|
|
245
|
+
def get(
|
246
|
+
self, url: str | bytes, *, data: Any | None = None, json: Any | None = None, **kwargs: Unpack[RESTKwargs]
|
247
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
248
|
+
"""Sends a GET request"""
|
249
|
+
kwargs.setdefault("allow_redirects", True)
|
250
|
+
return self.request("GET", url, data=data, json=json, **kwargs)
|
251
|
+
|
252
|
+
def options(
|
253
|
+
self,
|
254
|
+
url: str | bytes,
|
255
|
+
*,
|
256
|
+
data: Any | None = None,
|
257
|
+
json: Any | None = None,
|
258
|
+
**kwargs: Unpack[RESTKwargs],
|
259
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
260
|
+
"""Sends a OPTIONS request"""
|
261
|
+
kwargs.setdefault("allow_redirects", True)
|
262
|
+
return self.request("OPTIONS", url, data=data, json=json, **kwargs)
|
263
|
+
|
264
|
+
def head(
|
265
|
+
self,
|
266
|
+
url: str | bytes,
|
267
|
+
*,
|
268
|
+
data: Any | None = None,
|
269
|
+
json: Any | None = None,
|
270
|
+
**kwargs: Unpack[RESTKwargs],
|
271
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
272
|
+
"""Sends a HEAD request"""
|
273
|
+
kwargs.setdefault("allow_redirects", False)
|
274
|
+
return self.request("HEAD", url, data=data, json=json, **kwargs)
|
275
|
+
|
276
|
+
def post(
|
277
|
+
self,
|
278
|
+
url: str | bytes,
|
279
|
+
data: Any | None = None,
|
280
|
+
json: Any | None = None,
|
281
|
+
**kwargs: Unpack[RESTKwargs],
|
282
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
283
|
+
"""Sends a POST request"""
|
284
|
+
return self.request("POST", url, data=data, json=json, **kwargs)
|
285
|
+
|
286
|
+
def put(
|
287
|
+
self,
|
288
|
+
url: str | bytes,
|
289
|
+
data: Any | None = None,
|
290
|
+
*,
|
291
|
+
json: Any | None = None,
|
292
|
+
**kwargs: Unpack[RESTKwargs],
|
293
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
294
|
+
"""Sends a PUT request"""
|
295
|
+
return self.request("PUT", url, data=data, json=json, **kwargs)
|
296
|
+
|
297
|
+
def patch(
|
298
|
+
self,
|
299
|
+
url: str | bytes,
|
300
|
+
data: Any | None = None,
|
301
|
+
*,
|
302
|
+
json: Any | None = None,
|
303
|
+
**kwargs: Unpack[RESTKwargs],
|
304
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
305
|
+
"""Sends a PATCH request"""
|
306
|
+
return self.request("PATCH", url, data=data, json=json, **kwargs)
|
307
|
+
|
308
|
+
def delete(
|
309
|
+
self,
|
310
|
+
url: str | bytes,
|
311
|
+
*,
|
312
|
+
data: Any | None = None,
|
313
|
+
json: Any | None = None,
|
314
|
+
**kwargs: Unpack[RESTKwargs],
|
315
|
+
) -> ResponseContextManager | Response | LocustResponse:
|
316
|
+
"""Sends a DELETE request"""
|
317
|
+
return self.request("DELETE", url, data=data, json=json, **kwargs)
|
318
|
+
|
190
319
|
|
191
320
|
class ResponseContextManager(LocustResponse):
|
192
321
|
"""
|
@@ -211,7 +340,7 @@ class ResponseContextManager(LocustResponse):
|
|
211
340
|
self._entered = True
|
212
341
|
return self
|
213
342
|
|
214
|
-
def __exit__(self, exc, value, traceback):
|
343
|
+
def __exit__(self, exc, value, traceback): # type: ignore[override]
|
215
344
|
# if the user has already manually marked this response as failure or success
|
216
345
|
# we can ignore the default behaviour of letting the response code determine the outcome
|
217
346
|
if self._manual_result is not None:
|
@@ -61,7 +61,9 @@ class EventHook:
|
|
61
61
|
|
62
62
|
Example usage (in a task):
|
63
63
|
|
64
|
-
|
64
|
+
.. code-block:: python
|
65
|
+
|
66
|
+
with self.environment.events.request.measure("requestType", "requestName") as request_meta:
|
65
67
|
# do the stuff you want to measure
|
66
68
|
|
67
69
|
You can optionally add/overwrite entries in the request_meta dict and they will be passed to the request event.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.29.1.
|
3
|
+
Version: 2.29.1.dev31
|
4
4
|
Summary: Developer-friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://github.com/locustio/locust
|
@@ -36,6 +36,7 @@ Requires-Dist: pyzmq>=25.0.0
|
|
36
36
|
Requires-Dist: geventhttpclient>=2.3.1
|
37
37
|
Requires-Dist: ConfigArgParse>=1.5.5
|
38
38
|
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
39
|
+
Requires-Dist: typing_extensions>=4.6.0; python_version < "3.11"
|
39
40
|
Requires-Dist: psutil>=5.9.1
|
40
41
|
Requires-Dist: Flask-Login>=0.6.3
|
41
42
|
Requires-Dist: Flask-Cors>=3.0.10
|
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
|
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
|
{locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-disributed-headless.sh
RENAMED
File without changes
|
{locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-disributed-web.sh
RENAMED
File without changes
|
{locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/dispatch_test_scripts/run-local-headless.sh
RENAMED
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
|
{locust-2.29.1.dev4 → locust-2.29.1.dev31}/examples/sdk_session_patching/session_patch_locustfile.py
RENAMED
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
|