Skip to content

Latest commit

 

History

History
91 lines (71 loc) · 3.5 KB

README.md

File metadata and controls

91 lines (71 loc) · 3.5 KB

Remote Testing

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.

Folder layout

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

Requirements

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.

Load Testing Guide

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.

Managing Python dependencies

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

Deploying test networks

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, running kvstore with create_empty_blocks=true.

Executing test scenarios

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 - Simple kvstore 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 runs kvstore 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.).