locust 2.29.2.dev15__tar.gz → 2.29.2.dev26__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.2.dev15 → locust-2.29.2.dev26}/PKG-INFO +1 -1
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/benchmarks/dispatch.py +98 -49
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/_version.py +2 -2
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/PKG-INFO +1 -1
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.coveragerc +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.dockerignore +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.git-blame-ignore-revs +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.gitattributes +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/CONTRIBUTING.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/workflows/stale.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.github/workflows/tests.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.gitignore +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.pre-commit-config.yaml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.readthedocs.yaml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.vscode/extensions.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.vscode/launch.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.vscode/launch_locust.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/.vscode/settings.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/CHANGELOG.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/Dockerfile +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/LICENSE +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/MANIFEST.in +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/Makefile +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/README.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/SECURITY.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/Vagrantfile +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/_static/theme-overrides.css +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/api.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/changelog.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/conf.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/configuration.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/custom-load-shape.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/developing-locust.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/extending-locust.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/extensions.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/faq.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/further-reading.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/history.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/extend_modern_web_ui_cache_stats.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/locust_workers.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/number_of_users.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/response_times.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/increase-performance.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/increasing-request-rate.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/index.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/installation.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/logging.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/quickstart.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/requirements.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/retrieving-stats.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/running-distributed.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/running-in-debugger.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/running-in-docker.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/running-without-web-ui.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/tasksets.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/testing-other-systems.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/use-as-lib.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/what-is-locust.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/add_command_line_argument.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/basic.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/browse_docs_test.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_messages.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_shape/stages.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_shape/step_load.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_wait_function.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/debugging.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/debugging_advanced.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/run-disributed-headless.sh +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/run-disributed-web.sh +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/run-local-headless.sh +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/run-local-web.sh +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/events.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/extend_web_ui.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/fast_http_locust.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/grpc_user.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/hello.proto +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/hello_server.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/grpc/locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/manual_stats_reporting.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/multiple_hosts.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/rest.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/semaphore_wait.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/stop_on_threshold.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/README.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/main.tf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/output.tf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/test_data_management.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/use_as_lib.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/vagrant/README.md +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/web_ui_auth.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/web_ui_cache_stats.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/worker_index.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/generate_changelog.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/__main__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/argument_parser.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/clients.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/contrib/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/contrib/fasthttp.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/debug.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/dispatch.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/env.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/event.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/exception.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/html.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/input_events.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/log.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/main.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/py.typed +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/rpc/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/rpc/protocol.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/runners.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/shape.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/stats.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/mock_locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/mock_logging.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_debugging.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_dispatch.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_env.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_fasthttp.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_http.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_interruptable_task.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_locust_class.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_log.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_main.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_parser.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_runners.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_stats.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_tags.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_taskratio.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_users.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_util.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_wait_time.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_web.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/testcases.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/test/util.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/inspectuser.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/sequential_taskset.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/task.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/users.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/user/wait_time.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/__init__.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/cache.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/date.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/deprecation.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/exception_handler.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/load_locustfile.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/rounding.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/util/timespan.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/web.py +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/.eslintrc +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/.gitignore +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/.prettierrc +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/auth.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dev.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dist/auth.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dist/index.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/dist/report.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/index.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/package.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/public/report.html +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/App.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/App.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/FallbackRender/FallbackRender.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/FallbackRender/FallbackRender.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LogViewer/logUtils.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/SwarmUserClassPicker.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmForm/tests/SwarmUserClassPicker.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Table/Table.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Table/Table.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/ViewColumnSelector/ViewColumnSelector.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/constants/auth.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/constants/logs.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/constants/swarm.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/global.d.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/tests/useSelecteViewColumns.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/useNotifications.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/useSelectViewColumns.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/index.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/Auth.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/Dashboard.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/HtmlReport.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/tests/Auth.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/tests/Dashboard.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/pages/tests/HtmlReport.test.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/test/constants.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/test/mocks/statsRequest.mock.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/test/setup.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/test/testUtils.tsx +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/types/auth.types.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/types/ui.types.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/array.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/date.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/string.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/tests/number.test.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/tests/object.test.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/tests/string.test.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/tests/url.test.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/tsconfig.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/vite.config.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/vitest.config.ts +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust/webui/yarn.lock +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/SOURCES.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/requires.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/locust.egg-info/top_level.txt +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/package.json +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/pyproject.toml +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/setup.cfg +0 -0
- {locust-2.29.2.dev15 → locust-2.29.2.dev26}/tox.ini +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
"""
|
2
2
|
This file contains a benchmark to validate the performance of Locust itself.
|
3
3
|
More precisely, the performance of the `UsersDispatcher` class which is responsible
|
4
|
-
for calculating the distribution of users on each
|
4
|
+
for calculating the distribution of users on each worker. This benchmark is to be used
|
5
5
|
by people working on Locust's development.
|
6
6
|
"""
|
7
7
|
|
@@ -9,105 +9,146 @@ from locust import User
|
|
9
9
|
from locust.dispatch import UsersDispatcher
|
10
10
|
from locust.runners import WorkerNode
|
11
11
|
|
12
|
+
import argparse
|
13
|
+
import gc
|
12
14
|
import itertools
|
13
15
|
import statistics
|
14
16
|
import time
|
15
17
|
|
16
18
|
from prettytable import PrettyTable
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
78, 76, 28, 62, 69, 5, 55, 37, 2, 97,
|
22
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
23
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
24
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
25
|
-
5, 55, 37, 2, 97, 41, 33, 19, 19, 34,
|
26
|
-
78, 76, 28, 62, 69, 5, 55, 37, 2, 97,
|
27
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
28
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
29
|
-
41, 33, 19, 19, 34, 78, 76, 28, 62, 69,
|
30
|
-
]
|
31
|
-
# fmt: on
|
20
|
+
NUMBER_OF_USER_CLASSES: int = 1000
|
21
|
+
USER_CLASSES: list[type[User]] = []
|
22
|
+
WEIGHTS = list(range(1, NUMBER_OF_USER_CLASSES + 1))
|
32
23
|
|
33
24
|
for i, x in enumerate(WEIGHTS):
|
34
|
-
exec(f"class User{i
|
25
|
+
exec(f"class User{i}(User): weight = {x}")
|
35
26
|
|
36
27
|
# Equivalent to:
|
37
28
|
#
|
38
|
-
# class
|
29
|
+
# class User0(User):
|
39
30
|
# weight = 5
|
40
31
|
#
|
41
|
-
# class
|
32
|
+
# class User1(User):
|
42
33
|
# weight = 55
|
43
34
|
# .
|
44
35
|
# .
|
45
36
|
# .
|
46
|
-
# class User100(User):
|
47
|
-
# weight = 69
|
48
37
|
|
49
|
-
exec("USER_CLASSES = [" + ",".join(f"User{i
|
38
|
+
exec("USER_CLASSES = [" + ",".join(f"User{i}" for i in range(len(WEIGHTS))) + "]")
|
50
39
|
# Equivalent to:
|
51
40
|
#
|
52
41
|
# USER_CLASSES = [
|
42
|
+
# User0,
|
53
43
|
# User1,
|
54
|
-
# User2,
|
55
44
|
# .
|
56
45
|
# .
|
57
46
|
# .
|
58
|
-
# User100,
|
59
47
|
# ]
|
60
48
|
|
61
49
|
|
62
50
|
if __name__ == "__main__":
|
51
|
+
parser = argparse.ArgumentParser()
|
52
|
+
parser.add_argument("-f", "--full-benchmark", action="store_true", help="run benchmark on full test matrix")
|
53
|
+
parser.add_argument(
|
54
|
+
"-i",
|
55
|
+
"--include-fixed-users",
|
56
|
+
action="store_true",
|
57
|
+
help="add test cases when 50 percent of users use User.fixed_count instead of User.weight",
|
58
|
+
)
|
59
|
+
parser.add_argument("-r", "--repeat", default=1, type=int, help="number of test cases with the same parameters")
|
60
|
+
parser.add_argument("-s", "--save-output", action="store_true", help="save test results to files")
|
61
|
+
args = parser.parse_args()
|
62
|
+
|
63
63
|
now = time.time()
|
64
64
|
|
65
|
-
worker_count_cases = [10, 100,
|
66
|
-
user_count_cases = [
|
67
|
-
number_of_user_classes_cases = [1,
|
68
|
-
spawn_rate_cases = [
|
65
|
+
worker_count_cases = [10, 100, 1000]
|
66
|
+
user_count_cases = [10_000, 100_000, 1_000_000]
|
67
|
+
number_of_user_classes_cases = [1, 30, 1000]
|
68
|
+
spawn_rate_cases = [100, 10_000]
|
69
|
+
fixed_count_cases = [False, True] if args.include_fixed_users else [False]
|
70
|
+
# [0% fixed_count users, 50% fixed_count users] if args.mixed_user_types else [0% fixed_count users]
|
71
|
+
repeat_cases = list(range(1, args.repeat + 1))
|
72
|
+
|
73
|
+
if not args.full_benchmark:
|
74
|
+
worker_count_cases = [max(worker_count_cases)]
|
75
|
+
user_count_cases = [max(user_count_cases)]
|
76
|
+
number_of_user_classes_cases = [max(number_of_user_classes_cases)]
|
77
|
+
spawn_rate_cases = [max(spawn_rate_cases)]
|
69
78
|
|
70
79
|
case_count = (
|
71
|
-
len(worker_count_cases)
|
80
|
+
len(worker_count_cases)
|
81
|
+
* len(user_count_cases)
|
82
|
+
* len(number_of_user_classes_cases)
|
83
|
+
* len(spawn_rate_cases)
|
84
|
+
* len(fixed_count_cases)
|
85
|
+
* len(repeat_cases)
|
72
86
|
)
|
73
87
|
|
74
88
|
results = {}
|
75
89
|
|
76
90
|
try:
|
77
|
-
for case_index, (
|
78
|
-
|
91
|
+
for case_index, (
|
92
|
+
worker_count,
|
93
|
+
user_count,
|
94
|
+
number_of_user_classes,
|
95
|
+
spawn_rate,
|
96
|
+
fixed_users,
|
97
|
+
iteration,
|
98
|
+
) in enumerate(
|
99
|
+
itertools.product(
|
100
|
+
worker_count_cases,
|
101
|
+
user_count_cases,
|
102
|
+
number_of_user_classes_cases,
|
103
|
+
spawn_rate_cases,
|
104
|
+
fixed_count_cases,
|
105
|
+
repeat_cases,
|
106
|
+
)
|
79
107
|
):
|
80
|
-
|
81
|
-
|
82
|
-
|
108
|
+
workers = [WorkerNode(str(i)) for i in range(worker_count)]
|
109
|
+
if fixed_users:
|
110
|
+
sum_fixed_weight = 0
|
111
|
+
for j in range(0, number_of_user_classes, 2):
|
112
|
+
sum_fixed_weight += USER_CLASSES[j].weight
|
83
113
|
|
84
|
-
|
114
|
+
for j in range(0, number_of_user_classes, 2): # set fixed_weights for 50% of users
|
115
|
+
USER_CLASSES[j].fixed_count = max(1, USER_CLASSES[j].weight // sum_fixed_weight) # type: ignore # assigned .weight is int
|
85
116
|
|
86
|
-
ts = time.
|
117
|
+
ts = time.process_time()
|
87
118
|
users_dispatcher = UsersDispatcher(
|
88
119
|
worker_nodes=workers,
|
89
|
-
user_classes=USER_CLASSES[:number_of_user_classes],
|
120
|
+
user_classes=USER_CLASSES[:number_of_user_classes],
|
90
121
|
)
|
91
|
-
instantiate_duration = time.
|
122
|
+
instantiate_duration = time.process_time() - ts
|
92
123
|
|
93
124
|
# Ramp-up
|
94
|
-
|
125
|
+
gc.disable()
|
126
|
+
ts = time.process_time()
|
95
127
|
users_dispatcher.new_dispatch(target_user_count=user_count, spawn_rate=spawn_rate)
|
96
|
-
new_dispatch_ramp_up_duration = time.
|
128
|
+
new_dispatch_ramp_up_duration = time.process_time() - ts
|
129
|
+
gc.enable()
|
130
|
+
|
97
131
|
assert len(users_dispatcher.dispatch_iteration_durations) == 0
|
98
132
|
users_dispatcher._wait_between_dispatch = 0
|
99
133
|
all_dispatched_users_ramp_up = list(users_dispatcher)
|
100
134
|
dispatch_iteration_durations_ramp_up = users_dispatcher.dispatch_iteration_durations[:]
|
101
135
|
|
102
136
|
# Ramp-down
|
103
|
-
|
137
|
+
gc.disable()
|
138
|
+
ts = time.process_time()
|
104
139
|
users_dispatcher.new_dispatch(target_user_count=0, spawn_rate=spawn_rate)
|
105
|
-
new_dispatch_ramp_down_duration = time.
|
140
|
+
new_dispatch_ramp_down_duration = time.process_time() - ts
|
141
|
+
gc.enable()
|
142
|
+
|
106
143
|
assert len(users_dispatcher.dispatch_iteration_durations) == 0
|
107
144
|
users_dispatcher._wait_between_dispatch = 0
|
108
145
|
all_dispatched_users_ramp_down = list(users_dispatcher)
|
109
146
|
dispatch_iteration_durations_ramp_down = users_dispatcher.dispatch_iteration_durations[:]
|
110
147
|
|
148
|
+
if fixed_users:
|
149
|
+
for j in range(0, number_of_user_classes, 2):
|
150
|
+
USER_CLASSES[j].fixed_count = None
|
151
|
+
|
111
152
|
cpu_ramp_up = "{:3.3f}/{:3.3f}/{:3.3f}".format( # noqa: UP032
|
112
153
|
1000 * statistics.mean(dispatch_iteration_durations_ramp_up),
|
113
154
|
1000 * min(dispatch_iteration_durations_ramp_up),
|
@@ -135,7 +176,10 @@ if __name__ == "__main__":
|
|
135
176
|
)
|
136
177
|
)
|
137
178
|
|
138
|
-
results[(worker_count, user_count, number_of_user_classes, spawn_rate)] = (
|
179
|
+
results[(worker_count, user_count, number_of_user_classes, spawn_rate, fixed_users, iteration)] = (
|
180
|
+
cpu_ramp_up,
|
181
|
+
cpu_ramp_down,
|
182
|
+
)
|
139
183
|
|
140
184
|
finally:
|
141
185
|
table = PrettyTable()
|
@@ -144,6 +188,8 @@ if __name__ == "__main__":
|
|
144
188
|
"Users",
|
145
189
|
"User Classes",
|
146
190
|
"Spawn Rate",
|
191
|
+
"Fixed Users",
|
192
|
+
"Iteration",
|
147
193
|
"Ramp-Up (avg/min/max) (ms)",
|
148
194
|
"Ramp-Down (avg/min/max) (ms)",
|
149
195
|
]
|
@@ -151,6 +197,8 @@ if __name__ == "__main__":
|
|
151
197
|
table.align["Users"] = "l"
|
152
198
|
table.align["User Classes"] = "l"
|
153
199
|
table.align["Spawn Rate"] = "l"
|
200
|
+
table.align["Fixed Users"] = "l"
|
201
|
+
table.align["Iteration"] = "c"
|
154
202
|
table.align["Ramp-Up (avg/min/max) (ms)"] = "c"
|
155
203
|
table.align["Ramp-Down (avg/min/max) (ms)"] = "c"
|
156
204
|
table.add_rows(
|
@@ -160,22 +208,23 @@ if __name__ == "__main__":
|
|
160
208
|
f"{user_count:,}",
|
161
209
|
number_of_user_classes,
|
162
210
|
f"{spawn_rate:,}",
|
211
|
+
"50%" if fixed_users else "0%",
|
212
|
+
iteration,
|
163
213
|
cpu_ramp_up,
|
164
214
|
cpu_ramp_down,
|
165
215
|
]
|
166
|
-
for (worker_count, user_count, number_of_user_classes, spawn_rate), (
|
216
|
+
for (worker_count, user_count, number_of_user_classes, spawn_rate, fixed_users, iteration), (
|
167
217
|
cpu_ramp_up,
|
168
218
|
cpu_ramp_down,
|
169
219
|
) in results.items()
|
170
220
|
]
|
171
221
|
)
|
172
222
|
print()
|
173
|
-
print()
|
174
|
-
print()
|
175
223
|
print(table)
|
176
224
|
|
177
|
-
|
178
|
-
|
225
|
+
if args.save_output:
|
226
|
+
with open(f"results-dispatch-benchmarks-{int(now)}.txt", "w") as file:
|
227
|
+
file.write(table.get_string())
|
179
228
|
|
180
|
-
|
181
|
-
|
229
|
+
with open(f"results-dispatch-benchmarks-{int(now)}.json", "w") as file:
|
230
|
+
file.write(table.get_json_string())
|
@@ -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.2.
|
16
|
-
__version_tuple__ = version_tuple = (2, 29, 2, '
|
15
|
+
__version__ = version = '2.29.2.dev26'
|
16
|
+
__version_tuple__ = version_tuple = (2, 29, 2, 'dev26')
|
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.2.dev15 → locust-2.29.2.dev26}/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
|
File without changes
|
File without changes
|
{locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{locust-2.29.2.dev15 → locust-2.29.2.dev26}/examples/dispatch_test_scripts/run-disributed-web.sh
RENAMED
File without changes
|
{locust-2.29.2.dev15 → locust-2.29.2.dev26}/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
|
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
|