An tool that allows for replaying load over and over and over (and over) again.
It uses Mesos/Marathon for running its HTTP clients. It uses Kafka to read traffic data.
Primary components are:
- CLI - CLI to start HttpClients on Mesos (see Main);
- HttpClient - client running on Mesos, that generates HTTP traffic;
- Emitter - emitter (see SampleEmitter), producing traffic to Kafka topic (consumed by HttpClient(s));
In order to run the tool following steps should be executed:
- Build via
./gradlew jar
- Start
./punxsutawney.sh
- Verify app is running via Mesos & Marathon UIs
- Start emitting traffic to Kafka topic
punxsutawney
(see SampleEmitter) - Monitor stdout (via Mesos UI) of each HttpClient to see rps, failures, etc
Note: if running N HttpClient instances, Kafka topic should contain at least N partitions, in order for HttpClients to be able to consume concurrently.
HttpClient consumes Kafka messages, containing serialized Requests instances. Each Requests instance is designed to carry a batch of HTTP requests. Emitter should batch 1k - 10k requests together to populate Requests object.