Go Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
results
upstream
.gitignore
LICENSE
README.md
glide.lock
glide.yaml
main.go
middleware.go
plot.sh
run.sh
server.go
test.go

README.md

x-files-rate

An example program for the blog post The X-Files: Controlling Throughput with rate.Limiter, demonstrating various techniques for rate limiting an HTTP service via middleware.

Use

Bootstrap

This package uses glide to handle dependencies:

glide install
go build

Run

Each rate-limiting middleware can be tested with ever-increasing RPS via vegeta using a customized vegeta test harness. The target names for the middleware can be found in middleware.go. Results are printed to stdout and also stored in ./results/{{target}}.csv.

./run.sh        # defaults to no rate-limiter
./run.sh ticker # targets the "ticker" middleware 

Plot

The output CSV can be converted to SVG graphs using gnuplot. The SVG files are persisted in ./results/plots/{{target}}.svg.

./plot.sh ticker