Skip to main content

tool for benchmarking RPC endpoints

Project description

🌊🌊 flood 🌊🌊

flood is a load testing tool for benchmarking EVM nodes over RPC

CI status Telegram Chat

For each RPC method, flood measures how load affects metrics such as:

  1. throughput
  2. latency (mean, P50, P90, P95, P99, max)
  3. 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 interface
  • flood/generators: utilities for generating rpc calls with parameterized distributions
  • flood/tests: implementations of load tests and equality tests
  • flood/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

paradigm-flood-0.2.2.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

paradigm_flood-0.2.2-py3-none-any.whl (55.3 kB view details)

Uploaded Python 3

File details

Details for the file paradigm-flood-0.2.2.tar.gz.

File metadata

  • Download URL: paradigm-flood-0.2.2.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.30.0

File hashes

Hashes for paradigm-flood-0.2.2.tar.gz
Algorithm Hash digest
SHA256 bf5467a0698db6ed88a22f7491c2053af2584c1d6cf79c56e8ee0f7cf1f47df2
MD5 62c170f4717c72d3eb0c90f6bec780f7
BLAKE2b-256 bb6f32107601850aed3d4540352c779e62a77b4711f6257c6c9e4781fca56164

See more details on using hashes here.

File details

Details for the file paradigm_flood-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for paradigm_flood-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 172514768c2025aa9c8a84d79da1cf98dc2822183fc153d39dde568192b8360f
MD5 efcbbd4f31feb9a12201bede1e4c3e8e
BLAKE2b-256 a3937f26c05e06ee77c52ff7b9d2c4430b9eb25cc54d9efe445030e46279d59c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page