# cargo-whero **Repository Path**: Whaiou/cargo-whero ## Basic Information - **Project Name**: cargo-whero - **Description**: A high-performance HTTP load testing tool as a cargo subcommand - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-26 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cargo-whero 高性能 HTTP 负载测试工具。 ## 核心优势 - **超高并发**:基于 Tokio 异步运行时,轻松支持数千并发连接 - **极低开销**:Rust 原生性能,单机可模拟数万 QPS - **精确统计**:完整的延迟分布、百分位数、直方图分析 - **零依赖**:无需额外安装,简单一条命令即可上手 - **友好输出**:清晰的统计报告,即时了解压测结果 ## 安装 ```bash cargo install cargo-whero ``` ## 快速开始 ```bash # 基本压测 cargo whero -n 1000 -c 50 http://example.com # 直接运行 ./cargo-whero -n 1000 -c 50 http://example.com ``` ## 命令行参数 | 参数 | 说明 | 默认值 | |------|------|--------| | `-n` | 请求总数 | 200 | | `-c` | 并发数 | 50 | | `-q` | QPS 限速(每秒请求数) | 0(无限制) | | `-z` | 持续时间(如 10s, 5m) | - | | `-m` | HTTP 方法 | GET | | `-H` | 自定义请求头,格式 `Key:Value` | - | | `-t` | 请求超时时间(支持 10s, 5m 等格式) | 30s | | `--accept` | Accept 请求头 | - | | `-d` | 请求体数据 | - | | `--data-file` | 请求体文件路径 | - | | `-T` | Content-Type | - | | `-U` | User-Agent | - | | `-a` | 基本认证,格式 `user:pass` | - | | `-x` | 代理地址 | - | | `-o` | 输出类型:`default` 或 `csv` | default | | `--output-file` | CSV 输出文件路径 | - | | `--h2` | 使用 HTTP/2 | - | | `--host` | Host 请求头 | - | | `--disable-compression` | 禁用压缩 | - | | `--disable-keepalive` | 禁用 keep-alive | - | | `--disable-redirects` | 禁用重定向 | - | | `--cpus` | Tokio 运行时 CPU 核心数 | CPU 核心数 | ## 使用示例 ### 基本压测 ```bash cargo whero -n 1000 -c 50 http://localhost:8080/api ``` ### 指定 QPS 限速 ```bash cargo whero -n 1000 -c 10 -q 100 http://example.com ``` ### 持续时间模式 ```bash cargo whero -c 10 -q 50 -z 60s http://example.com ``` ### POST 请求带数据 ```bash cargo whero -m POST -d '{"name":"test"}' -T "application/json" http://example.com/api ``` ### 使用 CSV 输出 ```bash cargo whero -n 100 -c 10 -o csv http://example.com > results.csv ``` ### 指定请求头 ```bash cargo whero -H "Authorization: Bearer token123" -H "X-Custom: value" http://example.com ``` ## 输出示例 ``` Summary: Total: 5.8535 secs Slowest: 2.3481 secs Fastest: 0.2920 secs Average: 1.0452 secs Requests/sec: 1.7084 Total data: 2970 bytes Size/request: 297 bytes Response time histogram: 0.292 [1] ■■■■■■■■■■■ 0.498 [4] ■■■■■■■■■■■■■■■■■■■■■■■ ... Latency distribution: 10%% in 0.3875 secs 25%% in 0.4055 secs ... Details (average, fastest, slowest): DNS+dialup: 0.1800 secs, 0.0000 secs, 1.4506 secs DNS-lookup: 0.0120 secs, 0.0000 secs, 0.0602 secs ... Status code distribution: [200] 100 responses ``` ## 测试验证 本工具已完成全面功能测试,所有测试用例均通过: | # | 测试项目 | 命令示例 | 结果 | |---|----------|----------|------| | 1 | 基本压测 | `-n 20 -c 5` | ✅ 通过 | | 2 | POST 请求 | `-m POST -d '{"name":"test"}' -T "application/json"` | ✅ 通过 | | 3 | 自定义请求头 | `-H "X-Custom: test-value" -H "Authorization: Bearer abc123"` | ✅ 通过 | | 4 | QPS 限速 | `-q 5` | ✅ 通过 | | 5 | 持续时间模式 | `-z 2s` | ✅ 通过 | | 6 | CSV 输出 | `-o csv` | ✅ 通过 | | 7 | 禁用重定向 | `--disable-redirects` | ✅ 通过 | | 8 | 基本认证 | `-a "user:passwd"` | ✅ 通过 | | 9 | 超时处理 | `-t 1s` | ✅ 通过 | | 10 | User-Agent | `-U "MyCustomAgent/1.0"` | ✅ 通过 | | 11 | Accept Header | `--accept "application/json"` | ✅ 通过 | | 12 | 文件输出 | `--output-file results.csv` | ✅ 通过 | | 13 | 禁用压缩 | `--disable-compression` | ✅ 通过 | | 14 | 禁用 Keep-Alive | `--disable-keepalive` | ✅ 通过 | | 15 | Host Header | `--host "example.com"` | ✅ 通过 | | 16 | 版本信息 | `--version` | ✅ 通过 | | 17 | 帮助信息 | `--help` | ✅ 通过 | **测试环境**:使用 httpbin.org 进行真实 HTTP 请求测试 **测试结果**:17 项功能全部验证通过,工具稳定可靠,可放心使用! ## 技术栈 - **Tokio**:异步运行时,支持高并发 - **Reqwest**:HTTP 客户端 - **Clap**:命令行参数解析 - **Anyhow**:错误处理 ## 许可证 MIT License ## 版本要求 - Rust 1.70+