Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gnolang/supernova
A small and simple stress testing tool for the Gno Tendermint2 blockchain ⚛️
https://github.com/gnolang/supernova
blockchain gno stress-testing tendermint2
Last synced: about 2 months ago
JSON representation
A small and simple stress testing tool for the Gno Tendermint2 blockchain ⚛️
- Host: GitHub
- URL: https://github.com/gnolang/supernova
- Owner: gnolang
- License: apache-2.0
- Created: 2023-03-21T15:54:04.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-24T13:19:54.000Z (about 2 months ago)
- Last Synced: 2024-07-24T20:49:31.844Z (about 2 months ago)
- Topics: blockchain, gno, stress-testing, tendermint2
- Language: Go
- Homepage: https://gno.land
- Size: 763 KB
- Stars: 15
- Watchers: 12
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-gno - Supernova - Stress testing tool for the Gno Tendermint2 blockchain. (Tools)
README
## Overview
`supernova` is a command-line interface (CLI) tool for stress-testing Gno Tendermint 2 networks. It is used to monitor
and report on node performance by executing transactions and measuring response-time.## Key Features
- 🚀 Batch transactions to make stress testing easier to orchestrate
- 🛠 Multiple stress testing modes: REALM_DEPLOYMENT, PACKAGE_DEPLOYMENT, and REALM_CALL
- 💰 Distributed transaction stress testing through subaccounts
- 💸 Automatic subaccount fund top-up
- 📊 Detailed statistics calculation
- 📈 Output cycle run results to a file## Results
To view the results of the stress tests, visit the [benchmarks reports for supernova](https://github.com/gnolang/benchmarks/tree/main/reports/supernova).
## Usage Example
To run a stress test with `supernova`, you will need to have `go 1.19` or greater.
1. Build out the binary
To build out the binary, run the following command:
```bash
make build
```2. Run the stress test by specifying options
```bash
./build/supernova -sub-accounts 5 -transactions 100 -url http://localhost:26657 -mnemonic "source bonus chronic canvas draft south burst lottery vacant surface solve popular case indicate oppose farm nothing bullet exhibit title speed wink action roast" -output result.json
```This will run a stress test against a Gno TM2 node running at `http://localhost:26657`. The test will use `5`
sub-accounts, and send out `100` transactions. The sub-accounts are derived from the specified mnemonic. Finally,
results are saved
to a file `result.json`.For any stress test run, there need to be funds on a specific address.
The address that is in charge of funds distribution to subaccounts is the **first address** with index 0 in the
specified mnemonic. Make sure this address has an appropriate amount of funds before running the stress test.![Banner](.github/demo.gif)
`supernova` supports the following options:
```bash
USAGE
[flags] [...]Starts the stress testing suite against a Gno TM2 cluster
FLAGS
-batch 100 the batch size of JSON-RPC transactions
-chain-id dev the chain ID of the Gno blockchain
-mnemonic string the mnemonic used to generate sub-accounts
-mode REALM_DEPLOYMENT the mode for the stress test. Possible modes: [REALM_DEPLOYMENT, PACKAGE_DEPLOYMENT, REALM_CALL]
-output string the output path for the results JSON
-sub-accounts 10 the number of sub-accounts that will send out transactions
-transactions 100 the total number of transactions to be emitted
-url string the JSON-RPC URL of the cluster
```## Modes
### REALM_DEPLOYMENT
The `REALM_DEPLOYMENT` mode is pretty straightforward - it is a simple `Realm` deployment mode from accounts.
This mode sends out transactions that are deploy transactions for a realm holding state.### PACKAGE_DEPLOYMENT
The `PACKAGE_DEPLOYMENT` is similar to `REALM_DEPLOYMENT`. This mode also sends out transactions, but these transactions
deploy a package.### REALM_CALL
The `REALM_CALL` mode deploys a `Realm` to the Gno blockchain network being tested before starting the cycle run.
When the cycle run begins, the transactions that are sent out are method calls.