locust 2.18.4.dev6__tar.gz → 2.18.4.dev17__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.
Potentially problematic release.
This version of locust might be problematic. Click here for more details.
- {locust-2.18.4.dev6/locust.egg-info → locust-2.18.4.dev17}/PKG-INFO +1 -1
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/_version.py +2 -2
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/runners.py +4 -3
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/stats.py +2 -2
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_runners.py +61 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/web.py +4 -1
- locust-2.18.4.dev6/locust/webui/dist/assets/index-9996beb6.js → locust-2.18.4.dev17/locust/webui/dist/assets/index-8ad54eaa.js +61 -60
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/dist/index.html +1 -1
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/LineChart/LineChart.tsx +41 -24
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +1 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Table/Table.tsx +8 -3
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +2 -1
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/hooks/useSwarmUi.ts +62 -50
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/slice/swarm.slice.ts +1 -5
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/types/ui.types.ts +1 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/utils/string.ts +13 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17/locust.egg-info}/PKG-INFO +1 -1
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/SOURCES.txt +1 -1
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.coveragerc +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.dockerignore +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.git-blame-ignore-revs +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.gitattributes +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/CONTRIBUTING.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/workflows/stale.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.github/workflows/tests.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.gitignore +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.readthedocs.yaml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.vscode/launch.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.vscode/launch_locust.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/.vscode/settings.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/CHANGELOG.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/Dockerfile +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/LICENSE +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/MANIFEST.in +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/Makefile +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/README +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/README.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/SECURITY.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/Vagrantfile +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/benchmarks/dispatch.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/_static/theme-overrides.css +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/api.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/changelog.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/conf.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/configuration.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/custom-load-shape.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/developing-locust.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/extending-locust.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/further-reading.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/history.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/modern-webui-splash-screenshot.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/number_of_users.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/response_times.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/total_requests_per_second.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/userclass_picker_example.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/webui-running-statistics.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/images/webui-splash-screenshot.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/increase-performance.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/index.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/installation.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/logging.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/quickstart.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/requirements.txt +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/retrieving-stats.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/running-cloud-integration.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/running-distributed.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/running-in-debugger.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/running-in-docker.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/running-without-web-ui.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/tasksets.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/testing-other-systems.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/use-as-lib.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/what-is-locust.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/docs/writing-a-locustfile.rst +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/add_command_line_argument.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/basic.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/browse_docs_sequence_test.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/browse_docs_test.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_messages.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_shape/double_wave.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_shape/stages.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_shape/staging_user_classes.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_shape/step_load.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_shape/wait_user_count.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_wait_function.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_xmlrpc_client/server.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/debugging.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/debugging_advanced.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/docker-compose/docker-compose.yml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/dynamic_user_credentials.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/events.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/extend_modern_web_ui.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/extend_web_ui/extend.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/extend_web_ui/static/extend.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/extend_web_ui/templates/extend.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/fast_http_locust.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/grpc_user.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/hello.proto +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/hello_pb2.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/hello_pb2_grpc.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/hello_server.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/grpc/locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/manual_stats_reporting.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/multiple_hosts.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/nested_inline_tasksets.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/rest.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/semaphore_wait.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/stop_on_threshold.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/README.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/data_subnet.tf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/main.tf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/output.tf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/plan/basic.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/provisioner.tf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/terraform/aws/variables.tf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/test_data_management.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/use_as_lib.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/vagrant/README.md +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/vagrant/supervisord.conf +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/examples/worker_index.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/generate_changelog.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/__main__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/argument_parser.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/clients.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/contrib/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/contrib/fasthttp.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/debug.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/dispatch.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/env.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/event.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/exception.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/html.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/input_events.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/log.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/main.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/py.typed +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/rpc/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/rpc/protocol.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/shape.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/chart.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/css/application.css +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/css/application.css.map +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/css/tables.css +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/css/tables.css.map +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/echarts.common.min.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/favicon.ico +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/logo.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/ui-screenshot-charts.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/ui-screenshot-start-test.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/ui-screenshot-stats.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/img/ui-screenshot-workers.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/jquery-1.11.3.min.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/jquery.jqote2.min.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/jquery.tools.min.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/locust.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/sass/_base.sass +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/sass/_mixins.sass +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/sass/application.sass +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/sass/tables.sass +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/tasks.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/static/vintage.js +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/templates/index.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/templates/report.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/templates/stats_data.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/fake_module1_for_env_test.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/fake_module2_for_env_test.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/mock_locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/mock_logging.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_debugging.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_dispatch.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_env.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_fasthttp.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_http.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_load_locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_locust_class.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_log.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_main.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_old_wait_api.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_parser.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_sequential_taskset.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_stats.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_tags.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_taskratio.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_users.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_util.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_wait_time.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_web.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/test_zmqrpc.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/testcases.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/test/util.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/inspectuser.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/sequential_taskset.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/task.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/users.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/user/wait_time.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/__init__.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/cache.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/deprecation.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/exception_handler.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/load_locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/rounding.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/util/timespan.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/.eslintrc +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/.gitignore +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/.prettierrc +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/dev.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/dist/assets/favicon.ico +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/dist/assets/logo.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/dist/report.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/index.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/package.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/public/assets/favicon.ico +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/public/assets/logo.png +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/public/report.html +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/App.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/Report.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Form/Form.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Form/Select.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Layout.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Modal/Modal.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Reports/Reports.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/SwarmForm/SwarmCustomParmeters.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/SwarnRatios/SwarmRatios.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/constants/swarm.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/constants/theme.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/global.d.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/hooks/useAsync.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/hooks/useInterval.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/hooks/useSortByField.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/index.tsx +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/api/swarm.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/hooks.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/slice/root.slice.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/slice/url.slice.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/store.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/redux/utils.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/styles/theme.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/types/swarm.types.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/types/tab.types.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/types/table.types.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/utils/number.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/utils/object.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/src/utils/url.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/tsconfig.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/vite.config.ts +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust/webui/yarn.lock +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/dependency_links.txt +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/entry_points.txt +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/not-zip-safe +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/requires.txt +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/locust.egg-info/top_level.txt +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/package.json +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/pyproject.toml +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/scripts/locustfile.py +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/scripts/run-disributed-headless.sh +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/scripts/run-disributed-web.sh +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/scripts/run-local-headless.sh +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/scripts/run-local-web.sh +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/setup.cfg +0 -0
- {locust-2.18.4.dev6 → locust-2.18.4.dev17}/tox.ini +0 -0
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '2.18.4.
|
16
|
-
__version_tuple__ = version_tuple = (2, 18, 4, '
|
15
|
+
__version__ = version = '2.18.4.dev17'
|
16
|
+
__version_tuple__ = version_tuple = (2, 18, 4, 'dev17')
|
@@ -333,6 +333,7 @@ class Runner:
|
|
333
333
|
def shape_worker(self) -> None:
|
334
334
|
logger.info("Shape worker starting")
|
335
335
|
while self.state == STATE_INIT or self.state == STATE_SPAWNING or self.state == STATE_RUNNING:
|
336
|
+
shape_adjustment_start = time.time()
|
336
337
|
current_tick = self.environment.shape_class.tick() if self.environment.shape_class is not None else None
|
337
338
|
if current_tick is None:
|
338
339
|
logger.info("Shape test stopping")
|
@@ -343,9 +344,7 @@ class Runner:
|
|
343
344
|
self.shape_greenlet = None
|
344
345
|
self.shape_last_tick = None
|
345
346
|
return
|
346
|
-
elif self.shape_last_tick
|
347
|
-
gevent.sleep(1)
|
348
|
-
else:
|
347
|
+
elif self.shape_last_tick != current_tick:
|
349
348
|
if len(current_tick) == 2:
|
350
349
|
user_count, spawn_rate = current_tick # type: ignore
|
351
350
|
user_classes = None
|
@@ -367,6 +366,8 @@ class Runner:
|
|
367
366
|
# of each load test shape stage.
|
368
367
|
self.start(user_count=user_count, spawn_rate=spawn_rate, user_classes=user_classes)
|
369
368
|
self.shape_last_tick = current_tick
|
369
|
+
shape_adjustment_time_ms = time.time() - shape_adjustment_start
|
370
|
+
gevent.sleep(max(1 - shape_adjustment_time_ms, 0))
|
370
371
|
|
371
372
|
def stop(self) -> None:
|
372
373
|
"""
|
@@ -390,8 +390,8 @@ class StatsEntry:
|
|
390
390
|
|
391
391
|
if self.min_response_time is None:
|
392
392
|
self.min_response_time = response_time
|
393
|
-
|
394
|
-
|
393
|
+
else:
|
394
|
+
self.min_response_time = min(self.min_response_time, response_time)
|
395
395
|
self.max_response_time = max(self.max_response_time, response_time)
|
396
396
|
|
397
397
|
# to avoid to much data that has to be transferred to the master node when
|
@@ -2707,6 +2707,67 @@ class TestMasterRunner(LocustRunnerTestCase):
|
|
2707
2707
|
for i in range(USERS_COUNT):
|
2708
2708
|
self.assertEqual(indexes[i], i, "Worker index mismatch")
|
2709
2709
|
|
2710
|
+
def test_custom_shape_scale_interval(self):
|
2711
|
+
class MyUser(User):
|
2712
|
+
@task
|
2713
|
+
def my_task(self):
|
2714
|
+
pass
|
2715
|
+
|
2716
|
+
class TestShape(LoadTestShape):
|
2717
|
+
def __init__(self):
|
2718
|
+
super().__init__()
|
2719
|
+
self._users_num = [1, 1, 1, 2, 2, 3, 3, 3, 4]
|
2720
|
+
self._index = 0
|
2721
|
+
|
2722
|
+
def tick(self):
|
2723
|
+
if self._index >= len(self._users_num):
|
2724
|
+
return None
|
2725
|
+
users_num = self._users_num[self._index]
|
2726
|
+
self._index += 1
|
2727
|
+
return users_num, users_num
|
2728
|
+
|
2729
|
+
self.environment.shape_class = TestShape()
|
2730
|
+
|
2731
|
+
with mock.patch("locust.rpc.rpc.Server", mocked_rpc()) as server:
|
2732
|
+
master = self.get_runner(user_classes=[MyUser])
|
2733
|
+
for i in range(5):
|
2734
|
+
server.mocked_send(Message("client_ready", __version__, "fake_client%i" % i))
|
2735
|
+
|
2736
|
+
# Start the shape_worker
|
2737
|
+
self.environment.shape_class.reset_time()
|
2738
|
+
master.start_shape()
|
2739
|
+
|
2740
|
+
# Wait for shape_worker to update user_count
|
2741
|
+
sleep(0.5)
|
2742
|
+
num_users = sum(
|
2743
|
+
sum(msg.data["user_classes_count"].values()) for _, msg in server.outbox if msg.type != "ack"
|
2744
|
+
)
|
2745
|
+
self.assertEqual(
|
2746
|
+
1, num_users, "Total number of users in first stage of shape test is not 1: %i" % num_users
|
2747
|
+
)
|
2748
|
+
|
2749
|
+
# Wait for shape_worker to update user_count again
|
2750
|
+
sleep(1.5)
|
2751
|
+
num_users = sum(
|
2752
|
+
sum(msg.data["user_classes_count"].values()) for _, msg in server.outbox if msg.type != "ack"
|
2753
|
+
)
|
2754
|
+
self.assertEqual(
|
2755
|
+
1, num_users, "Total number of users in second stage of shape test is not 1: %i" % num_users
|
2756
|
+
)
|
2757
|
+
|
2758
|
+
# Wait for shape_worker to update user_count few times but not reach the end yet
|
2759
|
+
sleep(2.5)
|
2760
|
+
num_users = sum(
|
2761
|
+
sum(msg.data["user_classes_count"].values()) for _, msg in server.outbox if msg.type != "ack"
|
2762
|
+
)
|
2763
|
+
self.assertEqual(
|
2764
|
+
3, num_users, "Total number of users in second stage of shape test is not 3: %i" % num_users
|
2765
|
+
)
|
2766
|
+
|
2767
|
+
# Wait to ensure shape_worker has stopped the test
|
2768
|
+
sleep(3)
|
2769
|
+
self.assertEqual("stopped", master.state, "The test has not been stopped by the shape class")
|
2770
|
+
|
2710
2771
|
def test_custom_shape_scale_up(self):
|
2711
2772
|
class MyUser(User):
|
2712
2773
|
@task
|
@@ -367,6 +367,7 @@ class WebUI:
|
|
367
367
|
"stats": stats,
|
368
368
|
"errors": errors,
|
369
369
|
"total_rps": 0.0,
|
370
|
+
"total_fail_per_sec": 0.0,
|
370
371
|
"fail_ratio": 0.0,
|
371
372
|
"current_response_time_percentile_1": None,
|
372
373
|
"current_response_time_percentile_2": None,
|
@@ -395,9 +396,11 @@ class WebUI:
|
|
395
396
|
truncated_stats += [stats[-1]]
|
396
397
|
|
397
398
|
report = {"stats": truncated_stats, "errors": errors[:500]}
|
399
|
+
total_stats = stats[-1]
|
398
400
|
|
399
401
|
if stats:
|
400
|
-
report["total_rps"] =
|
402
|
+
report["total_rps"] = total_stats["current_rps"]
|
403
|
+
report["total_fail_per_sec"] = total_stats["current_fail_per_sec"]
|
401
404
|
report["fail_ratio"] = environment.runner.stats.total.fail_ratio
|
402
405
|
report[
|
403
406
|
"current_response_time_percentile_1"
|