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.[4] The program tests how an HTTP-based application behaves when multiple users access it at the same time[4] by generating a background load of GET requests.[5] 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.[6]

Vegeta
Original author(s)Tomás Senart[1]
Initial releaseAugust 13, 2013; 11 years ago (2013-08-13)[2]
Stable release
12.12.0[3] Edit this on Wikidata / 29 July 2024; 4 months ago (29 July 2024)
Repositorygithub.com/tsenart/vegeta
Written inGo[4]
Operating systemLinux, Microsoft Windows, macOS[1]
TypeHTTP Load testing
LicenseMIT License[1]
Websitepkg.go.dev/github.com/tsenart/vegeta/lib

In addition to preemptive load testing, the program can also be used for shadow testing,[7] 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.[8] Shadow testing is done in this way in order to analyze anticipated server performance.[9]

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

Usage

edit

The command-line usage is in the format of vegeta [global flags] <command> [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.[1]

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.[1]

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.[12]

Example

edit

An example usage would be to issue echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report from the command-line.[1] 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.

References

edit
  1. ^ a b c d e f Senart, Tomás (October 11, 2020). "GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000!". GitHub. Archived from the original on August 11, 2022. Retrieved August 27, 2022.
  2. ^ Senart, Tomás (August 13, 2013). "Initial commit". GitHub. Archived from the original on August 28, 2022. Retrieved August 27, 2022.
  3. ^ "Release 12.12.0". July 29, 2024. Retrieved August 8, 2024.
  4. ^ a b c d "Load Testing with Vegeta". Scaleway. May 26, 2022. Archived from the original on October 16, 2021. Retrieved August 27, 2022.
  5. ^ Eiermann, Andreas; Renner, Mathias; Großmann, Marcel; Krieger, Udo R. (2017). "On a Fog Computing Platform Built on ARM Architectures". In Eichler, Gerald; Erfurth, Christian; Fahrnberger, Günter (eds.). Innovations for community services : 17th International Conference, I4CS 2017, Darmstadt, Germany, June 26-28, 2017, Proceedings. Cham, Switzerland. p. 83. ISBN 978-3-319-60447-3. OCLC 990058133.{{cite book}}: CS1 maint: location missing publisher (link)
  6. ^ De, Brajesh (2017). API management : an architect's guide to developing and managing APIs for your organization (First ed.). New York. p. 161. ISBN 978-1-4842-1305-6. OCLC 978273106. Archived from the original on August 28, 2022. Retrieved August 27, 2022.{{cite book}}: CS1 maint: location missing publisher (link)
  7. ^ Welch, Nat (2018). Real-world SRE : the survival guide for responding to a system outage and maximizing uptime. Birmingham, UK: Packt. p. 137. ISBN 978-1-78862-644-6. OCLC 1056157467.
  8. ^ "Application deployment and testing strategies". Google Cloud. February 5, 2020. Retrieved August 28, 2022.
  9. ^ Qi, Lin; Qiao, Zhihong; Zhang, Aowei; Qi, Hui; Ren, Weiwu; Di, Xiaoqiang; Wang, Rui (2020). "Performance Analysis of QUIC-UDP Protocol Under High Load". In Tang, Dalai; Li, Wuyungerile (eds.). Mobile wireless middleware, operating systems and applications : 9th EAI International Conference, MOBILWARE 2020, Hohhot, China, July 11, 2020, Proceedings. Cham, Switzerland. p. 70. ISBN 978-3-030-62205-3. OCLC 1225562925. Archived from the original on August 28, 2022. Retrieved August 27, 2022.{{cite book}}: CS1 maint: location missing publisher (link)
  10. ^ Dumitrescu, Sorin (July 10, 2020). "Black Friday. 0 downtime. How Bunnyshell & Vegeta & UiPath can help". BunnyShell.com. Archived from the original on August 28, 2022. Retrieved August 27, 2022.
  11. ^ Levental, Alla (August 26, 2021). "Vegeta Load Testing". BlazeMeter. Archived from the original on August 28, 2022. Retrieved August 27, 2022.
  12. ^ Osman, Paul (2018). Microservices development cookbook : design and build independently deployable, modular services. Birmingham, UK: Packt. p. 210. ISBN 978-1-78847-636-2. OCLC 1055162428. Archived from the original on August 28, 2022. Retrieved August 27, 2022.