Building a Test Platform in the Cloud with Open Source Technologies
Cloud computing, which aims to provide easy, scalable access to computing resources and IT services on demand, offers new possibilities for testing. A cloud-based test platform delivers automated scaling -- up or down -- of testing infrastructure, which overcomes many challenges of traditional test environments.
A traditional test environment usually is a scaled-down copy of the production environment. Setting one up requires a lot of time and effort because the setup process includes arduous tasks such as procuring the right hardware infrastructure (including an app server, database server, Web server, etc.) and installing the required software (such as the application, database, testing tools, and monitoring tools if needed).
This tutorial explains how we set up a test platform in the cloud using various open source technologies. You can use it as a guide for setting up your own cloud-based test platform.
The following are the open source technologies we used to set up the test platform one we describe here:
- Machines with CentOS 5.2: These will act as the cloud, cluster and node controller.
- Eucalyptus 1.5.1: This open source infrastructure is for the implementation of cloud computing on computer clusters.
- Apache Tomcat 6.0.14: This is the popular open source Servlet container.
- Jakarta JMeter 2.3.2: This open source tool is designed to perform load testing and functional behavior analysis, as well as measure application performance, mainly Web applications.
- MySQL 5.0: This is the popular relational database management system that runs as a server, providing multi-user access to a number of databases.
- Pre-bundled CentOS 5.2 image: This a base image for Tomcat, JMeter and MySQL image creation.
- JPetStore Web application: This sample application is a working demonstration of the J2EE platform in a real application design.
You will need a basic knowledge on the working principles of cloud computing and Eucalyptus.
The Cloud Test Environment Components
The lab environment we used is composed of four machines; one was a 2GB RAM machine and the others were 1GB RAM machines (see Figure 1). Each machine had CentOS5.2 installed. Eucalyptus cloud and cluster RPMs were installed in the 2GB machine, which acted as the cloud as well as the cluster controller. The remaining three machines, which acted as node controllers, had only node RPMs. One of them, a Linux machine with JMeter installed, will be the JMeter master machine. (For Eucalyptus installation instructions, refer to the Eucalyptus Administrator Guide.)
Figure 1. Cloud Test Environment Setup: The lab environment is composed of four machines.
The following are the images we used in our cloud setup:
- A Tomcat image: For application deployment
- A MySQL image: For database-related stuff
- A JMeter image: For testing and monitoring