An open API service indexing awesome lists of open source software.

https://github.com/jessezach/meteorburst

A simple Go based Load testing tool that uses goroutines to generate load
https://github.com/jessezach/meteorburst

beego go golang jmeter load-testing loadtesting performance-metrics performance-testing

Last synced: 6 months ago
JSON representation

A simple Go based Load testing tool that uses goroutines to generate load

Awesome Lists containing this project

README

          

# Meteor Burst
[![Go Report Card](https://goreportcard.com/badge/github.com/jz-jess/meteorburst)](https://goreportcard.com/report/github.com/jz-jess/meteorburst)

Meteor Burst is simplistic load testing tool. It can be used to quickly run basic loads tests against a REST API.
It provides a simple form based UI where you can provide the URL, Headers, Method, Payload and number of users to simulate.
Meteor Burst will provide you with a realtime average response time, 99th percentile, 90th percentile and 50th percentile numbers.

## Installation
Make sure you have Go setup and `$GOPATH` added to path.
Also make sure you have `$GOPATH/bin` add to path.
[Check here](https://stackoverflow.com/questions/21001387/how-do-i-set-the-gopath-environment-variable-on-ubuntu-what-file-must-i-edit)
- Install bee tool.
`$ go get -u github.com/beego/bee`

- Install code.
`$ go get github.com/jz-jess/meteorburst`

- Inside project root, run server
`$ cd jz-jess/meteorburst`
`$ bee run`

OR

- Install go dep
`brew install dep` or `go get -u github.com/golang/dep/cmd/dep`

- Navigate to your Gopath/src and clone the repository
```$ cd $GOPATH/src/```
```git clone https://github.com/jz-jess/meteorburst.git```

- Navigate to meteorburst and install dependencies
`$ cd meteorburst`
`$ dep ensure`

- Inside project root, run server
`$ bee run`
```______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.10.0
2019/01/06 00:31:24 INFO ▶ 0001 Using 'meteorburst' as 'appname'
2019/01/06 00:31:24 INFO ▶ 0002 Initializing watcher...
```

App should be running on `http://localhost:8080/`
TCP server should be running on `http://0.0.0.0:8082/`

## How to use
- Navigate to `http://localhost:8080/`
- Fill the required fields with the details of the endpoint you want to load test.
![Alt text](/readme-images/home.png "Home screen")

- Press start
- Tests should begin and metrics should be visible
![Alt text](/readme-images/metrics.png "Metrics")
![Alt text](/readme-images/chart.png "Home screen")

- Press stop button whenever you want to stop the tests.
![Alt text](/readme-images/stop.png "Home screen")

## Duration
You can optionally add duration in minutes or seconds to a test. The tests will run for the specified duration and stop automatically after.
![Alt text](/readme-images/duration.png "Duration")

## Ramp up
Most tests require a pattern of of load generation. You would want to generate load in a linear manner or a step by step manner. Meteor Burst provides ramping up of users in linear fashion or using step. Linear Ramp up duration has to be provided in seconds.
![Alt text](/readme-images/linear.png "Linear")

Step Ramp up can be done as follow:
- Select Step option in the Ramp up dropdown. A table should be displayed.
- Add number of users, duration and unit (seconds, minutes). You can add as many steps as required.
![Alt text](/readme-images/step.png "Step")

## Distributed Load testing
Incase you want to generate a high load. You can install meteor client and run them on different machines.Follow the steps below
- Install meteor `go get github.com/jz-jess/meteor`
- Run `meteor :`, Ex: `meteor 0.0.0.0:8082`
You can see the number of slaves connected in the UI. The tests will automatically run on slaves.
![Alt text](/readme-images/slaves.png "Slaves")

#### Important: When running meteor client, port should always be 8082 since tcp server runs on 8082. Clients will get disconnected when app server is closed.
## Note
Please star the repository if you find this useful.
For any queries or issues, raise an issue or email me at iamjess988@gmail.com