Skip to content

strixeyecom/go-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


go-loader

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
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

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.

Features

  • 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.

Built With

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.

Getting Started

General information about setting up go-loader locally

Prerequisites

Required software and installations.

  • go-loader has no external dependencies. It will work on all machines with supported operating systems and cpu architectures.

Installation

Tarball

  1. Download latest-release for your operating system/architecture
  2. Unzip binary and place it somewhere in your path
  3. Make it executable

Build

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
    docker pull go-loader:latest

Usage

Shell

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

Docker

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

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 be learned, 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 Apache License 2.0 License. See LICENSE for more information.

Contact

StrixEye - @strixeye - [email protected]

Project Link: https://github.com/strixeyecom/go-loader

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published