It’s been a while and I’ve been reasonably busy starting a new family and getting on with Altentee client work. I’m still galavanting about in the commercial performance testing space working on all sorts of target systems with a mixed bag of commercial and open source tools.

In the meantime, and the purpose of this post, I’d like to re-introduce you to Gridinit.com. In its third iteration (or third re-invention) it serves as a collection of performance and test automation tools, bound together in the cloud and reporting as a single entity. The tools I’m using are:
- JMeter for high volume protocol based load testing. I favour this tool because it allows for more complex test design (emulate user cache, session cookies, header manipulation, conditional logic) whilst still being able to achieve reasonably high concurrency and throughput from a single machine.
- Siege which is basically a high volume url basher. Sometimes it’s easier just to whack a front page and associated resources to get a very basic indication of performance. Tools such as Siege are good for this high volume type load. Soon to be added will be Httperf, which is of a similar vein, but also obeys things like TCP keepalives so you can also test high concurrency as well as volume targets.
- Watir WebDriver for browser based testing. I always keep a small pool of real browsers running under load, as you’d be surprised what types of issues this control sample can weasel out. This is where the first iteration of Gridinit was born, until I accepted that browser based load testing is not economically viable when executed without some form of protocol based load to support it. I’m also looking at some more efficient full browser (but headless) implementations, particularly around phantomjs.
No surprises there, three stable workhorses that get that job done.
But testing site after site and using early versions of the grid, I realised something was missing. It took a step back into the commercial world of tools to realise what that was. Canned reporting.
I was tired of re-inventing the collection and reporting mechanism for each test effort. Whether that was man-draulic-ally sucking in humongous CSV files, writing exorbitant parsers, or flipping through different charting packages, trust me, I tried them all.
I’m a big fan of templating the test effort, so you can get on with the job of analysing results, rather than worrying about the formatting of them, so I settled on the following tools for the onerous task of data collection and reporting:
- Logstash to munge and grok pretty much any log format and ship them off to grid central via Zero MQ. This tool is awesome. Available as a jar file, I use its agents to tail all the logs of the different performance and test automation tools, grok their results into a useable format and store them in elasticsearch.
- Elasticsearch just makes sense really. I have all this disparite data, seemingly impossible to index yet elasticsearch lets me index using JSON over HTTP, scale out to the near horizon and search in real time. You just have to use it to see what I mean.
Hopefully clean, simple, powerful and ready to paste into any report.
So now I have the means to consistently generate the load, the mechanism to index and search the data generated, and glue, being a simple rails application, to tie it all together. It’s hosted on the cloud, runs on EC2 or any Debian based image making it pretty damn portable and cheap. And best of all, it’s all open source. Yep, no monthly fees, no pay per VU, just try out the demo on Gridinit.com and if you like, fork it, or bootstrap your own image. If there’s enough interest I’ll make a snapshot of the AMI publicly available for EC2 users.
I’ll be tracking issues on github and making regular updates to the site as I use it for more clients. How to use it will be blogged about here. Let me know how you go.
Read More



