Flood is a load simulator useful for automatic Comet/PUSH application stress-testing. It is asynchronous, event based and enables you to create JSON encoded test scenarios of arbitrary complexity involving tens of thousands of simulated users, no Erlang required!
Some of the most common use cases that Flood might be helpful in testing are:
- Massive, real-time, on-line chats,
- Publisher-Subscriber channels,
- Instant messaging.
However, Flood is general enough to test any event-based Comet application that uses the supported protocols.
Flood currently supports the Socket.IO protocol over WebSocket and XHR-polling transports with emphasis on Socket.IO event based communication. Flood also has some capabilities of using raw HTTP requests.
Flood uses several awesome libraries that are listed below. Since Flood is currently in development, no particular stable versions are required and by default the newest available versions are pulled in.
- Lager - a logging framework, found here.
- Ibrowse - an HTTP client, found here.
- Folsom - a metrics system, found here.
- JSONx - a fast JSON parser, found here.
- Jesse - a JSON Schema validator, found here.
websocket_client
- a WebSocket client, found here.
To run Flood simply run the start-dev.sh script and pass it the name of the Flood scenario to run:
$ ./start-dev.sh path/to/test.json
More about Flood and test scenarios can be found in the user guide located in the docs/ directory.