tm-load-test
is a distributed load testing tool (and framework) for load
testing Tendermint networks.
In order to build and use the tools, you will need:
- Go 1.12+
make
To build the tm-load-test
binary in the build
directory:
make
There is an example load testing configuration file in the examples
folder.
This example demonstrates usage with the following configuration:
- A single Tendermint node with RPC endpoint available at
localhost:26657
- The load testing master bound to
localhost:35000
- 2 slaves bound to arbitrary ports on
localhost
- Each slave spawns 50 clients
- Each client executes 100 interactions with the Tendermint node
To run the example test, simply do the following from the folder into which you
cloned the tm-load-test
source:
# Initialize your local Tendermint node to ~/.tendermint
tendermint init
# Run a node with the kvstore proxy app
tendermint node --proxy_app kvstore
# Run each of the following in a separate terminal (-v sets output logging to
# DEBUG level)
./build/tm-load-test -c examples/load-test.toml -master -v
./build/tm-load-test -c examples/load-test.toml -slave -v
./build/tm-load-test -c examples/load-test.toml -slave -v
And then watch the output logs to see the load testing progress.
To implement your own client type to load test your own Tendermint ABCI
application, see the loadtest
package docs here.
To run the linter and the tests:
make lint
make test
tm-load-test
is tedious to use across many machines without some form of
automation, so to help along those lines there are
Ansible scripts in the
scripts/load-testing
folder.