This folder will eventually contain a number of recipes for deploying remote test networks for debugging and testing various different Tendermint network configurations and scenarios. The primary tool for deploying these various scenarios is Ansible.
Following is a description of this folder's layout:
|_ common/ Common `make` and Ansible includes
|_ experiments/ Result data and charts from scenario executions will be stored here
|_ inventory/ Where to store all of your Ansible host inventory files
|_ networks/ The different remote network configurations
|_ scenarios/ The different testing scenarios from the client side
|_ Makefile The primary Makefile for executing the different network deployments and scenarios
In order to execute the various deployments or scenarios, you will need:
make
- Python 3.6+
- Tendermint development requirements (for building the Tendermint binary that we deploy to the test networks)
Target platform for execution of these deployments/scenarios is either Linux/macOS.
See the Load Testing Guide for a step-by-step guide to setting up and executing your own load tests against a Tendermint network using these scripts.
By default, the first time you execute a deployment or a scenario, a Python 3
virtual environment will be created in the testing/venv
folder in this repo. A
few dependencies will also automatically be downloaded and installed into this
virtual environment.
It's probably a good idea, however, to update these dependencies (if the
requirements.txt
changes):
# Update Python virtual environment and dependencies
make update_deps
To deploy a particular test network to the relevant hosts, simply do the following:
make deploy:001-reference
Each network deployment potentially has a different set of parameters that one can supply via environment variables. See each network's folder for details.
The following test network configurations are available for deployment:
001-reference
- A simple reference Tendermint network, runningkvstore
withcreate_empty_blocks=true
.
To execute a particular testing scenario, simply:
make scenario:001-kvstore-test
This particular test scenario assumes you're running the kvstore
proxy app in
your Tendermint network.
The following testing scenarios are currently provided:
001-kvstore-test
- Simplekvstore
test, which stores a random value in a particular node and attempts to read it back out.002-kvstore-loadtest
- A load test using Locust to be executed from a single machine. The assumption here is that the target Tendermint network runskvstore
as its proxy app.003-kvstore-loadtest-distributed
- A distributed load test (multiple source machines) using Locust.
004-kvstore-loadtest-distcollection
- Runs a suite/collection of distributed load tests (i.e.
003-kvstore-loadtest-distributed
) with varying parameters (number of clients, hatch rate, run time, etc.).
- Runs a suite/collection of distributed load tests (i.e.