tool for benchmarking RPC endpoints
Project description
🌊🌊 flood 🌊🌊
flood
is a load testing tool for benchmarking EVM nodes over RPC
For each RPC method, flood
measures how load affects metrics such as:
- throughput
- latency (mean, P50, P90, P95, P99, max)
- error rate
flood
makes it easy to compare the performance of:
- different node clients (e.g. geth vs erigon vs reth)
- different hardware/software configurations (e.g. local vs cloud vs low memory vs RAID-0)
- different RPC providers (e.g. Alchemy vs Quicknode vs Infura)
flood
can generate tables, figures, and reports for easy sharing of results (example report here)
Installation
Prerequisites
Install vegeta
:
- on mac:
brew update && brew install vegeta
- on linux:
go install github.com/tsenart/vegeta/v12@v12.8.4
After installation, make sure vegeta
is on your $PATH
. Running vegeta -h
should output a path. If it does not, you probably have not set up go
to install items to your $PATH
. You may need to add something like export PATH=$PATH:~/go/bin/
to your terminal config file (e.g. ~/.profile
).
flood
also requires python >= 3.7
Installing flood
pip install paradigm-flood
Typing flood help
in your terminal should show help output. If it does not, you probably have not set up pip
to install items to your $PATH
. You may need to add something like export PATH=$PATH:~/.local/bin
to your terminal config file (e.g. ~/.profile
). Alternatively, you can avoid setting up your $PATH
and just type python3 -m flood
instead of flood
.
Usage
run test
flood eth_getBlockByNumber NODE1_NAME=NODE1_URL NODE2_NAME=NODE2_URL --rates 10 100 1000 --duration 30
orchestrate tests on remote nodes
flood eth_getBlockByNumber NODE1_NAME=NODE1_URL:localhost:8545 NODE2_NAME=NODE2_URL:localhost:8545
create report
flood report tests/test1_output tests/test2_output
Code Layout
flood/cli
: command line interfaceflood/generators
: utilities for generating rpc calls with parameterized distributionsflood/tests
: implementations of load tests and equality testsflood/user_io
: utiltiies for parsing user io
Contributing
Contributions are welcome in the form of issues, PR's, and commentary. Check out the contributor guide in CONTRIBUTING.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file paradigm-flood-0.2.1.tar.gz
.
File metadata
- Download URL: paradigm-flood-0.2.1.tar.gz
- Upload date:
- Size: 45.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.30.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a2516aa048b07e41161f36734c6e0e58f36c220b401ad4b65ce30d8d8b9f212 |
|
MD5 | 36a1d119f62c256d10adf194dedc757a |
|
BLAKE2b-256 | d66c1c412712cbf3fd4fd2ab38297f695294c24adc0750a39ce4c6b717adfc2f |
File details
Details for the file paradigm_flood-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: paradigm_flood-0.2.1-py3-none-any.whl
- Upload date:
- Size: 55.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.30.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30b1b971e427ee85f5af8c8491afd782449e98c63a9c8f60656dd7dc758b2bb9 |
|
MD5 | 0216dfd6e3563ba85b7c448f1e9107ba |
|
BLAKE2b-256 | 0ae6a44b1a537d56ac03a8cc9ea6b90c80052dcb2711680238fa996b49904eed |