All Projects → americanexpress → baton

americanexpress / baton

Licence: Apache-2.0 license
HTTP load testing witten in Go

Programming Languages

go
31211 projects - #10 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to baton

karate
Test Automation Made Simple
Stars: ✭ 6,384 (+3506.78%)
Mutual labels:  load-testing
load-testing-toolkit
Collection of open-source tools for debugging, benchmarking, load and stress testing your code or services.
Stars: ✭ 65 (-63.28%)
Mutual labels:  load-testing
k6-operator
An operator for running distributed k6 tests.
Stars: ✭ 170 (-3.95%)
Mutual labels:  load-testing
goku
goku is a HTTP load testing application written in Rust
Stars: ✭ 29 (-83.62%)
Mutual labels:  load-testing
cucumber-performance
A performance testing framework for cucumber
Stars: ✭ 28 (-84.18%)
Mutual labels:  load-testing
yandex-tank-api
HTTP API for Yandex.Tank
Stars: ✭ 16 (-90.96%)
Mutual labels:  load-testing
k6-reporter
Output K6 test run results as formatted & easy to read HTML reports
Stars: ✭ 160 (-9.6%)
Mutual labels:  load-testing
awesome-gatling
A collection of resources covering different aspects of Gatling load-testing tool usage.
Stars: ✭ 36 (-79.66%)
Mutual labels:  load-testing
jmeter-aci-terraform
Scalable cloud load/stress testing pipeline solution with Apache JMeter and Terraform to dynamically provision and destroy the required infrastructure on Azure.
Stars: ✭ 114 (-35.59%)
Mutual labels:  load-testing
f1
A tool for writing load test scenarios in Golang with a powerful command line runner
Stars: ✭ 81 (-54.24%)
Mutual labels:  load-testing
chef-load
chef-load - a tool for simulating load on a Chef Infra Server and/or a Chef Automate server
Stars: ✭ 30 (-83.05%)
Mutual labels:  load-testing
mzbench
Distributed Benchmarking
Stars: ✭ 39 (-77.97%)
Mutual labels:  load-testing
grandma
👵 fully programmable stress testing framework
Stars: ✭ 20 (-88.7%)
Mutual labels:  load-testing
ultron
new repository: https://github.com/wosai/ultron
Stars: ✭ 15 (-91.53%)
Mutual labels:  load-testing
gatf
Generic Automated Test Framework For API/UI/RPA/Load Testing
Stars: ✭ 15 (-91.53%)
Mutual labels:  load-testing
jmeter-to-k6
Converts JMeter .jmx files to k6 JS code
Stars: ✭ 57 (-67.8%)
Mutual labels:  load-testing
artillery-engine-kinesis
Experimental AWS Kinesis support for Artillery 🕳
Stars: ✭ 12 (-93.22%)
Mutual labels:  load-testing
karate-runner
VSCode Extension for Karate
Stars: ✭ 23 (-87.01%)
Mutual labels:  load-testing
bounded-disturbances
A k6/.NET red/green load testing workshop
Stars: ✭ 39 (-77.97%)
Mutual labels:  load-testing
blockchain-load-testing
Code for load testing the Stellar network.
Stars: ✭ 36 (-79.66%)
Mutual labels:  load-testing

Baton

Baton is a load testing tool written in Go. It currently supports GET, POST, PUT, and DELETE requests.

Build Status

Install Baton

Installation of Baton with Go is as easy as running go get.

$ go get -u github.com/americanexpress/baton

Binary releases are available.

Using Baton

Baton currently supports the following options:

  -b string
    	Body (use instead of -f)
  -c int
    	Number of concurrent requests (default 1)
  -f string
    	File path to file to be used as the body (use instead of -b)
  -i	Ignore TLS/SSL certificate validation
  -m string
    	HTTP Method (GET,POST,PUT,DELETE) (default "GET")
  -o	Supress output, no results will be printed to stdout
  -r int
    	Number of requests (use instead of -t) (default 1)
  -t int
    	Duration of testing in seconds (use instead of -r)
  -u string
    	URL to run against
  -w int
    	Number of seconds to wait before running test
  -z string
    	Read requests from a file

Below is A basic example which will use 10 workers to send 200,000 requests is as follows:

$ baton -u http://localhost:8080/test -c 10 -r 200000

Instead of the number of requests, you can specify the time (in seconds) during which the requests should be sent. Baton will wait for all the responses to be received before reporting the results.

Requests file

When specifying a file to load requests from (-z filename), the file should be of CSV format (RFC-4180)

<method>,<url>,[<body>],[<header-key>:<header-value>, ...]
...

You can have one or more headers at the end separated by ,

For example:

POST,http://localhost:8888,body,Accept: application/xml,Content-type: Secret
GET,http://localhost:8888,,,

Example Output:

====================== Results ======================
Total requests:                               1254155
Time taken to complete requests:        10.046739294s
Requests per second:                           124832
Max response time (ms):                           440
Min response time (ms):                            55
Avg response time (ms):                        156.70
===================== Breakdown =====================
Number of connection errors:                        0
Number of 1xx responses:                            0
Number of 2xx responses:                      1254155
Number of 3xx responses:                            0
Number of 4xx responses:                            0
Number of 5xx responses:                            0
=====================================================

Features which are on the horizon...

  • Dynamic generation of data based on a template
  • Testing REST endpoints with dynamically generated keys

Caveats

  • Statistics are only provided when a fixed number of requests is provided (instead of providing a duration).

Dependency Management

Dep is currently being utilized as the dependency manager for Baton. Details of how to use dep can be found on https://golang.github.io/dep/.

Before updating any dependencies, ensure you have fully tested all functionality.

Contributing

We welcome Your interest in the American Express Open Source Community on Github. Any Contributor to any Open Source Project managed by the American Express Open Source Community must accept and sign an Agreement indicating agreement to the terms below. Except for the rights granted in this Agreement to American Express and to recipients of software distributed by American Express, You reserve all right, title, and interest, if any, in and to Your Contributions. Please fill out the Agreement.

Please feel free to open pull requests and see CONTRIBUTING.md for commit formatting details.

License

Any contributions made under this project will be governed by the Apache License 2.0.

Code of Conduct

This project adheres to the American Express Community Guidelines. By participating, you are expected to honor these guidelines.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].