gitextract_78ea2ktw/ ├── .dockerignore ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ ├── config.yml │ │ └── feature_request.yml │ ├── dependabot.yaml │ └── workflows/ │ ├── stale.yml │ └── tests.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .readthedocs.yaml ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── launch_locust.json │ └── settings.json ├── CHANGELOG.md ├── Dockerfile ├── Dockerfile.ci ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── Vagrantfile ├── benchmarks/ │ └── dispatch.py ├── docs/ │ ├── _static/ │ │ └── theme-overrides.css │ ├── _templates/ │ │ └── footer.html │ ├── api.rst │ ├── changelog.rst │ ├── conf.py │ ├── configuration.rst │ ├── custom-load-shape.rst │ ├── developing-locust.rst │ ├── extending-locust.rst │ ├── extensions.rst │ ├── faq.rst │ ├── further-reading.rst │ ├── history.rst │ ├── increase-performance.rst │ ├── increasing-request-rate.rst │ ├── index.rst │ ├── installation.rst │ ├── kubernetes-operator.rst │ ├── logging.rst │ ├── quickstart.rst │ ├── retrieving-stats.rst │ ├── running-distributed.rst │ ├── running-in-debugger.rst │ ├── running-in-docker.rst │ ├── running-without-web-ui.rst │ ├── tasksets.rst │ ├── telemetry.rst │ ├── testing-other-systems.rst │ ├── use-as-lib.rst │ ├── vscode-extension.rst │ ├── what-is-locust.rst │ └── writing-a-locustfile.rst ├── examples/ │ ├── add_command_line_argument.py │ ├── basic.py │ ├── bottlenecked_server.py │ ├── browse_docs_sequence_test.py │ ├── browse_docs_test.py │ ├── csrf_form_authentication.py │ ├── custom_messages.py │ ├── custom_shape/ │ │ ├── double_wave.py │ │ ├── stages.py │ │ ├── staging_user_classes.py │ │ ├── step_load.py │ │ └── wait_user_count.py │ ├── custom_wait_function.py │ ├── custom_xmlrpc_client/ │ │ ├── server.py │ │ └── xmlrpc_locustfile.py │ ├── debugging.py │ ├── debugging_advanced.py │ ├── dispatch_test_scripts/ │ │ ├── locustfile.py │ │ ├── run-disributed-headless.sh │ │ ├── run-disributed-web.sh │ │ ├── run-local-headless.sh │ │ └── run-local-web.sh │ ├── dns_ex.py │ ├── docker-compose/ │ │ └── docker-compose.yml │ ├── dynamic_user_credentials.py │ ├── events.py │ ├── extend_web_ui.py │ ├── fast_http_locust.py │ ├── grpc/ │ │ ├── grpc_user.py │ │ ├── hello.proto │ │ ├── hello_pb2.py │ │ ├── hello_pb2_grpc.py │ │ ├── hello_server.py │ │ └── locustfile.py │ ├── locustfile.py │ ├── manual_stats_reporting.py │ ├── markov_taskset.py │ ├── milvus/ │ │ ├── README.md │ │ └── locustfile.py │ ├── mongodb/ │ │ ├── README.md │ │ └── locustfile.py │ ├── mqtt/ │ │ ├── README.md │ │ ├── locustfile.py │ │ ├── locustfile_custom_mqtt_client.py │ │ └── mosquitto_config/ │ │ └── mosquitto.conf │ ├── multiple_hosts.py │ ├── nested_inline_tasksets.py │ ├── open_closed_workload.py │ ├── openai_ex.py │ ├── postgres/ │ │ ├── README.md │ │ └── locustfile.py │ ├── qdrant/ │ │ ├── README.md │ │ └── locustfile.py │ ├── response_validations.py │ ├── rest.py │ ├── sdk_session_patching/ │ │ └── session_patch_locustfile.py │ ├── semaphore_wait.py │ ├── socketio/ │ │ ├── echo_server.py │ │ └── socketio_ex.py │ ├── stop_on_threshold.py │ ├── terraform/ │ │ └── aws/ │ │ ├── README.md │ │ ├── data_subnet.tf │ │ ├── main.tf │ │ ├── output.tf │ │ ├── plan/ │ │ │ └── basic.py │ │ ├── provisioner.tf │ │ └── variables.tf │ ├── test_data_management.py │ ├── test_pytest.py │ ├── testdata_from_csv.csv │ ├── testdata_from_csv.py │ ├── use_as_lib.py │ ├── vagrant/ │ │ ├── README.md │ │ └── supervisord.conf │ ├── web_ui_auth/ │ │ ├── basic.py │ │ └── custom_form.py │ ├── web_ui_cache_stats.py │ ├── worker_index.py │ └── x-forwarded-for.py ├── generate_changelog.py ├── hatch_build.py ├── locust/ │ ├── __init__.py │ ├── __main__.py │ ├── argument_parser.py │ ├── clients.py │ ├── contrib/ │ │ ├── __init__.py │ │ ├── dns.py │ │ ├── fasthttp.py │ │ ├── milvus.py │ │ ├── mongodb.py │ │ ├── mqtt.py │ │ ├── oai.py │ │ ├── postgres.py │ │ ├── qdrant.py │ │ └── socketio.py │ ├── debug.py │ ├── dispatch.py │ ├── env.py │ ├── event.py │ ├── exception.py │ ├── html.py │ ├── input_events.py │ ├── log.py │ ├── main.py │ ├── opentelemetry.py │ ├── py.typed │ ├── rpc/ │ │ ├── __init__.py │ │ ├── protocol.py │ │ └── zmqrpc.py │ ├── runners.py │ ├── shape.py │ ├── stats.py │ ├── test/ │ │ ├── __init__.py │ │ ├── fake_module1_for_env_test.py │ │ ├── fake_module2_for_env_test.py │ │ ├── subprocess_utils.py │ │ ├── test_date.py │ │ ├── test_debugging.py │ │ ├── test_dispatch.py │ │ ├── test_env.py │ │ ├── test_fasthttp.py │ │ ├── test_html_filename.py │ │ ├── test_http.py │ │ ├── test_interruptable_task.py │ │ ├── test_load_locustfile.py │ │ ├── test_locust_class.py │ │ ├── test_log.py │ │ ├── test_main.py │ │ ├── test_markov_taskset.py │ │ ├── test_old_wait_api.py │ │ ├── test_parser.py │ │ ├── test_pytest_locustfile.py │ │ ├── test_runners.py │ │ ├── test_sequential_taskset.py │ │ ├── test_socketio.py │ │ ├── test_stats.py │ │ ├── test_tags.py │ │ ├── test_taskratio.py │ │ ├── test_users.py │ │ ├── test_util.py │ │ ├── test_wait_time.py │ │ ├── test_web.py │ │ ├── test_zmqrpc.py │ │ ├── testcases.py │ │ └── util.py │ ├── user/ │ │ ├── __init__.py │ │ ├── inspectuser.py │ │ ├── markov_taskset.py │ │ ├── sequential_taskset.py │ │ ├── task.py │ │ ├── users.py │ │ └── wait_time.py │ ├── util/ │ │ ├── __init__.py │ │ ├── cache.py │ │ ├── date.py │ │ ├── deprecation.py │ │ ├── directory.py │ │ ├── exception_handler.py │ │ ├── load_locustfile.py │ │ ├── rounding.py │ │ ├── timespan.py │ │ └── url.py │ ├── web.py │ └── webui/ │ ├── .gitignore │ ├── .prettierrc │ ├── .yarn/ │ │ └── releases/ │ │ └── yarn-4.12.0.cjs │ ├── .yarnrc.yml │ ├── LICENSE │ ├── README.md │ ├── auth.html │ ├── dev.html │ ├── eslint.config.mjs │ ├── index.html │ ├── package.json │ ├── package.tgz │ ├── report.html │ ├── src/ │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── HtmlReport.tsx │ │ ├── assets/ │ │ │ └── Logo.tsx │ │ ├── components/ │ │ │ ├── DataTable/ │ │ │ │ ├── DataTable.test.tsx │ │ │ │ └── DataTable.tsx │ │ │ ├── ExceptionsTab/ │ │ │ │ └── ExceptionsTab.tsx │ │ │ ├── ExceptionsTable/ │ │ │ │ ├── ExceptionsTable.tsx │ │ │ │ └── ExceptionsTableContainer.tsx │ │ │ ├── FadeInBox.tsx │ │ │ ├── FailuresTable/ │ │ │ │ ├── FailuresTable.tsx │ │ │ │ └── FailuresTableContainer.tsx │ │ │ ├── FallbackRender/ │ │ │ │ ├── FallbackRender.test.tsx │ │ │ │ └── FallbackRender.tsx │ │ │ ├── Form/ │ │ │ │ ├── CustomInput.tsx │ │ │ │ ├── Form.tsx │ │ │ │ ├── NumericField.tsx │ │ │ │ ├── PasswordField.tsx │ │ │ │ ├── Select.tsx │ │ │ │ └── tests/ │ │ │ │ ├── CustomInput.test.tsx │ │ │ │ ├── Form.test.tsx │ │ │ │ ├── NumericField.test.tsx │ │ │ │ ├── PasswordField.test.tsx │ │ │ │ └── Select.test.tsx │ │ │ ├── Layout/ │ │ │ │ ├── Footer/ │ │ │ │ │ ├── About.tsx │ │ │ │ │ └── Footer.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ └── Navbar/ │ │ │ │ ├── DarkLightToggle.tsx │ │ │ │ ├── Navbar.tsx │ │ │ │ ├── SwarmMonitor.test.tsx │ │ │ │ └── SwarmMonitor.tsx │ │ │ ├── LineChart/ │ │ │ │ ├── LineChart.constants.ts │ │ │ │ ├── LineChart.tsx │ │ │ │ ├── LineChart.types.ts │ │ │ │ ├── LineChart.utils.ts │ │ │ │ └── tests/ │ │ │ │ ├── LineChart.mocks.ts │ │ │ │ ├── LineChart.test.tsx │ │ │ │ └── LineChartUtils.test.tsx │ │ │ ├── LogViewer/ │ │ │ │ ├── LogDisplay.tsx │ │ │ │ ├── LogViewer.tsx │ │ │ │ ├── LogViewer.utils.tsx │ │ │ │ ├── WorkerLogs.tsx │ │ │ │ ├── tests/ │ │ │ │ │ ├── LogViewer.test.tsx │ │ │ │ │ ├── WorkerLogs.test.tsx │ │ │ │ │ └── useLogViewer.test.tsx │ │ │ │ └── useLogViewer.ts │ │ │ ├── Modal/ │ │ │ │ └── Modal.tsx │ │ │ ├── Reports/ │ │ │ │ ├── Reports.test.tsx │ │ │ │ └── Reports.tsx │ │ │ ├── ResponseTimeTable/ │ │ │ │ ├── ResponseTimeTable.test.tsx │ │ │ │ └── ResponseTimeTable.tsx │ │ │ ├── StateButtons/ │ │ │ │ ├── EditButton.tsx │ │ │ │ ├── NewTestButton.tsx │ │ │ │ ├── ResetButton.tsx │ │ │ │ ├── StateButtons.tsx │ │ │ │ ├── StopButton.tsx │ │ │ │ └── tests/ │ │ │ │ ├── ResetButton.test.tsx │ │ │ │ ├── StateButtons.test.tsx │ │ │ │ └── StopButton.test.tsx │ │ │ ├── StatsTable/ │ │ │ │ ├── StatsTable.tsx │ │ │ │ └── StatsTableContainer.tsx │ │ │ ├── SwarmCharts/ │ │ │ │ ├── SwarmCharts.tsx │ │ │ │ └── SwarmChartsContainer.tsx │ │ │ ├── SwarmForm/ │ │ │ │ ├── LoadingButton.tsx │ │ │ │ ├── SwarmCustomParameters.tsx │ │ │ │ ├── SwarmForm.tsx │ │ │ │ ├── SwarmUserClassPicker.tsx │ │ │ │ └── tests/ │ │ │ │ ├── SwarmCustomParameters.test.tsx │ │ │ │ ├── SwarmForm.test.tsx │ │ │ │ └── SwarmUserClassPicker.test.tsx │ │ │ ├── SwarmRatios/ │ │ │ │ ├── SwarmRatios.test.tsx │ │ │ │ ├── SwarmRatios.tsx │ │ │ │ └── SwarmRatiosContainer.tsx │ │ │ ├── SwarmRatiosTab/ │ │ │ │ └── SwarmRatiosTab.tsx │ │ │ ├── Table/ │ │ │ │ ├── Table.test.tsx │ │ │ │ └── Table.tsx │ │ │ ├── Tabs/ │ │ │ │ ├── Tabs.constants.tsx │ │ │ │ ├── Tabs.test.tsx │ │ │ │ └── Tabs.tsx │ │ │ ├── ViewColumnSelector/ │ │ │ │ ├── ViewColumnSelector.test.tsx │ │ │ │ └── ViewColumnSelector.tsx │ │ │ └── WorkersTable/ │ │ │ └── WorkersTable.tsx │ │ ├── constants/ │ │ │ ├── auth.ts │ │ │ ├── logs.ts │ │ │ ├── swarm.ts │ │ │ └── theme.ts │ │ ├── global.d.ts │ │ ├── hooks/ │ │ │ ├── tests/ │ │ │ │ ├── useFetchExceptions.test.tsx │ │ │ │ ├── useFetchStats.test.tsx │ │ │ │ ├── useFetchTasks.test.tsx │ │ │ │ ├── useNotifications.test.tsx │ │ │ │ ├── useSelecteViewColumns.test.tsx │ │ │ │ └── useSortByField.test.tsx │ │ │ ├── useCreateTheme.ts │ │ │ ├── useFetchExceptions.ts │ │ │ ├── useFetchStats.ts │ │ │ ├── useFetchTasks.ts │ │ │ ├── useFetchWorkerCount.ts │ │ │ ├── useForm.ts │ │ │ ├── useInterval.ts │ │ │ ├── useNotifications.ts │ │ │ ├── useSelectViewColumns.ts │ │ │ └── useSortByField.ts │ │ ├── images.d.ts │ │ ├── index.tsx │ │ ├── lib.tsx │ │ ├── pages/ │ │ │ ├── Auth.tsx │ │ │ ├── Dashboard.tsx │ │ │ ├── HtmlReport.tsx │ │ │ └── tests/ │ │ │ ├── Auth.test.tsx │ │ │ ├── Dashboard.test.tsx │ │ │ └── HtmlReport.test.tsx │ │ ├── redux/ │ │ │ ├── api/ │ │ │ │ └── swarm.ts │ │ │ ├── hooks.ts │ │ │ ├── slice/ │ │ │ │ ├── logViewer.slice.ts │ │ │ │ ├── notification.slice.ts │ │ │ │ ├── root.slice.ts │ │ │ │ ├── swarm.slice.ts │ │ │ │ ├── tests/ │ │ │ │ │ └── ui.slice.test.ts │ │ │ │ ├── theme.slice.ts │ │ │ │ ├── ui.slice.ts │ │ │ │ └── url.slice.ts │ │ │ ├── store.ts │ │ │ └── utils.ts │ │ ├── styles/ │ │ │ └── theme.ts │ │ ├── test/ │ │ │ ├── constants.ts │ │ │ ├── mocks/ │ │ │ │ ├── statsRequest.mock.ts │ │ │ │ └── swarmState.mock.ts │ │ │ ├── setup.ts │ │ │ └── testUtils.tsx │ │ ├── types/ │ │ │ ├── auth.types.ts │ │ │ ├── form.types.ts │ │ │ ├── swarm.types.ts │ │ │ ├── tab.types.ts │ │ │ ├── table.types.ts │ │ │ ├── ui.types.ts │ │ │ └── window.types.ts │ │ └── utils/ │ │ ├── array.ts │ │ ├── date.ts │ │ ├── number.ts │ │ ├── object.ts │ │ ├── string.ts │ │ ├── tests/ │ │ │ ├── number.test.ts │ │ │ ├── object.test.ts │ │ │ ├── string.test.ts │ │ │ └── url.test.ts │ │ └── url.ts │ ├── tsconfig.json │ ├── vite.config.ts │ ├── vite.lib.config.ts │ ├── vite.report.config.ts │ └── vitest.config.ts ├── package.json ├── pyproject.toml └── pytest_locust/ └── plugin.py