A load generator in Go language.
Compile a binary with go tool (use go >= 1.5.2):
go get github.com/yandex/pandora
go build github.com/yandex/pandora
There are also binary releases available.
Run this binary with your .json config (see examples):
./pandora myconfig.json
Or let Yandex.Tank make it easy for you.
You can write plugins with the next extension points:
ammo.Provider
aggregate.ResultListener
limiter.Limiter
gun.Gun
If you don want to build pandora without http gun:
go build -tags 'noHttpGun' github.com/yandex/pandora
If you don want to build pandora without spdy gun:
go build -tags 'noSpdyGun' github.com/yandex/pandora
See architectural scheme source in docs/architecture.graphml
. It was created with
YeD editor, so you’ll probably
need it to open the file.
Pandora is made of components. Components talk to each other over the channels. There are different types of components.
Ammo decoder knows how to make an ammo object from an ammo file or other external resource. Ammo provider uses a decoder to decode ammo and passes ammo objects to the Users.
User pool controls the creation of Users. All users from one user pool will get ammo from one ammo provider. User creation schedule is controlled with Startup Limiter. All users from one user pool will also have guns of the same type.
Limiters are objects that will put messages to its underlying channel according to a schedule. User creation, shooting or other processes thus can be controlled by a Limiter.
User takes an ammo, waits for a limiter tick and then shoots with a Gun it has. Guns are the tools to send a request to your service and measure the parameters of the response.
Result listener's task is to collect measured samples and save them somewhere.