locust 2.27.1.dev12__tar.gz → 2.27.1.dev27__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.27.1.dev12 → locust-2.27.1.dev27}/PKG-INFO +4 -4
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/README.md +1 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/custom-load-shape.rst +11 -14
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/what-is-locust.rst +1 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/_version.py +2 -2
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/argument_parser.py +2 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/html.py +2 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/main.py +3 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/stats.py +21 -17
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/web.py +4 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/PKG-INFO +4 -4
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/SOURCES.txt +6 -6
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/requires.txt +1 -1
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/pyproject.toml +2 -2
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.coveragerc +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.dockerignore +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.git-blame-ignore-revs +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.gitattributes +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/CONTRIBUTING.md +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/workflows/stale.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.github/workflows/tests.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.gitignore +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.pre-commit-config.yaml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.readthedocs.yaml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.vscode/extensions.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.vscode/launch.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.vscode/launch_locust.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/.vscode/settings.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/CHANGELOG.md +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/Dockerfile +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/LICENSE +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/MANIFEST.in +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/Makefile +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/README +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/SECURITY.md +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/Vagrantfile +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/benchmarks/dispatch.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/_static/theme-overrides.css +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/api.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/changelog.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/conf.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/configuration.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/developing-locust.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/extending-locust.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/further-reading.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/history.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/extend_modern_web_ui_cache_stats.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/locust_workers.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/number_of_users.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/response_times.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/increase-performance.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/index.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/installation.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/logging.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/quickstart.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/requirements.txt +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/retrieving-stats.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/running-distributed.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/running-in-debugger.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/running-in-docker.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/running-without-web-ui.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/tasksets.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/testing-other-systems.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/use-as-lib.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/add_command_line_argument.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/basic.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/browse_docs_test.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_messages.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_shape/stages.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_shape/step_load.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_wait_function.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/debugging.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/debugging_advanced.py +0 -0
- {locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/locustfile.py +0 -0
- {locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/run-disributed-headless.sh +0 -0
- {locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/run-disributed-web.sh +0 -0
- {locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/run-local-headless.sh +0 -0
- {locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/run-local-web.sh +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/events.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/extend_web_ui.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/fast_http_locust.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/grpc_user.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/hello.proto +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/hello_server.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/grpc/locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/manual_stats_reporting.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/multiple_hosts.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/rest.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/semaphore_wait.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/stop_on_threshold.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/README.md +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/main.tf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/output.tf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/test_data_management.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/use_as_lib.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/vagrant/README.md +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/web_ui_auth.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/web_ui_cache_stats.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/examples/worker_index.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/generate_changelog.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/__main__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/clients.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/contrib/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/contrib/fasthttp.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/debug.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/dispatch.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/env.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/event.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/exception.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/input_events.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/log.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/py.typed +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/rpc/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/rpc/protocol.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/runners.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/shape.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/mock_locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/mock_logging.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_debugging.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_dispatch.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_env.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_fasthttp.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_http.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_interruptable_task.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_locust_class.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_log.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_main.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_parser.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_runners.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_stats.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_tags.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_taskratio.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_users.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_util.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_wait_time.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_web.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/testcases.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/test/util.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/inspectuser.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/sequential_taskset.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/task.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/users.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/user/wait_time.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/__init__.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/cache.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/deprecation.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/exception_handler.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/load_locustfile.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/rounding.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/util/timespan.py +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/.eslintrc +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/.gitignore +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/.prettierrc +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/auth.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dev.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/assets/index-941b6e82.js +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/auth.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/index.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/dist/report.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/index.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/package.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/public/report.html +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/App.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/App.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/FallbackRender/FallbackRender.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/FallbackRender/FallbackRender.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/SwarmUserClassPicker.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmForm/tests/SwarmUserClassPicker.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Table/Table.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/constants/auth.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/constants/swarm.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/global.d.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/tests/useSelecteViewColumns.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/useNotifications.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/useSelectViewColumns.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/index.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/Auth.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/Dashboard.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/HtmlReport.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/tests/Auth.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/tests/Dashboard.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/pages/tests/HtmlReport.test.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/test/constants.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/test/mocks/statsRequest.mock.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/test/setup.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/test/testUtils.tsx +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/types/auth.types.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/tests/number.test.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/tests/object.test.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/tests/string.test.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/tests/url.test.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/tsconfig.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/vite.config.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/vitest.config.ts +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust/webui/yarn.lock +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/locust.egg-info/top_level.txt +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/package.json +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/setup.cfg +0 -0
- {locust-2.27.1.dev12 → locust-2.27.1.dev27}/tox.ini +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.27.1.
|
4
|
-
Summary: Developer
|
3
|
+
Version: 2.27.1.dev27
|
4
|
+
Summary: Developer-friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://github.com/locustio/locust
|
7
7
|
Project-URL: Documentation, https://docs.locust.io/
|
@@ -32,7 +32,7 @@ Requires-Dist: Werkzeug>=2.0.0
|
|
32
32
|
Requires-Dist: requests>=2.26.0
|
33
33
|
Requires-Dist: msgpack>=1.0.0
|
34
34
|
Requires-Dist: pyzmq>=25.0.0
|
35
|
-
Requires-Dist: geventhttpclient
|
35
|
+
Requires-Dist: geventhttpclient>=2.3.1
|
36
36
|
Requires-Dist: ConfigArgParse>=1.5.5
|
37
37
|
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
38
38
|
Requires-Dist: psutil>=5.9.1
|
@@ -49,7 +49,7 @@ Requires-Dist: pywin32; platform_system == "Windows"
|
|
49
49
|
[](https://github.com/locustio/locust/graphs/contributors)
|
50
50
|
[](https://github.com/support-ukraine/support-ukraine)
|
51
51
|
|
52
|
-
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer
|
52
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer-friendly approach lets you define your tests in regular Python code.
|
53
53
|
|
54
54
|
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.
|
55
55
|
|
@@ -7,7 +7,7 @@
|
|
7
7
|
[](https://github.com/locustio/locust/graphs/contributors)
|
8
8
|
[](https://github.com/support-ukraine/support-ukraine)
|
9
9
|
|
10
|
-
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer
|
10
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer-friendly approach lets you define your tests in regular Python code.
|
11
11
|
|
12
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
13
|
|
@@ -98,26 +98,23 @@ This shape would create create in the first 10 seconds 10 User of ``UserA``. In
|
|
98
98
|
|
99
99
|
.. _use-common-options:
|
100
100
|
|
101
|
-
Reusing
|
102
|
-
|
101
|
+
Reusing common options in custom shapes
|
102
|
+
---------------------------------------
|
103
103
|
|
104
|
-
|
105
|
-
- `--run-time`
|
106
|
-
- `--spawn-rate`
|
107
|
-
- `--users`
|
108
|
-
|
109
|
-
|
110
|
-
If you need one or all of those parameters, you can force locust to accept them by setting the `use_common_options` attribute to `True`:
|
104
|
+
When using shapes, the the *Users*, *Spawn Rate* and *Run Time* options will be hidden from the UI, and if you specify them on command line Locust will log a warning. This is because those options dont directly apply to shapes, and specifying them might be a mistake.
|
111
105
|
|
106
|
+
If you really want to combine a shape with these options, set the ``use_common_options`` attribute and access them from ``self.runner.environment.parsed_options``:
|
112
107
|
|
113
108
|
.. code-block:: python
|
114
109
|
|
115
110
|
class MyCustomShape(LoadTestShape):
|
116
|
-
|
117
111
|
use_common_options = True
|
118
|
-
|
112
|
+
|
119
113
|
def tick(self):
|
120
|
-
|
121
|
-
|
122
|
-
|
114
|
+
run_time = self.get_run_time()
|
115
|
+
if run_time < self.runner.environment.parsed_options.run_time:
|
116
|
+
# User count rounded to nearest hundred, just like in previous example
|
117
|
+
user_count = round(run_time, -2)
|
118
|
+
return (user_count, self.runner.environment.parsed_options.spawn_rate)
|
119
|
+
|
123
120
|
return None
|
@@ -2,7 +2,7 @@
|
|
2
2
|
What is Locust?
|
3
3
|
===============================
|
4
4
|
|
5
|
-
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer
|
5
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer-friendly approach lets you 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
|
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '2.27.1.
|
16
|
-
__version_tuple__ = version_tuple = (2, 27, 1, '
|
15
|
+
__version__ = version = '2.27.1.dev27'
|
16
|
+
__version_tuple__ = version_tuple = (2, 27, 1, 'dev27')
|
@@ -9,6 +9,7 @@ import atexit
|
|
9
9
|
import os
|
10
10
|
import platform
|
11
11
|
import socket
|
12
|
+
import ssl
|
12
13
|
import sys
|
13
14
|
import tempfile
|
14
15
|
import textwrap
|
@@ -705,7 +706,7 @@ Typically ONLY these options (and --locustfile) need to be specified on workers,
|
|
705
706
|
"-V",
|
706
707
|
action="version",
|
707
708
|
help="Show program's version number and exit",
|
708
|
-
version=f"locust {version} from {os.path.dirname(__file__)} (
|
709
|
+
version=f"locust {version} from {os.path.dirname(__file__)} (Python {platform.python_version()}, {' '.join(ssl.OPENSSL_VERSION.split(' ')[0:2])})",
|
709
710
|
)
|
710
711
|
other_group.add_argument(
|
711
712
|
"--exit-code-on-error",
|
@@ -10,7 +10,7 @@ from jinja2 import Environment, FileSystemLoader
|
|
10
10
|
|
11
11
|
from . import stats as stats_module
|
12
12
|
from .runners import STATE_STOPPED, STATE_STOPPING, MasterRunner
|
13
|
-
from .stats import sort_stats
|
13
|
+
from .stats import sort_stats, update_stats_history
|
14
14
|
from .user.inspectuser import get_ratio
|
15
15
|
|
16
16
|
PERCENTILES_FOR_HTML_REPORT = [0.50, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99, 1.0]
|
@@ -54,6 +54,7 @@ def get_html_report(
|
|
54
54
|
{**exc, "nodes": ", ".join(exc["nodes"])} for exc in environment.runner.exceptions.values()
|
55
55
|
]
|
56
56
|
|
57
|
+
update_stats_history(environment.runner)
|
57
58
|
history = stats.history
|
58
59
|
|
59
60
|
static_js = []
|
@@ -434,7 +434,9 @@ See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-numb
|
|
434
434
|
try:
|
435
435
|
options.run_time = parse_timespan(options.run_time)
|
436
436
|
except ValueError:
|
437
|
-
logger.error(
|
437
|
+
logger.error(
|
438
|
+
f"Invalid --run-time argument ({options.run_time}), accepted formats are for example 120, 120s, 2m, 3h, 3h30m10s."
|
439
|
+
)
|
438
440
|
sys.exit(1)
|
439
441
|
|
440
442
|
if options.csv_prefix:
|
@@ -907,28 +907,32 @@ def sort_stats(stats: dict[Any, S]) -> list[S]:
|
|
907
907
|
return [stats[key] for key in sorted(stats.keys())]
|
908
908
|
|
909
909
|
|
910
|
+
def update_stats_history(runner: Runner) -> None:
|
911
|
+
stats = runner.stats
|
912
|
+
current_response_time_percentiles = {
|
913
|
+
f"response_time_percentile_{percentile}": stats.total.get_current_response_time_percentile(percentile) or 0
|
914
|
+
for percentile in PERCENTILES_TO_CHART
|
915
|
+
}
|
916
|
+
|
917
|
+
r = {
|
918
|
+
**current_response_time_percentiles,
|
919
|
+
"time": datetime.datetime.now(tz=datetime.timezone.utc).strftime("%H:%M:%S"),
|
920
|
+
"current_rps": stats.total.current_rps or 0,
|
921
|
+
"current_fail_per_sec": stats.total.current_fail_per_sec or 0,
|
922
|
+
"total_avg_response_time": stats.total.avg_response_time,
|
923
|
+
"user_count": runner.user_count or 0,
|
924
|
+
}
|
925
|
+
stats.history.append(r)
|
926
|
+
|
927
|
+
|
910
928
|
def stats_history(runner: Runner) -> None:
|
911
929
|
"""Save current stats info to history for charts of report."""
|
912
930
|
while True:
|
913
|
-
|
914
|
-
if not stats.total.use_response_times_cache:
|
931
|
+
if not runner.stats.total.use_response_times_cache:
|
915
932
|
break
|
916
933
|
if runner.state != "stopped":
|
917
|
-
|
918
|
-
|
919
|
-
or 0
|
920
|
-
for percentile in PERCENTILES_TO_CHART
|
921
|
-
}
|
922
|
-
|
923
|
-
r = {
|
924
|
-
**current_response_time_percentiles,
|
925
|
-
"time": datetime.datetime.now(tz=datetime.timezone.utc).strftime("%H:%M:%S"),
|
926
|
-
"current_rps": stats.total.current_rps or 0,
|
927
|
-
"current_fail_per_sec": stats.total.current_fail_per_sec or 0,
|
928
|
-
"total_avg_response_time": stats.total.avg_response_time,
|
929
|
-
"user_count": runner.user_count or 0,
|
930
|
-
}
|
931
|
-
stats.history.append(r)
|
934
|
+
update_stats_history(runner)
|
935
|
+
|
932
936
|
gevent.sleep(HISTORY_STATS_INTERVAL_SEC)
|
933
937
|
|
934
938
|
|
@@ -211,11 +211,14 @@ class WebUI:
|
|
211
211
|
for key, value in request.form.items():
|
212
212
|
if key == "user_count": # if we just renamed this field to "users" we wouldn't need this
|
213
213
|
user_count = int(value)
|
214
|
+
parsed_options_dict["users"] = user_count
|
214
215
|
elif key == "spawn_rate":
|
215
216
|
spawn_rate = float(value)
|
217
|
+
parsed_options_dict[key] = spawn_rate
|
216
218
|
elif key == "host":
|
217
219
|
# Replace < > to guard against XSS
|
218
220
|
environment.host = str(request.form["host"]).replace("<", "").replace(">", "")
|
221
|
+
parsed_options_dict[key] = environment.host
|
219
222
|
elif key == "user_classes":
|
220
223
|
# Set environment.parsed_options.user_classes to the selected user_classes
|
221
224
|
parsed_options_dict[key] = request.form.getlist("user_classes")
|
@@ -224,6 +227,7 @@ class WebUI:
|
|
224
227
|
continue
|
225
228
|
try:
|
226
229
|
run_time = parse_timespan(value)
|
230
|
+
parsed_options_dict[key] = run_time
|
227
231
|
except ValueError:
|
228
232
|
err_msg = "Valid run_time formats are : 20, 20s, 3m, 2h, 1h20m, 3h30m10s, etc."
|
229
233
|
logger.error(err_msg)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: locust
|
3
|
-
Version: 2.27.1.
|
4
|
-
Summary: Developer
|
3
|
+
Version: 2.27.1.dev27
|
4
|
+
Summary: Developer-friendly load testing framework
|
5
5
|
License: MIT
|
6
6
|
Project-URL: Homepage, https://github.com/locustio/locust
|
7
7
|
Project-URL: Documentation, https://docs.locust.io/
|
@@ -32,7 +32,7 @@ Requires-Dist: Werkzeug>=2.0.0
|
|
32
32
|
Requires-Dist: requests>=2.26.0
|
33
33
|
Requires-Dist: msgpack>=1.0.0
|
34
34
|
Requires-Dist: pyzmq>=25.0.0
|
35
|
-
Requires-Dist: geventhttpclient
|
35
|
+
Requires-Dist: geventhttpclient>=2.3.1
|
36
36
|
Requires-Dist: ConfigArgParse>=1.5.5
|
37
37
|
Requires-Dist: tomli>=1.1.0; python_version < "3.11"
|
38
38
|
Requires-Dist: psutil>=5.9.1
|
@@ -49,7 +49,7 @@ Requires-Dist: pywin32; platform_system == "Windows"
|
|
49
49
|
[](https://github.com/locustio/locust/graphs/contributors)
|
50
50
|
[](https://github.com/support-ukraine/support-ukraine)
|
51
51
|
|
52
|
-
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer
|
52
|
+
Locust is an open source performance/load testing tool for HTTP and other protocols. Its developer-friendly approach lets you define your tests in regular Python code.
|
53
53
|
|
54
54
|
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.
|
55
55
|
|
@@ -94,6 +94,11 @@ examples/custom_shape/step_load.py
|
|
94
94
|
examples/custom_shape/wait_user_count.py
|
95
95
|
examples/custom_xmlrpc_client/server.py
|
96
96
|
examples/custom_xmlrpc_client/xmlrpc_locustfile.py
|
97
|
+
examples/dispatch_test_scripts/locustfile.py
|
98
|
+
examples/dispatch_test_scripts/run-disributed-headless.sh
|
99
|
+
examples/dispatch_test_scripts/run-disributed-web.sh
|
100
|
+
examples/dispatch_test_scripts/run-local-headless.sh
|
101
|
+
examples/dispatch_test_scripts/run-local-web.sh
|
97
102
|
examples/docker-compose/docker-compose.yml
|
98
103
|
examples/grpc/grpc_user.py
|
99
104
|
examples/grpc/hello.proto
|
@@ -312,9 +317,4 @@ locust/webui/src/utils/url.ts
|
|
312
317
|
locust/webui/src/utils/tests/number.test.ts
|
313
318
|
locust/webui/src/utils/tests/object.test.ts
|
314
319
|
locust/webui/src/utils/tests/string.test.ts
|
315
|
-
locust/webui/src/utils/tests/url.test.ts
|
316
|
-
scripts/locustfile.py
|
317
|
-
scripts/run-disributed-headless.sh
|
318
|
-
scripts/run-disributed-web.sh
|
319
|
-
scripts/run-local-headless.sh
|
320
|
-
scripts/run-local-web.sh
|
320
|
+
locust/webui/src/utils/tests/url.test.ts
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
5
5
|
[project]
|
6
6
|
name = "locust"
|
7
7
|
license = { text = "MIT" }
|
8
|
-
description = "Developer
|
8
|
+
description = "Developer-friendly load testing framework"
|
9
9
|
dynamic = ["version"]
|
10
10
|
requires-python = ">=3.9"
|
11
11
|
dependencies = [
|
@@ -15,7 +15,7 @@ dependencies = [
|
|
15
15
|
"requests >=2.26.0",
|
16
16
|
"msgpack >=1.0.0",
|
17
17
|
"pyzmq >=25.0.0",
|
18
|
-
"geventhttpclient
|
18
|
+
"geventhttpclient >=2.3.1",
|
19
19
|
"ConfigArgParse >=1.5.5",
|
20
20
|
"tomli >=1.1.0; python_version<'3.11'",
|
21
21
|
"psutil >=5.9.1",
|
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.27.1.dev12 → locust-2.27.1.dev27}/docs/images/extend_modern_web_ui_cache_stats.png
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
|
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.27.1.dev12 → locust-2.27.1.dev27}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/locustfile.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{locust-2.27.1.dev12/scripts → locust-2.27.1.dev27/examples/dispatch_test_scripts}/run-local-web.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
|
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
|