实例介绍
【实例简介】
Locust是一个针对HTTP和其他协议的开源性能/负载测试工具。它以开发者友好的方式让您用普通的Python代码定义测试。Locust测试可以通过命令行或其基于Web的UI运行。可以实时查看吞吐量、响应时间和错误,也可导出以供后续分析。您可以在测试中导入普通的Python库,并且由于Locust具有可插拔的架构,因此可以无限扩展。
【实例截图】
【核心代码】
文件清单
└── locust-5e3f5a7c0767a5a0b5b421db9001b0d5fab8247d
├── benchmarks
│ └── dispatch.py
├── CHANGELOG.md
├── Dockerfile
├── docs
│ ├── api.rst
│ ├── changelog.rst
│ ├── configuration.rst
│ ├── conf.py
│ ├── custom-load-shape.rst
│ ├── developing-locust.rst
│ ├── extending-locust.rst
│ ├── further-reading.rst
│ ├── history.rst
│ ├── images
│ │ ├── extend_modern_web_ui_cache_stats.png
│ │ ├── locust_workers.png
│ │ ├── number_of_users.png
│ │ ├── response_times.png
│ │ ├── total_requests_per_second.png
│ │ ├── userclass_picker_example.png
│ │ ├── webui-running-statistics.png
│ │ └── webui-splash-screenshot.png
│ ├── increase-performance.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── logging.rst
│ ├── quickstart.rst
│ ├── requirements.txt
│ ├── retrieving-stats.rst
│ ├── running-distributed.rst
│ ├── running-in-debugger.rst
│ ├── running-in-docker.rst
│ ├── running-without-web-ui.rst
│ ├── _static
│ │ └── theme-overrides.css
│ ├── tasksets.rst
│ ├── testing-other-systems.rst
│ ├── use-as-lib.rst
│ ├── what-is-locust.rst
│ └── writing-a-locustfile.rst
├── examples
│ ├── add_command_line_argument.py
│ ├── basic.py
│ ├── browse_docs_sequence_test.py
│ ├── browse_docs_test.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_advanced.py
│ ├── debugging.py
│ ├── dispatch_test_scripts
│ │ ├── locustfile.py
│ │ ├── run-disributed-headless.sh
│ │ ├── run-disributed-web.sh
│ │ ├── run-local-headless.sh
│ │ └── run-local-web.sh
│ ├── docker-compose
│ │ └── docker-compose.yml
│ ├── dynamic_user_credentials.py
│ ├── events.py
│ ├── extend_web_ui.py
│ ├── fast_http_locust.py
│ ├── grpc
│ │ ├── grpc_user.py
│ │ ├── hello_pb2_grpc.py
│ │ ├── hello_pb2.py
│ │ ├── hello.proto
│ │ ├── hello_server.py
│ │ └── locustfile.py
│ ├── locustfile.py
│ ├── manual_stats_reporting.py
│ ├── multiple_hosts.py
│ ├── nested_inline_tasksets.py
│ ├── rest.py
│ ├── sdk_session_patching
│ │ └── session_patch_locustfile.py
│ ├── semaphore_wait.py
│ ├── stop_on_threshold.py
│ ├── terraform
│ │ └── aws
│ │ ├── data_subnet.tf
│ │ ├── main.tf
│ │ ├── output.tf
│ │ ├── plan
│ │ │ └── basic.py
│ │ ├── provisioner.tf
│ │ ├── README.md
│ │ └── variables.tf
│ ├── test_data_management.py
│ ├── use_as_lib.py
│ ├── vagrant
│ │ ├── README.md
│ │ └── supervisord.conf
│ ├── web_ui_auth.py
│ ├── web_ui_cache_stats.py
│ └── worker_index.py
├── generate_changelog.py
├── LICENSE
├── locust
│ ├── argument_parser.py
│ ├── clients.py
│ ├── contrib
│ │ ├── fasthttp.py
│ │ └── __init__.py
│ ├── debug.py
│ ├── dispatch.py
│ ├── env.py
│ ├── event.py
│ ├── exception.py
│ ├── html.py
│ ├── __init__.py
│ ├── input_events.py
│ ├── log.py
│ ├── __main__.py
│ ├── main.py
│ ├── py.typed
│ ├── rpc
│ │ ├── __init__.py
│ │ ├── protocol.py
│ │ └── zmqrpc.py
│ ├── runners.py
│ ├── shape.py
│ ├── stats.py
│ ├── test
│ │ ├── fake_module1_for_env_test.py
│ │ ├── fake_module2_for_env_test.py
│ │ ├── __init__.py
│ │ ├── mock_locustfile.py
│ │ ├── mock_logging.py
│ │ ├── testcases.py
│ │ ├── test_debugging.py
│ │ ├── test_dispatch.py
│ │ ├── test_env.py
│ │ ├── test_fasthttp.py
│ │ ├── test_http.py
│ │ ├── test_interruptable_task.py
│ │ ├── test_load_locustfile.py
│ │ ├── test_locust_class.py
│ │ ├── test_log.py
│ │ ├── test_main.py
│ │ ├── test_old_wait_api.py
│ │ ├── test_parser.py
│ │ ├── test_runners.py
│ │ ├── test_sequential_taskset.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
│ │ └── util.py
│ ├── user
│ │ ├── __init__.py
│ │ ├── inspectuser.py
│ │ ├── sequential_taskset.py
│ │ ├── task.py
│ │ ├── users.py
│ │ └── wait_time.py
│ ├── util
│ │ ├── cache.py
│ │ ├── date.py
│ │ ├── deprecation.py
│ │ ├── exception_handler.py
│ │ ├── __init__.py
│ │ ├── load_locustfile.py
│ │ ├── rounding.py
│ │ └── timespan.py
│ ├── web.py
│ └── webui
│ ├── auth.html
│ ├── dev.html
│ ├── dist
│ │ ├── assets
│ │ │ ├── favicon.ico
│ │ │ └── logo.png
│ │ ├── auth.html
│ │ ├── index.html
│ │ └── report.html
│ ├── index.html
│ ├── package.json
│ ├── public
│ │ ├── assets
│ │ │ ├── favicon.ico
│ │ │ └── logo.png
│ │ └── report.html
│ ├── src
│ │ ├── App.test.tsx
│ │ ├── App.tsx
│ │ ├── components
│ │ │ ├── DataTable
│ │ │ │ ├── DataTable.test.tsx
│ │ │ │ └── DataTable.tsx
│ │ │ ├── ExceptionsTable
│ │ │ │ └── ExceptionsTable.tsx
│ │ │ ├── FailuresTable
│ │ │ │ └── FailuresTable.tsx
│ │ │ ├── FallbackRender
│ │ │ │ ├── FallbackRender.test.tsx
│ │ │ │ └── FallbackRender.tsx
│ │ │ ├── Form
│ │ │ │ ├── Form.tsx
│ │ │ │ ├── Select.tsx
│ │ │ │ └── tests
│ │ │ │ ├── Form.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.test.tsx
│ │ │ │ └── LineChart.tsx
│ │ │ ├── LogViewer
│ │ │ │ ├── LogViewer.tsx
│ │ │ │ ├── tests
│ │ │ │ │ ├── LogViewer.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
│ │ │ ├── SwarmCharts
│ │ │ │ └── SwarmCharts.tsx
│ │ │ ├── SwarmForm
│ │ │ │ ├── SwarmCustomParameters.tsx
│ │ │ │ ├── SwarmEditForm.tsx
│ │ │ │ ├── SwarmForm.tsx
│ │ │ │ ├── SwarmUserClassPicker.tsx
│ │ │ │ └── tests
│ │ │ │ ├── SwarmCustomParameters.test.tsx
│ │ │ │ ├── SwarmEditForm.test.tsx
│ │ │ │ ├── SwarmForm.test.tsx
│ │ │ │ └── SwarmUserClassPicker.test.tsx
│ │ │ ├── SwarmRatios
│ │ │ │ ├── SwarmRatios.test.tsx
│ │ │ │ └── SwarmRatios.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
│ │ │ ├── swarm.ts
│ │ │ └── theme.ts
│ │ ├── global.d.ts
│ │ ├── hooks
│ │ │ ├── tests
│ │ │ │ ├── useNotifications.test.tsx
│ │ │ │ ├── useSelecteViewColumns.test.tsx
│ │ │ │ ├── useSortByField.test.tsx
│ │ │ │ └── useSwarmUi.test.tsx
│ │ │ ├── useInterval.ts
│ │ │ ├── useNotifications.ts
│ │ │ ├── useSelectViewColumns.ts
│ │ │ ├── useSortByField.ts
│ │ │ └── useSwarmUi.ts
│ │ ├── index.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
│ │ │ ├── swarm.types.ts
│ │ │ ├── table.types.ts
│ │ │ ├── tab.types.ts
│ │ │ └── ui.types.ts
│ │ └── utils
│ │ ├── 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
│ ├── vitest.config.ts
│ └── yarn.lock
├── Makefile
├── MANIFEST.in
├── package.json
├── pyproject.toml
├── README.md
├── SECURITY.md
├── tox.ini
└── Vagrantfile
70 directories, 292 files
Locust是一个针对HTTP和其他协议的开源性能/负载测试工具。它以开发者友好的方式让您用普通的Python代码定义测试。Locust测试可以通过命令行或其基于Web的UI运行。可以实时查看吞吐量、响应时间和错误,也可导出以供后续分析。您可以在测试中导入普通的Python库,并且由于Locust具有可插拔的架构,因此可以无限扩展。
【实例截图】
【核心代码】
文件清单
└── locust-5e3f5a7c0767a5a0b5b421db9001b0d5fab8247d
├── benchmarks
│ └── dispatch.py
├── CHANGELOG.md
├── Dockerfile
├── docs
│ ├── api.rst
│ ├── changelog.rst
│ ├── configuration.rst
│ ├── conf.py
│ ├── custom-load-shape.rst
│ ├── developing-locust.rst
│ ├── extending-locust.rst
│ ├── further-reading.rst
│ ├── history.rst
│ ├── images
│ │ ├── extend_modern_web_ui_cache_stats.png
│ │ ├── locust_workers.png
│ │ ├── number_of_users.png
│ │ ├── response_times.png
│ │ ├── total_requests_per_second.png
│ │ ├── userclass_picker_example.png
│ │ ├── webui-running-statistics.png
│ │ └── webui-splash-screenshot.png
│ ├── increase-performance.rst
│ ├── index.rst
│ ├── installation.rst
│ ├── logging.rst
│ ├── quickstart.rst
│ ├── requirements.txt
│ ├── retrieving-stats.rst
│ ├── running-distributed.rst
│ ├── running-in-debugger.rst
│ ├── running-in-docker.rst
│ ├── running-without-web-ui.rst
│ ├── _static
│ │ └── theme-overrides.css
│ ├── tasksets.rst
│ ├── testing-other-systems.rst
│ ├── use-as-lib.rst
│ ├── what-is-locust.rst
│ └── writing-a-locustfile.rst
├── examples
│ ├── add_command_line_argument.py
│ ├── basic.py
│ ├── browse_docs_sequence_test.py
│ ├── browse_docs_test.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_advanced.py
│ ├── debugging.py
│ ├── dispatch_test_scripts
│ │ ├── locustfile.py
│ │ ├── run-disributed-headless.sh
│ │ ├── run-disributed-web.sh
│ │ ├── run-local-headless.sh
│ │ └── run-local-web.sh
│ ├── docker-compose
│ │ └── docker-compose.yml
│ ├── dynamic_user_credentials.py
│ ├── events.py
│ ├── extend_web_ui.py
│ ├── fast_http_locust.py
│ ├── grpc
│ │ ├── grpc_user.py
│ │ ├── hello_pb2_grpc.py
│ │ ├── hello_pb2.py
│ │ ├── hello.proto
│ │ ├── hello_server.py
│ │ └── locustfile.py
│ ├── locustfile.py
│ ├── manual_stats_reporting.py
│ ├── multiple_hosts.py
│ ├── nested_inline_tasksets.py
│ ├── rest.py
│ ├── sdk_session_patching
│ │ └── session_patch_locustfile.py
│ ├── semaphore_wait.py
│ ├── stop_on_threshold.py
│ ├── terraform
│ │ └── aws
│ │ ├── data_subnet.tf
│ │ ├── main.tf
│ │ ├── output.tf
│ │ ├── plan
│ │ │ └── basic.py
│ │ ├── provisioner.tf
│ │ ├── README.md
│ │ └── variables.tf
│ ├── test_data_management.py
│ ├── use_as_lib.py
│ ├── vagrant
│ │ ├── README.md
│ │ └── supervisord.conf
│ ├── web_ui_auth.py
│ ├── web_ui_cache_stats.py
│ └── worker_index.py
├── generate_changelog.py
├── LICENSE
├── locust
│ ├── argument_parser.py
│ ├── clients.py
│ ├── contrib
│ │ ├── fasthttp.py
│ │ └── __init__.py
│ ├── debug.py
│ ├── dispatch.py
│ ├── env.py
│ ├── event.py
│ ├── exception.py
│ ├── html.py
│ ├── __init__.py
│ ├── input_events.py
│ ├── log.py
│ ├── __main__.py
│ ├── main.py
│ ├── py.typed
│ ├── rpc
│ │ ├── __init__.py
│ │ ├── protocol.py
│ │ └── zmqrpc.py
│ ├── runners.py
│ ├── shape.py
│ ├── stats.py
│ ├── test
│ │ ├── fake_module1_for_env_test.py
│ │ ├── fake_module2_for_env_test.py
│ │ ├── __init__.py
│ │ ├── mock_locustfile.py
│ │ ├── mock_logging.py
│ │ ├── testcases.py
│ │ ├── test_debugging.py
│ │ ├── test_dispatch.py
│ │ ├── test_env.py
│ │ ├── test_fasthttp.py
│ │ ├── test_http.py
│ │ ├── test_interruptable_task.py
│ │ ├── test_load_locustfile.py
│ │ ├── test_locust_class.py
│ │ ├── test_log.py
│ │ ├── test_main.py
│ │ ├── test_old_wait_api.py
│ │ ├── test_parser.py
│ │ ├── test_runners.py
│ │ ├── test_sequential_taskset.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
│ │ └── util.py
│ ├── user
│ │ ├── __init__.py
│ │ ├── inspectuser.py
│ │ ├── sequential_taskset.py
│ │ ├── task.py
│ │ ├── users.py
│ │ └── wait_time.py
│ ├── util
│ │ ├── cache.py
│ │ ├── date.py
│ │ ├── deprecation.py
│ │ ├── exception_handler.py
│ │ ├── __init__.py
│ │ ├── load_locustfile.py
│ │ ├── rounding.py
│ │ └── timespan.py
│ ├── web.py
│ └── webui
│ ├── auth.html
│ ├── dev.html
│ ├── dist
│ │ ├── assets
│ │ │ ├── favicon.ico
│ │ │ └── logo.png
│ │ ├── auth.html
│ │ ├── index.html
│ │ └── report.html
│ ├── index.html
│ ├── package.json
│ ├── public
│ │ ├── assets
│ │ │ ├── favicon.ico
│ │ │ └── logo.png
│ │ └── report.html
│ ├── src
│ │ ├── App.test.tsx
│ │ ├── App.tsx
│ │ ├── components
│ │ │ ├── DataTable
│ │ │ │ ├── DataTable.test.tsx
│ │ │ │ └── DataTable.tsx
│ │ │ ├── ExceptionsTable
│ │ │ │ └── ExceptionsTable.tsx
│ │ │ ├── FailuresTable
│ │ │ │ └── FailuresTable.tsx
│ │ │ ├── FallbackRender
│ │ │ │ ├── FallbackRender.test.tsx
│ │ │ │ └── FallbackRender.tsx
│ │ │ ├── Form
│ │ │ │ ├── Form.tsx
│ │ │ │ ├── Select.tsx
│ │ │ │ └── tests
│ │ │ │ ├── Form.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.test.tsx
│ │ │ │ └── LineChart.tsx
│ │ │ ├── LogViewer
│ │ │ │ ├── LogViewer.tsx
│ │ │ │ ├── tests
│ │ │ │ │ ├── LogViewer.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
│ │ │ ├── SwarmCharts
│ │ │ │ └── SwarmCharts.tsx
│ │ │ ├── SwarmForm
│ │ │ │ ├── SwarmCustomParameters.tsx
│ │ │ │ ├── SwarmEditForm.tsx
│ │ │ │ ├── SwarmForm.tsx
│ │ │ │ ├── SwarmUserClassPicker.tsx
│ │ │ │ └── tests
│ │ │ │ ├── SwarmCustomParameters.test.tsx
│ │ │ │ ├── SwarmEditForm.test.tsx
│ │ │ │ ├── SwarmForm.test.tsx
│ │ │ │ └── SwarmUserClassPicker.test.tsx
│ │ │ ├── SwarmRatios
│ │ │ │ ├── SwarmRatios.test.tsx
│ │ │ │ └── SwarmRatios.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
│ │ │ ├── swarm.ts
│ │ │ └── theme.ts
│ │ ├── global.d.ts
│ │ ├── hooks
│ │ │ ├── tests
│ │ │ │ ├── useNotifications.test.tsx
│ │ │ │ ├── useSelecteViewColumns.test.tsx
│ │ │ │ ├── useSortByField.test.tsx
│ │ │ │ └── useSwarmUi.test.tsx
│ │ │ ├── useInterval.ts
│ │ │ ├── useNotifications.ts
│ │ │ ├── useSelectViewColumns.ts
│ │ │ ├── useSortByField.ts
│ │ │ └── useSwarmUi.ts
│ │ ├── index.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
│ │ │ ├── swarm.types.ts
│ │ │ ├── table.types.ts
│ │ │ ├── tab.types.ts
│ │ │ └── ui.types.ts
│ │ └── utils
│ │ ├── 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
│ ├── vitest.config.ts
│ └── yarn.lock
├── Makefile
├── MANIFEST.in
├── package.json
├── pyproject.toml
├── README.md
├── SECURITY.md
├── tox.ini
└── Vagrantfile
70 directories, 292 files
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论