Commit 220c92ce authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

Initial commit

parents
Pipeline #885 failed with stages
.vscode
.idea
faucet
# 区块链水龙头性能测试工具
这是一个用于测试区块链水龙头性能的命令行工具,使用 Golang 开发。该工具可以:
1. 随机生成以太坊地址以获取测试币
2. 指定总的测试时间
3. 指定每分钟的请求数
4. 跟踪交易回执状态,以确认请求成功率
## 功能特点
- 随机生成以太坊地址
- 可配置的测试持续时间
- 可配置的请求速率(支持最小/最大请求范围内的随机调整)
- 自动查询交易回执以确认交易状态
- 详细的性能统计(成功率、延迟等)
- 优雅的中断处理(支持 Ctrl+C 提前结束测试)
## 安装
确保已安装 Go 环境(推荐 Go 1.21 或更高版本),然后执行:
```bash
git clone <repository-url>
cd faucet
go mod tidy
```
## 使用方法
### 基本用法
```bash
go run main.go
```
这将使用默认参数运行测试:
- 测试时间:1分钟
- 每分钟请求数范围:60-60(固定值)
- 水龙头URL:https://faucet.mars.movachain.com/api/faucet/v1/transfer
- 令牌:5cd5c5c18f27acae
### 自定义参数
```bash
go run main.go -duration=5 -min-rpm=30 -max-rpm=100 -url="https://faucet.example.com/api" -token="your-token" -tx-url="https://example.com/api/tx"
```
### 参数说明
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `-duration` | 测试持续时间(分钟) | 1 |
| `-min-rpm` | 最小每分钟请求数 | 60 |
| `-max-rpm` | 最大每分钟请求数 | 60 |
| `-url` | 水龙头API URL | https://faucet.mars.movachain.com/api/faucet/v1/transfer |
| `-token` | 水龙头API令牌 | 5cd5c5c18f27acae |
| `-tx-url` | 区块链RPC端点URL | https://mars.rpc.movachain.com |
## 输出示例
```
开始测试水龙头性能:
- 测试时间: 1 分钟
- 每分钟请求数范围: 60-60
- 水龙头URL: https://faucet.mars.movachain.com/api/faucet/v1/transfer
- 交易回执URL: https://mars.movachain.com/api/v1/jsonrpc
测试开始,按Ctrl+C可以提前结束测试
已完成 60 个请求
测试完成,结果统计:
- 总请求数: 60
- 成功请求数: 58 (96.67%)
- 失败请求数: 1 (1.67%)
- 待处理请求数: 1 (1.67%)
- 平均延迟: 2.5s
- 最大延迟: 4.2s
- 最小延迟: 1.8s
```
## 构建可执行文件
```bash
go build -o faucet-tester
```
然后可以直接运行可执行文件:
```bash
./faucet-tester -duration=5 -min-rpm=30 -max-rpm=100
```
curl --location 'https://faucet.mars.movachain.com/api/faucet/v1/transfer' \
--header 'Content-Type: application/json' \
--data '{"to":"0x7d58b6a716d3391831aa095e0375c3b553fa5eb5", "token":"5cd5c5c18f27acae" }'
\ No newline at end of file
module faucet
go 1.21
require (
github.com/ethereum/go-ethereum v1.13.10
golang.org/x/time v0.5.0
)
require (
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/holiman/uint256 v1.2.4 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/sys v0.15.0 // indirect
)
github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
github.com/ethereum/go-ethereum v1.13.10 h1:Ppdil79nN+Vc+mXfge0AuUgmKWuVv4eMqzoIVSdqZek=
github.com/ethereum/go-ethereum v1.13.10/go.mod h1:sc48XYQxCzH3fG9BcrXCOOgQk2JfZzNAmIKnceogzsA=
github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU=
github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment