sei-load

command module
v0.0.0-...-571cdb7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 12, 2025 License: Apache-2.0 Imports: 23 Imported by: 0

README

sei-load

Tests

A load testing tool for Sei Chain that generates transactions and measures performance.

Quick Start

1. Build
make build
2. Create Config
cp profiles/local.json my-config.json

Edit my-config.json:

{
  "endpoints": ["http://localhost:8545"],
  "chainId": 713714,
  "scenarios": [
    {"name": "EVMTransfer", "weight": 100}
  ],
  "accounts": {
    "count": 100,
    "newAccountRate": 0.1
  },
  "settings": {
    "workers": 5,
    "tps": 100,
    "statsInterval": "10s",
    "bufferSize": 1000,
    "trackUserLatency": true
  }
}
3. Run
./seiload --config my-config.json

Command Line Options

Flag Default Description
--config, -c Config file path (required)
--workers, -w 1 Workers per endpoint
--tps, -t 0 Transactions per second (0 = unlimited)
--stats-interval, -s 10s Stats logging interval
--buffer-size, -b 1000 Buffer size per worker
--dry-run false Simulate without sending
--debug false Log each transaction
--track-receipts false Track transaction receipts
--track-blocks false Track block statistics
--track-user-latency false Track user latency metrics
--prewarm false Prewarm accounts before test

Examples

Basic Load Test
./seiload --config my-config.json --workers 5 --tps 100
High Throughput Test
./seiload --config my-config.json --workers 20 --buffer-size 2000
Debug Mode
./seiload --config my-config.json --debug --dry-run
With Receipt Tracking
./seiload --config my-config.json --track-receipts --track-blocks
User Latency Monitoring
./seiload --config my-config.json --track-user-latency --stats-interval 5s

Configuration

Basic Structure
{
  "endpoints": ["http://localhost:8545"],
  "chainId": 713714,
  "scenarios": [...],
  "accounts": {...},
  "settings": {...}
}
Scenarios
"scenarios": [
  {"name": "EVMTransfer", "weight": 50},
  {"name": "ERC20", "weight": 30},
  {"name": "ERC721", "weight": 20}
]
Account Management
"accounts": {
  "count": 100,
  "newAccountRate": 0.1
}
Settings
"settings": {
  "workers": 5,
  "tps": 100,
  "statsInterval": "10s",
  "bufferSize": 1000,
  "trackUserLatency": true
}

Settings Precedence: CLI flags > Config file settings > Default values

Available settings:

  • workers: Number of workers per endpoint
  • tps: Transactions per second (0 = unlimited)
  • statsInterval: Stats logging interval (e.g., "10s", "5m")
  • bufferSize: Buffer size per worker
  • dryRun: Simulate without sending transactions
  • debug: Enable debug logging
  • trackReceipts: Track transaction receipts
  • trackBlocks: Track block statistics
  • trackUserLatency: Track user latency metrics
  • prewarm: Prewarm accounts before test

Available Scenarios

  • EVMTransfer: Simple ETH transfers
  • ERC20: ERC20 token operations
  • ERC20Noop: ERC20 no-op transactions
  • ERC20Conflict: ERC20 conflicting transactions
  • ERC721: NFT operations

Output

Standard Metrics
throughput tps=133.00, txs=1330, latency(avg=8ms p50=5ms p99=27ms max=494ms)
User Latency (with --track-user-latency)
user latency height=5191 txs=32 min=1s p50=2s max=5s
Block Stats (with --track-blocks)
blocks height=5191 time(p50=2s p99=5s max=8s) gas(p50=21000 p99=50000 max=100000)

Development

Build
make build
Test
make test
Lint
make lint
Clean
make clean

Troubleshooting

Connection Issues
  • Check endpoint URLs in config
  • Verify network connectivity
  • Try --dry-run to test config
Low Performance
  • Increase --workers
  • Increase --buffer-size
Memory Issues
  • Reduce --buffer-size
  • Reduce worker count
  • Disable receipt tracking

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL