Skip to content

Ashwin-Rajeev/boom

Repository files navigation

Boom

HTTP(S) benchmarking tool written in Golang

screenshot

Build Status GoDoc Go Report Card codecov License GitHub release (latest by date)

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

Getting Started

Installing

To get the latest and greatest run:

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

Usage

Usage:  boom [<flags>] <url>

        -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 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 : ashwinrajeev916@gmail.com
GitHub : https://github.com/Ashwin-Rajeev
Website : https://ashwinrajeev.com