Simple utility to tool to send concurrent HTTP requests to a list of URLs.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
This project was initially created to help to generate load for StrixEye Agent.
Creating load for a web application is a very common task for developers. At the very beginning of the load testing process, we were using a popular tool called gobuster to send requests to a list of URLs.
However, this tool was not designed to be used in a production environment. It was designed to be used in a development and most importantly to simulate an abrupt raise of traffic to a web application. go-loader was created to help to simulate a more realistic load. Most of the load and behavior of the application is controlled by random distributions to simulate the real world.
- Single visitor can wait before sending a new request, similar to a real world scenario
- Multiple visitors can request simultaneously to create a load
- Visitors can have unique headers, cookies, and custom payloads
- Visitors can have different wait time distributions, endpoints and ip addresses.
- If the web application supports identifying the originating ip address in the application layer, such as
X-Forwarded-For or
CF-CONNECTING-IP
; then visitors can have different ip addresses.
- If the web application supports identifying the originating ip address in the application layer, such as
X-Forwarded-For or
Thanks to maintainers and communities of the following projects for making development of this CLI easier. Full list of dependencies can be found in go modules file.
General information about setting up go-loader locally
Required software and installations.
- go-loader has no external dependencies. It will work on all machines with supported operating systems and cpu architectures.
- Download latest-release for your operating system/architecture
- Unzip binary and place it somewhere in your path
- Make it executable
Other than Go version 1.16.+, StrixEye CLI has no dependencies/requirements.
Basic building process like the following would suffice.
go build -o go-loader cmd/loader.go
docker pull go-loader:latest
Following command will create 150 concurrent visitors to send requests the default endpoints.
go-loader run --target-host=target.omer.beer --target-scheme=https -f /usr/share/common.txt --visitors 150
The docker image comes as a command line utility, meaning you can access all cli commands.
docker run go-loader --help
The image comes with a built-in list of endpoints. Following command will create 150 concurrent visitors to send requests the default endpoints.
docker run go-loader run --target-host=target.omer.beer --target-scheme=https -f /usr/share/common.txt --visitors 150
For more examples, please refer to the Documentation
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learned, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the Apache License 2.0 License. See LICENSE
for more information.
StrixEye - @strixeye - [email protected]
Project Link: https://github.com/strixeyecom/go-loader