# Network stress testing

### Prerequisites

This guide assumes that:

* You have a working EVMBuilder Edge network up and running
* Both your JSON-RPC and GRPC endpoints are reachable

### Overview

The EVMBuilder Edge Loadbot is a helper utility that is meant to stress test a EVMBuilder Edge network.

Currently, it supports 2 modes:

* `transfer` - mode that does stress testing using fund-transfer transactions. **\[Default]**.
* `deploy` - mode that deploys specified smart contracts with each transaction.

#### Transfer Mode

The transfer mode assumes that there is a sender account that has initial funds to conduct the loadbot run.

The sender's account address and private key need to be set in the environment variables:

```
# Example
export LOADBOT_0x9A2E59d06899a383ef47C1Ec265317986D026055=154c4bc0cca942d8a0b49ece04d95c872d8f53d34b8f2ac76253a3700e4f1151
```

#### Deploy Mode

The deploy mode conducts contract deployment with each new transaction in the loadbot run. The contract being deployed can be specified using specific flags, or if the contract path is omitted, a default `Greeter.sol` [contract](https://github.com/EVMBuilder-Smartchain/EVMBuilderSmartChain-Staking-Contract) is used instead.

#### Terminology

This section covers some basic terminology regarding the loadbot configuration.

* **count** - The number of transactions to be submitted in the specified mode
* **tps** - The number of transactions that should be submitted to the node per second

### Start the loadbot

As an example, here is a valid command you can use to run the loadbot using two premined accounts:

```
z-edge loadbot  --jsonrpc http://127.0.0.1:10002 --grpc-address 127.0.0.1:10000 --sender 0x9A2E59d06899a383ef47C1Ec265317986D026055 --count 2000 --value 0x100 --tps 100
```

You should get a result similar to this on your terminal :

```
=====[LOADBOT RUN]=====

[COUNT DATA]
Transactions submitted = 2000
Transactions failed    = 0

[TURN AROUND DATA]
Average transaction turn around = 3.490800s
Fastest transaction turn around = 2.002320s
Slowest transaction turn around = 5.006770s
Total loadbot execution time    = 24.009350s

[BLOCK DATA]
Blocks required = 11

Block #223 = 120 txns
Block #224 = 203 txns
Block #225 = 203 txns
Block #226 = 202 txns
Block #227 = 201 txns
Block #228 = 199 txns
Block #229 = 200 txns
Block #230 = 199 txns
Block #231 = 201 txns
Block #232 = 200 txns
Block #233 = 72 txns
```
