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

https://github.com/ashwin-rajeev/boom

HTTP(S) benchmarking tool written in Golang.
https://github.com/ashwin-rajeev/boom

api api-rest concurrent-programming golang goroutine-pool goroutines load-testing

Last synced: 2 months ago
JSON representation

HTTP(S) benchmarking tool written in Golang.

Awesome Lists containing this project

README

        

Boom

HTTP(S) benchmarking tool written in Golang


screenshot

[![Build Status](https://travis-ci.com/Ashwin-Rajeev/boom.svg?branch=master)](https://travis-ci.com/Ashwin-Rajeev/boom) [![GoDoc](https://godoc.org/github.com/Ashwin-Rajeev/boom?status.svg)](https://godoc.org/github.com/Ashwin-Rajeev/boom) [![Go Report Card](https://goreportcard.com/badge/github.com/Ashwin-Rajeev/boom)](https://goreportcard.com/report/github.com/Ashwin-Rajeev/boom) [![codecov](https://codecov.io/gh/Ashwin-Rajeev/boom/branch/master/graph/badge.svg)](https://codecov.io/gh/Ashwin-Rajeev/boom) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/Ashwin-Rajeev/boom/blob/master/LICENSE) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/Ashwin-Rajeev/boom)

Boom is a HTTP(S) benchmarking tool written in Golang. Because of its lightning fast performance you can test any real world applications using this wonderfull benchmarking tool.

### Coded With Language
* [Golang](https://golang.org/)

## Getting Started

### Installing
To get the latest and greatest run:

```
go get -u github.com/Ashwin-Rajeev/boom
```

## Usage
```
Usage: boom []

-help know more about the usage of boom (Default value = false)
-d Request duration (Default value = 5)
-g Number of concurrent connections (Default value = 5)
-b Request body file name (Relative path) (Default value = )
-h header values separated with ';' (Default value = )
-m Request method (Default value = GET)
-multi Use multiple request mode (Default value = false)
-to Request time out in milli seconds (Default value = 1000)

```

## Example

### Single request


> boom -d 10 -g 20 https://www.google.com/
Boom running for 10s over the api: https://www.google.com/
20 Active Concurrent connections!
10 / 10 [--------------------------------------------------------------] 100.00%

| Statistics | value |
| ================================== |
+ Total Reqs 1424
+ Fastest Reqs 128.59929ms
+ Slowest Reqs 273.003861ms
+ Average Reqs 1.026262071s
+ Error Count 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―
| Status Code | Count |
| ================================== |
+ 1XX 0
+ 2XX 1424
+ 3XX 0
+ 4XX 0
+ 5XX 0
+ Others 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―

### Single POST request with body


> boom -d 10 -g 20 -m POST -b body.json https://www.sample.com/
Boom running for 10s over the api: https://www.google.com/
20 Active Concurrent connections!
10 / 10 [--------------------------------------------------------------] 100.00%

| Statistics | value |
| ================================== |
+ Total Reqs 1424
+ Fastest Reqs 128.59929ms
+ Slowest Reqs 273.003861ms
+ Average Reqs 1.026262071s
+ Error Count 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―
| Status Code | Count |
| ================================== |
+ 1XX 0
+ 2XX 1600
+ 3XX 0
+ 4XX 0
+ 5XX 0
+ Others 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―

### Multiple requests using multi request mode


> boom --mul -d 10 -g 20 -b body.json
Boom running for 10s over the api:
20 Active Concurrent connections!
10 / 10 [--------------------------------------------------------------] 100.00%

| Statistics | value |
| ================================== |
+ Total Reqs 1424
+ Fastest Reqs 128.59929ms
+ Slowest Reqs 273.003861ms
+ Average Reqs 1.026262071s
+ Error Count 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―
| Status Code | Count |
| ================================== |
+ 1XX 0
+ 2XX 1600
+ 3XX 0
+ 4XX 0
+ 5XX 0
+ Others 0
― ― ― ― ― ― ― ― ― ― ―― ― ― ― ― ― ― ― ―

sample_request.json
```

[
{
"url": "http://www.sample.com",
"method": "PUT",
"body": {
"a": "1",
"b": "2"
},
"header": {
"key": "value"
}
},
{
"url": "http://www.sample.com",
"method": "POST",
"body": {
"a": 1,
"b": 2
},
"header": {
"key1": "value1",
"key2": "value2"
}
}
]
```
## Prerequisites

Golang should be installed on your computer, boom is compatible with go1.12 and above

## Roadmap

See the [open issues](https://github.com/Ashwin-Rajeev/boom/issues) for a list of proposed features (and known issues).

## Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See `LICENSE` for more information.

## Contact

Email : [[email protected]]([email protected])
GitHub : [https://github.com/Ashwin-Rajeev](https://github.com/Ashwin-Rajeev)
Website : [https://ashwinrajeev.com](https://ashwinrajeev.com)