an interesting milestone: mod_slow
Crossed some kind of threshold today, I am sure. I needed a quick'n'dirty web server hack so broke out C for an apache module! What is happening to me?!
Basically, I needed something to put behind a proxy to do some load and capacity testing of the proxy. As I wanted to have things like the size of the response and time of the response be easily configurable on the load generator I needed to hack something up...
#include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h" #include "apr_time.h" #include "apr_strings.h" static int handler(request_rec *r) { if (r->args) apr_sleep(apr_atoi64(r->args) * 1000); return DECLINED; } static void register_hooks(apr_pool_t *p) { ap_hook_handler(handler, NULL, NULL, APR_HOOK_MIDDLE); } module AP_MODULE_DECLARE_DATA slow_module = { STANDARD20_MODULE_STUFF, NULL, NULL, NULL, NULL, NULL, register_hooks };
This very nicely lets me drop artificial slowdowns in front of the the
default handler (serve up files) so I can control "processing time" and
file size (pick the file with the size I want):
http://binky/big.html?2000
Sweet! Am kind of floored that the first solution which leapt to mind for
me was an apache module in C, though!
For some reason, putting the sleep in fixups
doubled the
sleep time, so I made it a declined handler and things worked fine. Need
to figure out why.... someday.