

The client:
All Star Directories, Inc. is one of the Internet's fastest growing publishers of online and career school directories matching millions of highly qualified prospective students with the schools that best meet their education needs. Recently, Inc. Magazine ranked All Star among the fastest growing companies in the country and the Puget Sound Business Journal has recognized the company as one of Washington State's fastest growing companies for five consecutive years. From leading research institutions to fast-growing online and for-profit schools, nearly 6,000 featured schools trust All Star Directories as the authority in online student recruitment. The All Star network of sites focuses on a wide range of fields including All Allied Health Schools, All Art Schools, All Business Schools, All Education Schools, All Psychology Schools, All Criminal Justice Schools, All Computer Schools and All Nursing Schools.
Challenge:
The client needed an automated system capable of executing tests and collecting results from a number of servers, including web servers, databases, load balancers and load generating machines. The entire process, including pre and post processing steps needed to be 100% automated, including steps such as building a test database with known data, executing shell scripts, starting/restarting servers, etc. The framework needed a master serer/service, capable of starting and stopping test, collecting results, and keeping dservers in sync with each step through the process. Additionally, the system needed to be 100% configurable and modular, allowing both new test cases, and new "services" (IE jprobe, yourkit, jmeter, grinder) to be implemented with minimal/no coding.
The solution:
A solution was designed and implemented in shell scripts for the client's CentOS server pool. The system consisted of a master controlling script, the TestRunner, which is responsible for remotely executing the TestClient script suite, which is installed to each server in the testing/target pool. The TestClient suite consists of a primary script, executed over SSH via the TestRunner. The main script is functionally similar to Unix's init process, and it's init.d/rc.d directory structure. Each test has multiple phases (similar to runlevels); such as prepping, testing, collating, etc. Each runlevel has a series of tests/profilers it can start and stop, such as JMeter, YourKit, JProbe, etc. All tests are configured via a single text file, which specifies which tests/profilers to run, which pre- and post- test script to execute, etc. In addition, a programmer's API/development guide was provided to allow the customer to seamlessly continue development on the platform.
Technologies:
The client wanted to design a lightweight system, capable of taking advantage of their specific network and server configuration. All scripting was done in BASH, with heavy use of AWK. Remote execution was handled by SSH with private keys. SVN was used to collate test/profiler results. The following 3rd party application was supported by the testing framework out of the box.
A quote from our client...
"We were engaged in a demanding and deadline driven project and were looking for partners to assist. LG Consulting proposed a flexible yet solid solution, based on our input and architecture, to meet our performance and load testing needs. Their delivery was well thought out, responsive to our requirements and feedback, and most importantly showed real commitment to our overall success. The consultant on the project was friendly, creative, and his knowledge of the subject matter was second to none.
We were able to deliver to the business a resilient and modular solution that provided predictable and reliable results. The final solution not only reduces our testing time frame by over 80%, but will also allow for a measureable and easily repeatable baseline. Truly a great experience working with them on this project."
--Dave Gendel
IT Operations Manager