Applies to: TestComplete 7
This article explains the use of different addresses of a cloud computer (which is called an instance) and describes how to use elastic IPs to solve the problem related to address changing after restarting cloud computers.
For related technical articles on cloud testing, please see the Other Articles About Cloud Testing section.
Each computer in a cloud has the internal IP, external IP, private DNS and public DNS addresses associated with it – these addresses play the same role as the corresponding addresses of an ordinary physical PC. They can be used to transfer data among computers in a cloud or to organize distributed testing and other communications.
Computers in a cloud are called instances. Instances launched from an Amazon Machine Image (AMI) of the EBS Images type can later be stopped and then started again. After restarting an instance, its internal IP, external IP, private DNS and public DNS addresses all change. So, if you use these addresses in your automated tests, these tests will stop working when the instance is stopped.
To solve the problem, you can make use of a special Amazon EC2 service, which is called Elastic IP. Elastic IP allows allocating external IPs and associating them with your instances. At that, such IP addresses can later be disassociated from some instances and then associated with other instances.
When stopping an instance, its association with the elastic IP is lost. However, you can associate this elastic IP with any other running instance you have. Thus, when you start the stopped instance again, you can associate it with the same elastic IP. This can be done using not only the AWS Management Console, but also the AWS Command Line Tools and the AWS SDK. Thus, the instance will have the constant IP, and you won’t have to correct the addresses in your test project.
As of February, 2010, the cost of using an elastic IP was as follows:
If you have an allocated elastic IP and do not plan to use it in the future, you can release the address not to pay for it.
Let’s see how we can find out each of the instance addresses. Open the AWS Management Console. For that, go to the Amazon EC2 service’s http://aws.amazon.com/ec2 page and click Sign Up For Amazon EC2:
Figure 1. The Amazon EC2 service page
On the page that appears, specify your e-mail and password and sign in to Amazon EC2. After you have logged into the system, click the AWS Management Console link. The following web page will be
Figure 2. The AWS Management Console
We will need a running instance. If you have no running instances, you can launch a new one. To launch it, you need to create a key pair and configure security groups if you have not done this before. We will launch an instance in the US East region from an AMI with the ami-ba22c0d3 ID. The AMI is an image of a computer with the i386 architecture and the Microsoft Windows Server 2003 R2 operating system. The step-by-step procedure of launching an instance from such an AMI is described in the Cloud Testing With TestComplete article.
Go to the My Instances page in the AWS Management Console. For that, select INSTANCES > Instances in the Navigation panel. On this page, you can view the list of launched instances. By default, the page is customized so that it displays public DNS names and elastic IPs for all of the instances. If you want to view advanced settings for an instance, select the instance by enabling its check box:
Figure 3. The public DNS, private DNS and elastic IP addresses for the instance
In this way, you can learn the public DNS, the private DNS and the elastic IP of your instance. To find out the internal IP, click Show/Hide on the My Instances page:
Figure 4. The button invoking the Show/Hide Columns dialog
The Show/Hide Columns dialog window will appear. Use this dialog to choose which properties will be shown in the list of launched instances. Let us check only the instance ID, status and all the instance addresses the dialog provides:
Figure 5. Customizing the instances list to display instance IDs, statuses and addresses
Click Close. The My Instances page will look like this:
Figure 6. The My Instances page after customizing the instances list’s columns to be displayed
Now, you can see your instance’s internal IP in the Private IP column.
There is no special column for the external IP – the public DNS column contains it. In our example, the 184.108.40.206 external IP corresponds to the instance having the ec2-75-101-240-121.compute-1.amazonaws.com public DNS.
As we’ve already mentioned above, after restarting an instance, the internal IP, external IP, private DNS and public DNS addresses change. So, if you use these addresses in the testing process, you will have to either correct your tests to specify new addresses after restarting instances, or develop your own automatic system which will do that.
The simplest way to organize your distributed tests is to use Elastic IPs. You will need to allocate elastic IPs and associate them with the appropriate instances. Nevertheless, after restarting, you will need to re-associate the instances with the elastic IPs that they were associated with before being stopped. However, this can be easily done by using the AWS Management Console, the AWS Command Line Tools and the AWS SDK. Further, we will explain how to do this using the AWS Management Console. Note that the AWS Command Line Tools and the AWS SDK makes this process more automated, as compared to the manual approach of using the AWS Management Console. For example, you can use one .bat file to launch the needed commands from the AWS Command Line Tools to associate all of the instances at once, and in the AWS Management Console, you will need to make associations for each individual instance.
Let’s associate the instance we have launched with the elastic IP. In general, associating an elastic IP with an instance involves two steps:
To allocate a new elastic IP, go to the Addresses page by selecting NETWORKING & SECURITY > Elastic IPs in the Navigation panel and then click Allocate New Address:
Figure 7. Allocating a new elastic IP
A confirmation window for the elastic IP allocation appears:
Figure 8. Confirming the association of the new elastic IP
Click Yes, Allocate - the new elastic IP will be allocated.
Now, let’s associate the allocated elastic IP with the instance. To do this, select the elastic IP (by enabling its check box) and click Associate:
Figure 9. Associating the elastic IP with the instance
The Associate Address dialog will be displayed. The dialog’s Instance ID combo box contains the IDs of the running instances (the list does not contain the stopped instances’ IDs). Choose the ID of the instance you want to associate the address with from the list and click Associate:
Figure 10. Selecting the instance to be associated with the elastic IP
The elastic IP will be associated with the instance:
Figure 11. The elastic IP has been associated with the instance
After that, the instance’s external IP and public DNS will change, but the internal IP and private DNS will stay unchanged:
Figure 12. Instance properties before and after the elastic IP is associated with the instance
In a number of cases, you may need to disassociate elastic IPs. For example, you will need to do this to re-associate an IP (first, the elastic IP is disassociated from one instance and then associated with another). Re-associating IPs can be convenient, for example, if you need to test a web application by using TestComplete in several different environments. In this case, you will have several instances with the needed environments and the web application and a single test which uses the elastic IP to address a test instance. To test the application in all environments, you just need to re-associate the elastic IP with the above mentioned test instances several times and launch the test. You can also associate individual elastic IPs with each test instance, but in the above mentioned example, you will have a single elastic IP instead of several ones, so using this resource will cost less.
The procedure of deleting the association between an elastic IP and an instance involves two steps, one of which is obligatory, and the other one is optional:
Important: you need to perform step 2 only if you are not going to use this IP any longer.
Let’s disassociate the elastic IP from the instance we have just associated it with and then release this address.
Go to the Addresses page – for that, select NETWORKING & SECURITY > Elastic IPs in the Navigation panel. After that, select the needed associations between elastic IPs and instances (by enabling their check boxes) and click Disassociate:
Figure 13. Disassociating the elastic IP from the instance
The Disassociate Addresses dialog window appears – here, you will need to confirm that you want to disassociate the address:
Figure 14. Confirming the disassociation of the elastic IP from the instance
Click Yes, Disassociate – the address will be disassociated:
Figure 15. The elastic IP has been disassociated from the instance
Once the IP and public DNS have been disassociated, they are no longer associated with the instance, and later, new external addresses will be allocated to it:
Figure 16. Allocating new external addresses after disassociating the elastic IP
To release elastic IPs, you need to select the needed elastic IPs (by enabling their check boxes) and click Release Address:
Figure 17. Releasing the elastic IP
A confirmation window for releasing the addresses appears:
Figure 18. Confirming the address releasing
Click Yes, Release – the address will be released. Once it is released, you cannot use it any longer and don’t need to pay for it anymore.
In this article, we have discussed different addresses associated with instances and explained how the problem related to address changes after restarting instances can be solved with elastic IPs. We hope that this information will help you properly organize your cloud testing environment.
© 2012 SmartBear Software. All rights reserved.