A framework for running and building load tests on a Drupal site.
The goal of this module is to allow site administrators to run benchmarks of there website under various configuration settings to help find bottlenecks and other issues that might be slowing down their site. It also targeted towards developers who wish to design load tests for their own modules.
Use Cases
One of the built in test suites that can be used automatically runs through the list of enabled modules and runs load tests on each module individually. At the end of the test run the user can view the duration of each test and will be able to see if it ran significantly slower when any particular module was enabled.
More involved load testing can also be done using pre-configured states. For example, a developer might write a patch against core and want to see what the effect the patch might have on the site load. They can set up a number of states each with different configuration settings and setup a script (maybe using ab2) to run a series of tests against the site and automatically changing the state when each test is done.
Writing load tests
Writing a load test is almost identical to writing a simpletest test. There are two key differences:
A collection of modules to provide an API to integrate with GeoNames webservices. The modules in this package enable access to all information provided by the XML-based Services from GeoNames.
Taxonomy Enhancer is a module which will extend the fields available to any given term. Each Vocabulary is fully configurable in its own right and can have as many fields "bolted on" as one likes.
Unfortunately (or fortunately, depending on how you wish to look at it), Drupal does not provide a "term load" or "vocabulary load" hook. There are hooks to pick up when a term or vocabulary is inserted, updated or deleted - but not loaded. This means that this module cannot easily pickup and extend a term automatically. This causes Taxonomy Enhancer to be more of an "on demand" service which is a double edged sword. On one hand, you are not bloating terms unnecessarily - you may not ALWAYS want the term to be extended. On the down side, it does mean that you will have to manually invoke the extension of the term when you need it.