Boogie, pure Python HTTP error server.
Modern applications often depend on remote resources, but sometimes there is one unknown. What's gonna happen when remote-site misbehaves? Using Boogie server, you can test how your application behaves when some HTTP connection trouble appears.
python boogie.py [-p PORT] [-l BIND_ADDRESS] [-c CONFIGFILE [-o]]
Boogie can operate in one of the two modes: Config mode or QueryString mode.
In config mode, you can pre-define response parameters in config file. Config file should be valid JSON format. Using this mode, you can specify different parameters for different URI (see Parameters->Config mode section in this document).
Using QueryString mode, you can specify response paraeters directly in query string, after ? (question mark) of URI (see Parmaters->QueryString mode section in this document).
- code - return code for response
- sleep - send response afrer N seconds of sleep
- slowconn - set slowconnection mode
- size - size of data to send in response in KB
- rate - transfer rate from server while sending response in KB/s
You can pass parameters either in config mode, or QueryString mode:
Config mode
{
"/admin": {
"code": 301,
"sleep": 1
},
"default": {
"code": 200
}
}
QueryString mode
<address_of_server>:<port>/?par1name=par1value&par2name=par2value...
Imagine, you want to simulate some errors on www.my-fancy-remote-resource.com website. All you have to do, is to simply edit /etc/hosts file, and add line like this:
127.0.0.1 www.my-fancy-remote-resource.com
Then add some rules to config.json file
{
"/badresource/*": {
"code": 500,
"sleep": 20
},
"/longresource/*": {
"code": 200,
"sleep": 20
},
"default": {
"code": 200,
"sleep": 1
}
}
And start boogie on 80 port:
sudo python boogie.py -p 80 -c /path/to/congig.json
After that, you can check how your application will act without any changes in the code!
To simulate 500 error after 10 seconds delay, send request like:
curl localhost:8080/?code=500&sleep=10
Similar example, but with pre-defined config:
config.json
{
"/app/*": {
"code": 301,
"sleep": 2
},
"default": {
"code": 500,
"sleep": 10
}
}
For every request on /app/* boogie will return 301 status code after 2 secons sleep. For any other request, there will be 10 second delayed response with 500 status code.
To simulate transfering of 10MB data through slow connection (e.g. 10KB/s), send request like:
curl localhost:8080/?code=200&slowconn=True&size=10240&rate=10
- Extend config mode with capability to specify response headers/cookies etc.
- Unify POST and GET handlers