Vegeta (software)

Vegeta is an HTTP load testing tool written in Go that can be used as a command in a command-line interface or as a library. The program tests how an HTTP-based application behaves when multiple users access it at the same time by generating a background load of GET requests. Vegeta is used to generate a sustained, constant number of requests per second in order to discover how long a service can sustain a peak load before dropping in performance.

In addition to preemptive load testing, the program can also be used for shadow testing, where traffic from a live version of an application is mirrored onto a test version to determine how it handles the same traffic load, without causing potential disruption to the live version of the application. Shadow testing is done in this way in order to analyze anticipated server performance.

Vegeta is provided for use by web hosting services such as Scaleway to use varied and multiple requests to stress test client HTTP services. It is also used with dedicated load-testing platform services such as BlazeMeter.

Usage
The command-line usage is in the format of vegeta [global flags] [command flags]. The three global flags are -cpus int which specifies the number of CPUs to use, -profile string which enables profiling, and -version which prints the software version and then terminates the program.

The commands available are attack, encode, plot, and report, each with its own various command flag options, and both attack input and report output can be done in an optional JSON format when specified with the appropriate flag.

Vegeta can specify targets as URLs in a separate file with optional custom headers and requests, which can then be used as an input option on the command line.

Example
An example usage would be to issue echo "GET http://localhost/" from the command-line. This example uses the echo command to output GET http://localhost/, and then executes the attack command for that output for five seconds. After that, it uses the tee command to write results to a file called results.bin, and runs the report command to display the output of the attack results.