Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mixbytes/tank
Benchmark engine for blockchains
https://github.com/mixbytes/tank
Last synced: 2 months ago
JSON representation
Benchmark engine for blockchains
- Host: GitHub
- URL: https://github.com/mixbytes/tank
- Owner: mixbytes
- License: apache-2.0
- Created: 2019-05-06T08:43:08.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-15T08:49:19.000Z (almost 3 years ago)
- Last Synced: 2024-09-29T11:47:33.485Z (3 months ago)
- Language: Python
- Homepage:
- Size: 6.95 MB
- Stars: 21
- Watchers: 4
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-dot - Mixbytes Tank - Benchmarking tool for Substrate and Polkadot. (Resources / Tools)
- awesome-blockchain-testing - MixBytes Tank - console tool which can set up a blockchain cluster in minutes in a cloud and bench it using various transaction loads. Supported blockchains are Haya and Polkadot. ([Ethereum](https://ethereum.org/en/) / Whitepapers)
README
# MixBytes Tank [![master](https://travis-ci.org/mixbytes/tank.svg?branch=master)](https://travis-ci.org/mixbytes/tank)
MixBytes Tank is a console tool which can set up a blockchain cluster in minutes in a cloud and bench it using various transaction loads.
It'll highlight blockchain problems and give insights into performance and stability of the technology.At the moment, supported blockchains are [Haya](https://github.com/mixbytes/haya) and [Polkadot](https://polkadot.network).
Setup - bench - dispose workflow is very similar to a test case, that is why configuration of such run is described in a declarative YAML file called "testcase".
More info can be found at:
* [Guide](docs/guide/README.md)
* [Cookbook](docs/cookbook/README.md)
* Quick guide belowContributions are welcomed!
Discuss in our chat: [https://t.me/MixBytes](https://t.me/MixBytes).
# Quick guide
## Requirements
- Python3
## Installation
```shell
pip3 install mixbytes-tank
```Use the `--pre` option to get the latest release candidate:
```shell
pip3 install mixbytes-tank --pre
```## Usage
### 1. Configure the user config
Configure `~/.tank.yml`. The example can be found at [docs/config.yml.example](docs/config.yml.example).
Please configure at least one cloud provider. The essential steps are:
* providing (and possibly creating) a key pair
* registering a public key with your cloud provider (if needed)
* specifying a cloud provider access token or credentials### 2. Create or get a tank testcase
The example can be found at [docs/testcase_example.yml](docs/testcase_example.yml).
### 3. Start a tank run
```shell
tank cluster deploy
```As a result, the cluster instance listing will be printed along with the run id and the monitoring link.
### 4. Log in to the monitoring
Open the monitoring link in your browser, type in 'tank' in the username and password fields.
You will see cluster metrics in the predefined dashboards.### 5. List current active runs
There can be multiple tank runs at the same time. The runs list and brief information about each run can be seen via:
```shell
tank cluster list
```### 6. Create synthetic load
```shell
tank cluster bench [--tps N] [--total-tx N]
````` - run ID
`` - a js file with a load profile: custom logic which creates transactions to be sent to the cluster
`--tps` - total number of generated transactions per second,
`--total-tx` - total number of transactions to be sent.
### 7. Shutdown and remove the cluster
```shell
tank cluster destroy
```# Development
## Branching
features -> `develop` -> `master`.
`master` is production-ready code.
`develop` is expected-to-be production-ready code which is merged into master after thorough testing
(so, no faulty code in `develop` pls).`develop` and `master` branches are permanent.