Thursday, June 01, 2006

rwb (the Ruby Web Bench) is a great idea that needs some work. This is probably not a project for a first timer, as it's going to need some time and effort to really shine.

rwb is intended to provide a tool for performing capacity or functional tests against a website. It differs from existing tools (like ab or httperf) in that it's extremely configurable. You can write testing scripts that define weighted lists of URLs and view the results in a number of ways.

The current implementation has some problems though, which will need to be cleaned up:

Overall Performance: rwb is a multithreaded app. It should really be made into a multiprocess app, using DRb to communicate between processes.

HTTP Performance: rwb uses the native ruby http client, this adds some latency into the request cycle as compared to a C based client.

HTTP Request Reporting Detail: rwb can only report the total download time of a request. It should be able to split out the various stages of the request.

Request Configuration: rwb needs to be (even) more flexible in the way you can define requests.

I think that pulling in the http client implementation from httperf would solve two of the problems above (it's GPLed, so it's available). The others will require some Ruby hacking.

If you're interested in taking over rwb, post a comment below. Tell me about your thoughts, and let me know why you think you're the right person for the job. In the right hands, I think rwb can really become something special.

Matt,Why don't you grab the cvs tree (either a tarball or by checking it out. If you join the rwb mailing list, you can ask questions there. If after a bit of poking around you're ready for us (the existing developers) to add the developer bit to your user account, we can do that. A while after that, we can talk about making you the maintainer, if you're interested.