fixing a bunch of line endings in the test directory

This commit is contained in:
David Nalley 2012-06-26 11:19:19 -04:00
parent e984c3c098
commit dcceb9d59b
28 changed files with 4664 additions and 4664 deletions

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/bash
# Copyright 2012 Citrix Systems, Inc. Licensed under the
# Apache License, Version 2.0 (the "License"); you may not use this
# file except in compliance with the License. Citrix Systems, Inc.
@ -16,18 +16,18 @@
while true
do
sleep 600
pid=`ps -ef | grep 'management.jmxremote' | grep -v 'cloud-management' | grep -v grep | awk '{print \$2}'`
if grep -q java.lang.OutOfMemoryError /var/log/vmops/vmops.log
then
while true
do
t=$(date +"%h%d_%H_%M_%S")
jmap -dump:format=b,file=/root/dump/heap.bin.$t $pid
sleep 1800
done
fi
while true
do
sleep 600
pid=`ps -ef | grep 'management.jmxremote' | grep -v 'cloud-management' | grep -v grep | awk '{print \$2}'`
if grep -q java.lang.OutOfMemoryError /var/log/vmops/vmops.log
then
while true
do
t=$(date +"%h%d_%H_%M_%S")
jmap -dump:format=b,file=/root/dump/heap.bin.$t $pid
sleep 1800
done
fi
done

View File

@ -10,176 +10,176 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.sample;
import java.io.FileInputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import com.cloud.utils.encoding.Base64;
/**
package com.cloud.sample;
import java.io.FileInputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import com.cloud.utils.encoding.Base64;
/**
*
*
*
*
*
*
*
*
*
*/
/**
* Sample CloudStack Management User API Executor.
*
* Prerequisites: - Edit usercloud.properties to include your host, apiUrl, apiKey, and secretKey - Use ./executeUserAPI.sh to
* execute this test class
*
* @author will
*
*/
public class UserCloudAPIExecutor {
public static void main(String[] args) {
// Host
String host = null;
// Fully qualified URL with http(s)://host:port
String apiUrl = null;
// ApiKey and secretKey as given by your CloudStack vendor
String apiKey = null;
String secretKey = null;
try {
Properties prop = new Properties();
prop.load(new FileInputStream("usercloud.properties"));
// host
host = prop.getProperty("host");
if (host == null) {
System.out.println("Please specify a valid host in the format of http(s)://:/client/api in your usercloud.properties file.");
}
// apiUrl
apiUrl = prop.getProperty("apiUrl");
if (apiUrl == null) {
System.out.println("Please specify a valid API URL in the format of command=&param1=&param2=... in your usercloud.properties file.");
}
// apiKey
apiKey = prop.getProperty("apiKey");
if (apiKey == null) {
System.out.println("Please specify your API Key as provided by your CloudStack vendor in your usercloud.properties file.");
}
// secretKey
secretKey = prop.getProperty("secretKey");
if (secretKey == null) {
System.out.println("Please specify your secret Key as provided by your CloudStack vendor in your usercloud.properties file.");
}
if (apiUrl == null || apiKey == null || secretKey == null) {
return;
}
System.out.println("Constructing API call to host = '" + host + "' with API command = '" + apiUrl + "' using apiKey = '" + apiKey + "' and secretKey = '" + secretKey + "'");
// Step 1: Make sure your APIKey is URL encoded
String encodedApiKey = URLEncoder.encode(apiKey, "UTF-8");
// Step 2: URL encode each parameter value, then sort the parameters and apiKey in
// alphabetical order, and then toLowerCase all the parameters, parameter values and apiKey.
// Please note that if any parameters with a '&' as a value will cause this test client to fail since we are using
// '&' to delimit
// the string
List<String> sortedParams = new ArrayList<String>();
sortedParams.add("apikey=" + encodedApiKey.toLowerCase());
StringTokenizer st = new StringTokenizer(apiUrl, "&");
String url = null;
boolean first = true;
while (st.hasMoreTokens()) {
String paramValue = st.nextToken();
String param = paramValue.substring(0, paramValue.indexOf("="));
String value = URLEncoder.encode(paramValue.substring(paramValue.indexOf("=") + 1, paramValue.length()), "UTF-8");
if (first) {
url = param + "=" + value;
first = false;
} else {
url = url + "&" + param + "=" + value;
}
sortedParams.add(param.toLowerCase() + "=" + value.toLowerCase());
}
Collections.sort(sortedParams);
System.out.println("Sorted Parameters: " + sortedParams);
// Step 3: Construct the sorted URL and sign and URL encode the sorted URL with your secret key
String sortedUrl = null;
first = true;
for (String param : sortedParams) {
if (first) {
sortedUrl = param;
first = false;
} else {
sortedUrl = sortedUrl + "&" + param;
}
}
System.out.println("sorted URL : " + sortedUrl);
String encodedSignature = signRequest(sortedUrl, secretKey);
// Step 4: Construct the final URL we want to send to the CloudStack Management Server
// Final result should look like:
// http(s)://://client/api?&apiKey=&signature=
String finalUrl = host + "?" + url + "&apiKey=" + apiKey + "&signature=" + encodedSignature;
System.out.println("final URL : " + finalUrl);
// Step 5: Perform a HTTP GET on this URL to execute the command
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(finalUrl);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
// SUCCESS!
System.out.println("Successfully executed command");
} else {
// FAILED!
System.out.println("Unable to execute command with response code: " + responseCode);
}
} catch (Throwable t) {
System.out.println(t);
}
}
/**
* 1. Signs a string with a secret key using SHA-1 2. Base64 encode the result 3. URL encode the final result
*
* @param request
* @param key
* @return
*/
public static String signRequest(String request, String key) {
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
mac.init(keySpec);
mac.update(request.getBytes());
byte[] encryptedBytes = mac.doFinal();
return URLEncoder.encode(Base64.encodeBytes(encryptedBytes), "UTF-8");
} catch (Exception ex) {
System.out.println(ex);
}
return null;
}
}
*
*
*
*
*
*/
/**
* Sample CloudStack Management User API Executor.
*
* Prerequisites: - Edit usercloud.properties to include your host, apiUrl, apiKey, and secretKey - Use ./executeUserAPI.sh to
* execute this test class
*
* @author will
*
*/
public class UserCloudAPIExecutor {
public static void main(String[] args) {
// Host
String host = null;
// Fully qualified URL with http(s)://host:port
String apiUrl = null;
// ApiKey and secretKey as given by your CloudStack vendor
String apiKey = null;
String secretKey = null;
try {
Properties prop = new Properties();
prop.load(new FileInputStream("usercloud.properties"));
// host
host = prop.getProperty("host");
if (host == null) {
System.out.println("Please specify a valid host in the format of http(s)://:/client/api in your usercloud.properties file.");
}
// apiUrl
apiUrl = prop.getProperty("apiUrl");
if (apiUrl == null) {
System.out.println("Please specify a valid API URL in the format of command=&param1=&param2=... in your usercloud.properties file.");
}
// apiKey
apiKey = prop.getProperty("apiKey");
if (apiKey == null) {
System.out.println("Please specify your API Key as provided by your CloudStack vendor in your usercloud.properties file.");
}
// secretKey
secretKey = prop.getProperty("secretKey");
if (secretKey == null) {
System.out.println("Please specify your secret Key as provided by your CloudStack vendor in your usercloud.properties file.");
}
if (apiUrl == null || apiKey == null || secretKey == null) {
return;
}
System.out.println("Constructing API call to host = '" + host + "' with API command = '" + apiUrl + "' using apiKey = '" + apiKey + "' and secretKey = '" + secretKey + "'");
// Step 1: Make sure your APIKey is URL encoded
String encodedApiKey = URLEncoder.encode(apiKey, "UTF-8");
// Step 2: URL encode each parameter value, then sort the parameters and apiKey in
// alphabetical order, and then toLowerCase all the parameters, parameter values and apiKey.
// Please note that if any parameters with a '&' as a value will cause this test client to fail since we are using
// '&' to delimit
// the string
List<String> sortedParams = new ArrayList<String>();
sortedParams.add("apikey=" + encodedApiKey.toLowerCase());
StringTokenizer st = new StringTokenizer(apiUrl, "&");
String url = null;
boolean first = true;
while (st.hasMoreTokens()) {
String paramValue = st.nextToken();
String param = paramValue.substring(0, paramValue.indexOf("="));
String value = URLEncoder.encode(paramValue.substring(paramValue.indexOf("=") + 1, paramValue.length()), "UTF-8");
if (first) {
url = param + "=" + value;
first = false;
} else {
url = url + "&" + param + "=" + value;
}
sortedParams.add(param.toLowerCase() + "=" + value.toLowerCase());
}
Collections.sort(sortedParams);
System.out.println("Sorted Parameters: " + sortedParams);
// Step 3: Construct the sorted URL and sign and URL encode the sorted URL with your secret key
String sortedUrl = null;
first = true;
for (String param : sortedParams) {
if (first) {
sortedUrl = param;
first = false;
} else {
sortedUrl = sortedUrl + "&" + param;
}
}
System.out.println("sorted URL : " + sortedUrl);
String encodedSignature = signRequest(sortedUrl, secretKey);
// Step 4: Construct the final URL we want to send to the CloudStack Management Server
// Final result should look like:
// http(s)://://client/api?&apiKey=&signature=
String finalUrl = host + "?" + url + "&apiKey=" + apiKey + "&signature=" + encodedSignature;
System.out.println("final URL : " + finalUrl);
// Step 5: Perform a HTTP GET on this URL to execute the command
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(finalUrl);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
// SUCCESS!
System.out.println("Successfully executed command");
} else {
// FAILED!
System.out.println("Unable to execute command with response code: " + responseCode);
}
} catch (Throwable t) {
System.out.println(t);
}
}
/**
* 1. Signs a string with a secret key using SHA-1 2. Base64 encode the result 3. URL encode the final result
*
* @param request
* @param key
* @return
*/
public static String signRequest(String request, String key) {
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
mac.init(keySpec);
mac.update(request.getBytes());
byte[] encryptedBytes = mac.doFinal();
return URLEncoder.encode(Base64.encodeBytes(encryptedBytes), "UTF-8");
} catch (Exception ex) {
System.out.println(ex);
}
return null;
}
}

View File

@ -10,115 +10,115 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.longrun;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.apache.log4j.Logger;
public class BuildGuestNetwork {
public static final Logger s_logger= Logger.getLogger(BuildGuestNetwork.class.getClass());
private static final int _apiPort=8096;
private static final int _developerPort=8080;
private static final String _apiUrl = "/client/api";
private static int numVM=1;
private static long zoneId=-1L;
private static long templateId=3;
private static long serviceOfferingId=1;
public static void main (String[] args){
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = "http://localhost";
int numThreads = 1;
while (iter.hasNext()){
String arg = iter.next();
if (arg.equals("-h")){
host="http://"+iter.next();
}
if (arg.equals("-t")){
numThreads=Integer.parseInt(iter.next());
}
if (arg.equals("-n")){
numVM=Integer.parseInt(iter.next());
}
if (arg.equals("-z")){
zoneId=Integer.parseInt(iter.next());
}
if (arg.equals("-e")){
templateId=Integer.parseInt(iter.next());
}
if (arg.equals("-s")){
serviceOfferingId=Integer.parseInt(iter.next());
}
}
final String server = host + ":" + _apiPort + "/";
final String developerServer = host + ":" + _developerPort + _apiUrl;
s_logger.info("Starting test in "+numThreads+" thread(s). Each thread is launching "+numVM+" VMs");
for (int i=0; i<numThreads; i++){
new Thread(new Runnable() {
public void run() {
try{
String username = null;
String singlePrivateIp=null;
Random ran = new Random();
username = Math.abs(ran.nextInt())+ "-user";
//Create User
User myUser = new User(username,username, server, developerServer);
try{
myUser.launchUser();
myUser.registerUser();
}catch (Exception e){
s_logger.warn("Error code: ", e);
}
if (myUser.getUserId()!=null){
s_logger.info("User "+myUser.getUserName()+" was created successfully, starting VM creation");
//create VMs for the user
for (int i=0; i<numVM; i++){
//Create a new VM, add it to the list of user's VMs
VirtualMachine myVM = new VirtualMachine(myUser.getUserId());
myVM.deployVM(zoneId, serviceOfferingId, templateId, myUser.getDeveloperServer(), myUser.getApiKey(), myUser.getSecretKey());
myUser.getVirtualMachines().add(myVM);
singlePrivateIp=myVM.getPrivateIp();
if (singlePrivateIp!=null){
s_logger.info("VM with private Ip "+singlePrivateIp+" was successfully created");
}
else{
s_logger.info("Problems with VM creation for a user"+myUser.getUserName());
s_logger.info("Deployment failed");
break;
}
}
s_logger.info("Deployment done..."+numVM+" VMs were created.");
}
}catch (Exception e){
s_logger.error(e);
}
}
}).start();
}
}
}
package com.cloud.test.longrun;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.apache.log4j.Logger;
public class BuildGuestNetwork {
public static final Logger s_logger= Logger.getLogger(BuildGuestNetwork.class.getClass());
private static final int _apiPort=8096;
private static final int _developerPort=8080;
private static final String _apiUrl = "/client/api";
private static int numVM=1;
private static long zoneId=-1L;
private static long templateId=3;
private static long serviceOfferingId=1;
public static void main (String[] args){
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = "http://localhost";
int numThreads = 1;
while (iter.hasNext()){
String arg = iter.next();
if (arg.equals("-h")){
host="http://"+iter.next();
}
if (arg.equals("-t")){
numThreads=Integer.parseInt(iter.next());
}
if (arg.equals("-n")){
numVM=Integer.parseInt(iter.next());
}
if (arg.equals("-z")){
zoneId=Integer.parseInt(iter.next());
}
if (arg.equals("-e")){
templateId=Integer.parseInt(iter.next());
}
if (arg.equals("-s")){
serviceOfferingId=Integer.parseInt(iter.next());
}
}
final String server = host + ":" + _apiPort + "/";
final String developerServer = host + ":" + _developerPort + _apiUrl;
s_logger.info("Starting test in "+numThreads+" thread(s). Each thread is launching "+numVM+" VMs");
for (int i=0; i<numThreads; i++){
new Thread(new Runnable() {
public void run() {
try{
String username = null;
String singlePrivateIp=null;
Random ran = new Random();
username = Math.abs(ran.nextInt())+ "-user";
//Create User
User myUser = new User(username,username, server, developerServer);
try{
myUser.launchUser();
myUser.registerUser();
}catch (Exception e){
s_logger.warn("Error code: ", e);
}
if (myUser.getUserId()!=null){
s_logger.info("User "+myUser.getUserName()+" was created successfully, starting VM creation");
//create VMs for the user
for (int i=0; i<numVM; i++){
//Create a new VM, add it to the list of user's VMs
VirtualMachine myVM = new VirtualMachine(myUser.getUserId());
myVM.deployVM(zoneId, serviceOfferingId, templateId, myUser.getDeveloperServer(), myUser.getApiKey(), myUser.getSecretKey());
myUser.getVirtualMachines().add(myVM);
singlePrivateIp=myVM.getPrivateIp();
if (singlePrivateIp!=null){
s_logger.info("VM with private Ip "+singlePrivateIp+" was successfully created");
}
else{
s_logger.info("Problems with VM creation for a user"+myUser.getUserName());
s_logger.info("Deployment failed");
break;
}
}
s_logger.info("Deployment done..."+numVM+" VMs were created.");
}
}catch (Exception e){
s_logger.error(e);
}
}
}).start();
}
}
}

View File

@ -10,196 +10,196 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.longrun;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
package com.cloud.test.longrun;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import com.cloud.test.stress.TestClientWithAPI;
public class PerformanceWithAPI {
public static final Logger s_logger= Logger.getLogger(PerformanceWithAPI.class.getClass());
private static final int _retry=10;
private static final int _apiPort=8096;
private static int numVM=2;
private static final long _zoneId=-1L;
private static final long _templateId=3;
private static final long _serviceOfferingId=1;
private static final String _apiUrl = "/client/api";
private static final int _developerPort=8080;
public static void main (String[] args){
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = "http://localhost";
int numThreads = 1;
while (iter.hasNext()){
String arg = iter.next();
if (arg.equals("-h")){
host="http://"+iter.next();
}
if (arg.equals("-t")){
numThreads=Integer.parseInt(iter.next());
}
if (arg.equals("-n")){
numVM=Integer.parseInt(iter.next());
}
}
final String server = host + ":" + _apiPort + "/";
final String developerServer = host + ":" + _developerPort + _apiUrl;
s_logger.info("Starting test in "+numThreads+" thread(s). Each thread is launching "+numVM+" VMs");
for (int i=0; i<numThreads; i++){
new Thread(new Runnable() {
public void run() {
try{
String username = null;
String singlePrivateIp=null;
String singlePublicIp=null;
Random ran = new Random();
username = Math.abs(ran.nextInt())+ "-user";
//Create User
User myUser = new User(username,username, server, developerServer);
try{
myUser.launchUser();
myUser.registerUser();
}catch (Exception e){
s_logger.warn("Error code: ", e);
}
if (myUser.getUserId()!=null){
s_logger.info("User "+myUser.getUserName()+" was created successfully, starting VM creation");
//create VMs for the user
for (int i=0; i<numVM; i++){
//Create a new VM, add it to the list of user's VMs
VirtualMachine myVM = new VirtualMachine(myUser.getUserId());
myVM.deployVM(_zoneId, _serviceOfferingId, _templateId, myUser.getDeveloperServer(), myUser.getApiKey(), myUser.getSecretKey());
myUser.getVirtualMachines().add(myVM);
singlePrivateIp=myVM.getPrivateIp();
if (singlePrivateIp!=null){
s_logger.info("VM with private Ip "+singlePrivateIp+" was successfully created");
}
else{
s_logger.info("Problems with VM creation for a user"+myUser.getUserName());
break;
}
//get public IP address for the User
myUser.retrievePublicIp(_zoneId);
singlePublicIp=myUser.getPublicIp().get(myUser.getPublicIp().size()-1);
if (singlePublicIp!=null){
s_logger.info("Successfully got public Ip "+singlePublicIp+" for user "+myUser.getUserName());
}
else{
s_logger.info("Problems with getting public Ip address for user"+myUser.getUserName());
break;
}
//create ForwardProxy rules for user's VMs
int responseCode = CreateForwardingRule(myUser, singlePrivateIp, singlePublicIp, "22", "22");
if (responseCode==500)
break;
}
s_logger.info("Deployment successful..."+numVM+" VMs were created. Waiting for 5 min before performance test");
Thread.sleep(300000L); // Wait
//Start performance test for the user
s_logger.info("Starting performance test for Guest network that has "+myUser.getPublicIp().size()+" public IP addresses");
for (int j=0; j<myUser.getPublicIp().size(); j++){
s_logger.info("Starting test for user which has "+myUser.getVirtualMachines().size()+" vms. Public IP for the user is "+myUser.getPublicIp().get(j)+" , number of retries is "+_retry+" , private IP address of the machine is"+myUser.getVirtualMachines().get(j).getPrivateIp());
guestNetwork myNetwork =new guestNetwork(myUser.getPublicIp().get(j), _retry);
myNetwork.setVirtualMachines(myUser.getVirtualMachines());
new Thread(myNetwork).start();
}
}
}catch (Exception e){
s_logger.error(e);
}
}
}).start();
}
}
private static int CreateForwardingRule(User myUser, String privateIp, String publicIp, String publicPort, String privatePort) throws IOException{
String encodedPrivateIp=URLEncoder.encode(""+privateIp, "UTF-8");
String encodedPublicIp=URLEncoder.encode(""+publicIp, "UTF-8");
String encodedPrivatePort=URLEncoder.encode(""+privatePort, "UTF-8");
String encodedPublicPort=URLEncoder.encode(""+publicPort, "UTF-8");
String encodedApiKey = URLEncoder.encode(myUser.getApiKey(), "UTF-8");
int responseCode=500;
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=createOrUpdateIpForwardingRule&privateIp="
+ encodedPrivateIp + "&privatePort=" + encodedPrivatePort
+ "&protocol=tcp&publicIp="
+ encodedPublicIp + "&publicPort="+encodedPublicPort;
requestToSign = requestToSign.toLowerCase();
s_logger.info("Request to sign is "+requestToSign);
String signature = TestClientWithAPI.signRequest(requestToSign, myUser.getSecretKey());
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = myUser.getDeveloperServer() + "?command=createOrUpdateIpForwardingRule"
+ "&publicIp=" + encodedPublicIp
+ "&publicPort="+encodedPublicPort+"&privateIp=" + encodedPrivateIp
+ "&privatePort=" + encodedPrivatePort + "&protocol=tcp&apiKey=" + encodedApiKey
+ "&signature=" + encodedSignature;
s_logger.info("Trying to create IP forwarding rule: "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
responseCode = client.executeMethod(method);
s_logger.info("create ip forwarding rule response code: "
+ responseCode);
if (responseCode == 200) {
s_logger.info("The rule is created successfully");
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorCode", "description" });
s_logger
.error("create ip forwarding rule (linux) test failed with errorCode: "
+ errorInfo.get("errorCode")
+ " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
return responseCode;
}
public class PerformanceWithAPI {
public static final Logger s_logger= Logger.getLogger(PerformanceWithAPI.class.getClass());
private static final int _retry=10;
private static final int _apiPort=8096;
private static int numVM=2;
private static final long _zoneId=-1L;
private static final long _templateId=3;
private static final long _serviceOfferingId=1;
private static final String _apiUrl = "/client/api";
private static final int _developerPort=8080;
public static void main (String[] args){
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = "http://localhost";
int numThreads = 1;
while (iter.hasNext()){
String arg = iter.next();
if (arg.equals("-h")){
host="http://"+iter.next();
}
if (arg.equals("-t")){
numThreads=Integer.parseInt(iter.next());
}
if (arg.equals("-n")){
numVM=Integer.parseInt(iter.next());
}
}
final String server = host + ":" + _apiPort + "/";
final String developerServer = host + ":" + _developerPort + _apiUrl;
s_logger.info("Starting test in "+numThreads+" thread(s). Each thread is launching "+numVM+" VMs");
for (int i=0; i<numThreads; i++){
new Thread(new Runnable() {
public void run() {
try{
String username = null;
String singlePrivateIp=null;
String singlePublicIp=null;
Random ran = new Random();
username = Math.abs(ran.nextInt())+ "-user";
//Create User
User myUser = new User(username,username, server, developerServer);
try{
myUser.launchUser();
myUser.registerUser();
}catch (Exception e){
s_logger.warn("Error code: ", e);
}
if (myUser.getUserId()!=null){
s_logger.info("User "+myUser.getUserName()+" was created successfully, starting VM creation");
//create VMs for the user
for (int i=0; i<numVM; i++){
//Create a new VM, add it to the list of user's VMs
VirtualMachine myVM = new VirtualMachine(myUser.getUserId());
myVM.deployVM(_zoneId, _serviceOfferingId, _templateId, myUser.getDeveloperServer(), myUser.getApiKey(), myUser.getSecretKey());
myUser.getVirtualMachines().add(myVM);
singlePrivateIp=myVM.getPrivateIp();
if (singlePrivateIp!=null){
s_logger.info("VM with private Ip "+singlePrivateIp+" was successfully created");
}
else{
s_logger.info("Problems with VM creation for a user"+myUser.getUserName());
break;
}
//get public IP address for the User
myUser.retrievePublicIp(_zoneId);
singlePublicIp=myUser.getPublicIp().get(myUser.getPublicIp().size()-1);
if (singlePublicIp!=null){
s_logger.info("Successfully got public Ip "+singlePublicIp+" for user "+myUser.getUserName());
}
else{
s_logger.info("Problems with getting public Ip address for user"+myUser.getUserName());
break;
}
//create ForwardProxy rules for user's VMs
int responseCode = CreateForwardingRule(myUser, singlePrivateIp, singlePublicIp, "22", "22");
if (responseCode==500)
break;
}
s_logger.info("Deployment successful..."+numVM+" VMs were created. Waiting for 5 min before performance test");
Thread.sleep(300000L); // Wait
//Start performance test for the user
s_logger.info("Starting performance test for Guest network that has "+myUser.getPublicIp().size()+" public IP addresses");
for (int j=0; j<myUser.getPublicIp().size(); j++){
s_logger.info("Starting test for user which has "+myUser.getVirtualMachines().size()+" vms. Public IP for the user is "+myUser.getPublicIp().get(j)+" , number of retries is "+_retry+" , private IP address of the machine is"+myUser.getVirtualMachines().get(j).getPrivateIp());
guestNetwork myNetwork =new guestNetwork(myUser.getPublicIp().get(j), _retry);
myNetwork.setVirtualMachines(myUser.getVirtualMachines());
new Thread(myNetwork).start();
}
}
}catch (Exception e){
s_logger.error(e);
}
}
}).start();
}
}
private static int CreateForwardingRule(User myUser, String privateIp, String publicIp, String publicPort, String privatePort) throws IOException{
String encodedPrivateIp=URLEncoder.encode(""+privateIp, "UTF-8");
String encodedPublicIp=URLEncoder.encode(""+publicIp, "UTF-8");
String encodedPrivatePort=URLEncoder.encode(""+privatePort, "UTF-8");
String encodedPublicPort=URLEncoder.encode(""+publicPort, "UTF-8");
String encodedApiKey = URLEncoder.encode(myUser.getApiKey(), "UTF-8");
int responseCode=500;
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=createOrUpdateIpForwardingRule&privateIp="
+ encodedPrivateIp + "&privatePort=" + encodedPrivatePort
+ "&protocol=tcp&publicIp="
+ encodedPublicIp + "&publicPort="+encodedPublicPort;
requestToSign = requestToSign.toLowerCase();
s_logger.info("Request to sign is "+requestToSign);
String signature = TestClientWithAPI.signRequest(requestToSign, myUser.getSecretKey());
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = myUser.getDeveloperServer() + "?command=createOrUpdateIpForwardingRule"
+ "&publicIp=" + encodedPublicIp
+ "&publicPort="+encodedPublicPort+"&privateIp=" + encodedPrivateIp
+ "&privatePort=" + encodedPrivatePort + "&protocol=tcp&apiKey=" + encodedApiKey
+ "&signature=" + encodedSignature;
s_logger.info("Trying to create IP forwarding rule: "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
responseCode = client.executeMethod(method);
s_logger.info("create ip forwarding rule response code: "
+ responseCode);
if (responseCode == 200) {
s_logger.info("The rule is created successfully");
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorCode", "description" });
s_logger
.error("create ip forwarding rule (linux) test failed with errorCode: "
+ errorInfo.get("errorCode")
+ " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
return responseCode;
}
}

View File

@ -10,225 +10,225 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.longrun;
import java.util.ArrayList;
import java.util.Map;
import java.io.InputStream;
import java.io.IOException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
package com.cloud.test.longrun;
import java.util.ArrayList;
import java.util.Map;
import java.io.InputStream;
import java.io.IOException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import com.cloud.test.stress.TestClientWithAPI;
public class User {
public static final Logger s_logger= Logger.getLogger(User.class.getClass());
private ArrayList<VirtualMachine> virtualMachines;
private ArrayList<String> publicIp;
private String server;
private String developerServer;
private String userName;
private String userId;
private String apiKey;
private String secretKey;
private String password;
private String encryptedPassword;
public User(String userName, String password, String server, String developerServer)
{
this.server=server;
this.developerServer=developerServer;
this.userName=userName;
this.password=password;
this.virtualMachines = new ArrayList<VirtualMachine>();
this.publicIp = new ArrayList<String>();
}
public ArrayList<VirtualMachine> getVirtualMachines() {
return virtualMachines;
}
public void setVirtualMachines(ArrayList<VirtualMachine> virtualMachines) {
this.virtualMachines = virtualMachines;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public ArrayList<String> getPublicIp() {
return publicIp;
}
public void setPublicIp(ArrayList<String> publicIp) {
this.publicIp = publicIp;
}
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
public String getDeveloperServer() {
return developerServer;
}
public void setDeveloperServer(String developerServer) {
this.developerServer = developerServer;
}
public void launchUser() throws IOException {
String encodedUsername = URLEncoder.encode(this.getUserName(), "UTF-8");
this.encryptedPassword=TestClientWithAPI.createMD5Password(this.getPassword());
String encodedPassword = URLEncoder.encode(this.encryptedPassword, "UTF-8");
String url = this.server + "?command=createUser&username=" + encodedUsername
+ "&password=" + encodedPassword
+ "&firstname=Test&lastname=Test&email=alena@vmops.com&domainId=1";
String userIdStr=null;
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> userIdValues = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "id" });
userIdStr = userIdValues.get("id");
if ((userIdStr != null) && (Long.parseLong(userIdStr)!=-1)) {
this.setUserId(userIdStr);
}
}
}
public void retrievePublicIp(long zoneId) throws IOException{
String encodedApiKey = URLEncoder.encode(this.apiKey, "UTF-8");
String encodedZoneId=URLEncoder.encode(""+zoneId,"UTF-8");
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=associateIpAddress" + "&zoneId="+encodedZoneId;
requestToSign = requestToSign.toLowerCase();
String signature = TestClientWithAPI.signRequest(requestToSign, this.secretKey);
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = this.developerServer + "?command=associateIpAddress" + "&apiKey="
+ encodedApiKey + "&zoneId="+encodedZoneId+"&signature="
+ encodedSignature;
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode=client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> values = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "ipaddress" });
this.getPublicIp().add(values.get("ipaddress"));
s_logger.info("Ip address is " + values.get("ipaddress"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("associate ip test failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
public void registerUser()throws HttpException, IOException{
String encodedUsername = URLEncoder.encode(this.userName, "UTF-8");
String encodedPassword = URLEncoder.encode(this.password, "UTF-8");
String url = server + "?command=register&username=" + encodedUsername
+ "&domainid=1";
s_logger.info("registering: " + this.userName+" with url "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> requestKeyValues = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "apikey", "secretkey" });
this.setApiKey(requestKeyValues.get("apikey"));
this.setSecretKey(requestKeyValues.get("secretkey"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("registration failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
}
public class User {
public static final Logger s_logger= Logger.getLogger(User.class.getClass());
private ArrayList<VirtualMachine> virtualMachines;
private ArrayList<String> publicIp;
private String server;
private String developerServer;
private String userName;
private String userId;
private String apiKey;
private String secretKey;
private String password;
private String encryptedPassword;
public User(String userName, String password, String server, String developerServer)
{
this.server=server;
this.developerServer=developerServer;
this.userName=userName;
this.password=password;
this.virtualMachines = new ArrayList<VirtualMachine>();
this.publicIp = new ArrayList<String>();
}
public ArrayList<VirtualMachine> getVirtualMachines() {
return virtualMachines;
}
public void setVirtualMachines(ArrayList<VirtualMachine> virtualMachines) {
this.virtualMachines = virtualMachines;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public ArrayList<String> getPublicIp() {
return publicIp;
}
public void setPublicIp(ArrayList<String> publicIp) {
this.publicIp = publicIp;
}
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
public String getDeveloperServer() {
return developerServer;
}
public void setDeveloperServer(String developerServer) {
this.developerServer = developerServer;
}
public void launchUser() throws IOException {
String encodedUsername = URLEncoder.encode(this.getUserName(), "UTF-8");
this.encryptedPassword=TestClientWithAPI.createMD5Password(this.getPassword());
String encodedPassword = URLEncoder.encode(this.encryptedPassword, "UTF-8");
String url = this.server + "?command=createUser&username=" + encodedUsername
+ "&password=" + encodedPassword
+ "&firstname=Test&lastname=Test&email=alena@vmops.com&domainId=1";
String userIdStr=null;
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> userIdValues = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "id" });
userIdStr = userIdValues.get("id");
if ((userIdStr != null) && (Long.parseLong(userIdStr)!=-1)) {
this.setUserId(userIdStr);
}
}
}
public void retrievePublicIp(long zoneId) throws IOException{
String encodedApiKey = URLEncoder.encode(this.apiKey, "UTF-8");
String encodedZoneId=URLEncoder.encode(""+zoneId,"UTF-8");
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=associateIpAddress" + "&zoneId="+encodedZoneId;
requestToSign = requestToSign.toLowerCase();
String signature = TestClientWithAPI.signRequest(requestToSign, this.secretKey);
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = this.developerServer + "?command=associateIpAddress" + "&apiKey="
+ encodedApiKey + "&zoneId="+encodedZoneId+"&signature="
+ encodedSignature;
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode=client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> values = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "ipaddress" });
this.getPublicIp().add(values.get("ipaddress"));
s_logger.info("Ip address is " + values.get("ipaddress"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("associate ip test failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
public void registerUser()throws HttpException, IOException{
String encodedUsername = URLEncoder.encode(this.userName, "UTF-8");
String encodedPassword = URLEncoder.encode(this.password, "UTF-8");
String url = server + "?command=register&username=" + encodedUsername
+ "&domainid=1";
s_logger.info("registering: " + this.userName+" with url "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> requestKeyValues = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "apikey", "secretkey" });
this.setApiKey(requestKeyValues.get("apikey"));
this.setSecretKey(requestKeyValues.get("secretkey"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("registration failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
}

View File

@ -10,103 +10,103 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.longrun;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
package com.cloud.test.longrun;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import com.cloud.test.stress.TestClientWithAPI;
import java.io.IOException;
public class VirtualMachine {
public static final Logger s_logger= Logger.getLogger(VirtualMachine.class.getClass());
private String privateIp;
private String userId;
public VirtualMachine(String userId){
this.userId=userId;
}
public String getPrivateIp() {
return privateIp;
}
public void setPrivateIp(String privateIp) {
this.privateIp = privateIp;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void deployVM(long zoneId, long serviceOfferingId, long templateId, String server, String apiKey, String secretKey) throws IOException{
String encodedZoneId = URLEncoder.encode("" + zoneId, "UTF-8");
String encodedServiceOfferingId = URLEncoder.encode(""
+ serviceOfferingId, "UTF-8");
String encodedTemplateId = URLEncoder.encode("" + templateId,
"UTF-8");
String encodedApiKey=URLEncoder.encode(apiKey, "UTF-8");
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=deployVirtualMachine&serviceOfferingId="
+ encodedServiceOfferingId + "&templateId="
+ encodedTemplateId + "&zoneId=" + encodedZoneId;
requestToSign = requestToSign.toLowerCase();
String signature = TestClientWithAPI.signRequest(requestToSign, secretKey);
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = server + "?command=deployVirtualMachine"
+ "&zoneId=" + encodedZoneId + "&serviceOfferingId="
+ encodedServiceOfferingId + "&templateId="
+ encodedTemplateId + "&apiKey=" + encodedApiKey
+ "&signature=" + encodedSignature;
s_logger.info("Sending this request to deploy a VM: "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
s_logger.info("deploy linux vm response code: " + responseCode);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> values = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "id", "ipaddress" });
long linuxVMId = Long.parseLong(values.get("id"));
s_logger.info("got linux virtual machine id: " + linuxVMId);
this.setPrivateIp(values.get("ipaddress"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("deploy linux vm test failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
}
import java.io.IOException;
public class VirtualMachine {
public static final Logger s_logger= Logger.getLogger(VirtualMachine.class.getClass());
private String privateIp;
private String userId;
public VirtualMachine(String userId){
this.userId=userId;
}
public String getPrivateIp() {
return privateIp;
}
public void setPrivateIp(String privateIp) {
this.privateIp = privateIp;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void deployVM(long zoneId, long serviceOfferingId, long templateId, String server, String apiKey, String secretKey) throws IOException{
String encodedZoneId = URLEncoder.encode("" + zoneId, "UTF-8");
String encodedServiceOfferingId = URLEncoder.encode(""
+ serviceOfferingId, "UTF-8");
String encodedTemplateId = URLEncoder.encode("" + templateId,
"UTF-8");
String encodedApiKey=URLEncoder.encode(apiKey, "UTF-8");
String requestToSign = "apiKey=" + encodedApiKey
+ "&command=deployVirtualMachine&serviceOfferingId="
+ encodedServiceOfferingId + "&templateId="
+ encodedTemplateId + "&zoneId=" + encodedZoneId;
requestToSign = requestToSign.toLowerCase();
String signature = TestClientWithAPI.signRequest(requestToSign, secretKey);
String encodedSignature = URLEncoder.encode(signature, "UTF-8");
String url = server + "?command=deployVirtualMachine"
+ "&zoneId=" + encodedZoneId + "&serviceOfferingId="
+ encodedServiceOfferingId + "&templateId="
+ encodedTemplateId + "&apiKey=" + encodedApiKey
+ "&signature=" + encodedSignature;
s_logger.info("Sending this request to deploy a VM: "+url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
s_logger.info("deploy linux vm response code: " + responseCode);
if (responseCode == 200) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> values = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "id", "ipaddress" });
long linuxVMId = Long.parseLong(values.get("id"));
s_logger.info("got linux virtual machine id: " + linuxVMId);
this.setPrivateIp(values.get("ipaddress"));
} else if (responseCode == 500) {
InputStream is = method.getResponseBodyAsStream();
Map<String, String> errorInfo = TestClientWithAPI.getSingleValueFromXML(is,
new String[] { "errorcode", "description" });
s_logger.error("deploy linux vm test failed with errorCode: "
+ errorInfo.get("errorCode") + " and description: "
+ errorInfo.get("description"));
} else {
s_logger.error("internal error processing request: "
+ method.getStatusText());
}
}
}

View File

@ -10,94 +10,94 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.longrun;
import java.util.ArrayList;
import java.util.Random;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class guestNetwork implements Runnable{
public static final Logger s_logger= Logger.getLogger(guestNetwork.class.getClass());
private String publicIp;
private ArrayList<VirtualMachine> virtualMachines;
private int retryNum;
public guestNetwork(String publicIp, int retryNum){
this.publicIp=publicIp;
this.retryNum=retryNum;
}
public ArrayList<VirtualMachine> getVirtualMachines() {
return virtualMachines;
}
public void setVirtualMachines(ArrayList<VirtualMachine> virtualMachines) {
this.virtualMachines = virtualMachines;
}
public void run(){
NDC.push("Following thread has started"+Thread.currentThread().getName());
int retry = 0;
//Start copying files between machines in the network
s_logger.info("The size of the array is " + this.virtualMachines.size());
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry
+ " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
for (VirtualMachine vm: this.virtualMachines ){
s_logger.info("Attempting to SSH into linux host " + this.publicIp
+ " with retry attempt: " + retry);
Connection conn = new Connection(this.publicIp);
conn.connect(null, 600000, 600000);
s_logger.info("SSHed successfully into linux host " + this.publicIp);
boolean isAuthenticated = conn.authenticateWithPassword("root",
"password");
if (isAuthenticated == false) {
s_logger.info("Authentication failed");
}
//execute copy command
Session sess = conn.openSession();
String fileName;
Random ran = new Random();
fileName=Math.abs(ran.nextInt())+"-file";
String copyCommand = new String ("./scpScript "+vm.getPrivateIp()+" "+fileName);
s_logger.info("Executing " + copyCommand);
sess.execCommand(copyCommand);
Thread.sleep(120000);
sess.close();
//execute wget command
sess = conn.openSession();
String downloadCommand = new String ("wget http://172.16.0.220/scripts/checkDiskSpace.sh; chmod +x *sh; ./checkDiskSpace.sh; rm -rf checkDiskSpace.sh");
s_logger.info("Executing " + downloadCommand);
sess.execCommand(downloadCommand);
Thread.sleep(120000);
sess.close();
//close the connection
conn.close();
}
}catch (Exception ex) {
s_logger.error(ex);
retry++;
if (retry == retryNum) {
s_logger.info("Performance Guest Network test failed with error "
+ ex.getMessage()) ;
}
}
}
}
}
package com.cloud.test.longrun;
import java.util.ArrayList;
import java.util.Random;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class guestNetwork implements Runnable{
public static final Logger s_logger= Logger.getLogger(guestNetwork.class.getClass());
private String publicIp;
private ArrayList<VirtualMachine> virtualMachines;
private int retryNum;
public guestNetwork(String publicIp, int retryNum){
this.publicIp=publicIp;
this.retryNum=retryNum;
}
public ArrayList<VirtualMachine> getVirtualMachines() {
return virtualMachines;
}
public void setVirtualMachines(ArrayList<VirtualMachine> virtualMachines) {
this.virtualMachines = virtualMachines;
}
public void run(){
NDC.push("Following thread has started"+Thread.currentThread().getName());
int retry = 0;
//Start copying files between machines in the network
s_logger.info("The size of the array is " + this.virtualMachines.size());
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry
+ " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
for (VirtualMachine vm: this.virtualMachines ){
s_logger.info("Attempting to SSH into linux host " + this.publicIp
+ " with retry attempt: " + retry);
Connection conn = new Connection(this.publicIp);
conn.connect(null, 600000, 600000);
s_logger.info("SSHed successfully into linux host " + this.publicIp);
boolean isAuthenticated = conn.authenticateWithPassword("root",
"password");
if (isAuthenticated == false) {
s_logger.info("Authentication failed");
}
//execute copy command
Session sess = conn.openSession();
String fileName;
Random ran = new Random();
fileName=Math.abs(ran.nextInt())+"-file";
String copyCommand = new String ("./scpScript "+vm.getPrivateIp()+" "+fileName);
s_logger.info("Executing " + copyCommand);
sess.execCommand(copyCommand);
Thread.sleep(120000);
sess.close();
//execute wget command
sess = conn.openSession();
String downloadCommand = new String ("wget http://172.16.0.220/scripts/checkDiskSpace.sh; chmod +x *sh; ./checkDiskSpace.sh; rm -rf checkDiskSpace.sh");
s_logger.info("Executing " + downloadCommand);
sess.execCommand(downloadCommand);
Thread.sleep(120000);
sess.close();
//close the connection
conn.close();
}
}catch (Exception ex) {
s_logger.error(ex);
retry++;
if (retry == retryNum) {
s_logger.info("Performance Guest Network test failed with error "
+ ex.getMessage()) ;
}
}
}
}
}

View File

@ -10,119 +10,119 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class DelegatedAdminTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(DelegatedAdminTest.class.getName());
public DelegatedAdminTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
for (Document eachElement: this.getInputFile()) {
Element rootElement = eachElement.getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
boolean verify = false;
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
if ((eachElement.getElementsByTagName("delegated_admin_verify_part2").getLength() != 0) && !(api.getName().equals("registerUserKeys"))) {
if (api.getName().startsWith("list")) {
if (this.denyToExecute()) {
api.setResponseType(ResponseType.EMPTY);
}
verify = true;
}
if (this.denyToExecute()) {
api.setResponseType(ResponseType.ERROR);
}
}
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((verify == true) && !(api.getResponseType() == ResponseType.ERROR || api.getResponseType() == ResponseType.EMPTY)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((verify == true) && (api.getResponseType() == ResponseType.ERROR || api.getResponseType() == ResponseType.EMPTY)) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
if (error != 0)
return false;
else
return true;
}
public boolean denyToExecute () {
boolean result = true;
Integer level1 = Integer.valueOf(this.getParam().get("domainlevel1"));
Integer level2 = Integer.valueOf(this.getParam().get("domainlevel2"));
String domain1 = this.getParam().get("domainname1");
String domain2 = this.getParam().get("domainname2");
if (this.getParam().get("accounttype2").equals("1")) {
result = false;
}
else if ((level2.compareTo(level1) < 0) && (domain1.startsWith(domain2)) && (this.getParam().get("accounttype2").equals("2"))) {
result = false;
}
return result;
}
}
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class DelegatedAdminTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(DelegatedAdminTest.class.getName());
public DelegatedAdminTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
for (Document eachElement: this.getInputFile()) {
Element rootElement = eachElement.getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
boolean verify = false;
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
if ((eachElement.getElementsByTagName("delegated_admin_verify_part2").getLength() != 0) && !(api.getName().equals("registerUserKeys"))) {
if (api.getName().startsWith("list")) {
if (this.denyToExecute()) {
api.setResponseType(ResponseType.EMPTY);
}
verify = true;
}
if (this.denyToExecute()) {
api.setResponseType(ResponseType.ERROR);
}
}
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((verify == true) && !(api.getResponseType() == ResponseType.ERROR || api.getResponseType() == ResponseType.EMPTY)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((verify == true) && (api.getResponseType() == ResponseType.ERROR || api.getResponseType() == ResponseType.EMPTY)) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
if (error != 0)
return false;
else
return true;
}
public boolean denyToExecute () {
boolean result = true;
Integer level1 = Integer.valueOf(this.getParam().get("domainlevel1"));
Integer level2 = Integer.valueOf(this.getParam().get("domainlevel2"));
String domain1 = this.getParam().get("domainname1");
String domain2 = this.getParam().get("domainname2");
if (this.getParam().get("accounttype2").equals("1")) {
result = false;
}
else if ((level2.compareTo(level1) < 0) && (domain1.startsWith(domain2)) && (this.getParam().get("accounttype2").equals("2"))) {
result = false;
}
return result;
}
}

View File

@ -10,101 +10,101 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
package com.cloud.test.regression;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Deploy extends TestCase{
public static final Logger s_logger = Logger.getLogger(Deploy.class.getName());
public Deploy(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest() {
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if (api.getResponseCode() != 200) {
error++;
s_logger.error("The command " + api.getUrl() + " failed");
}
else {
s_logger.info("The command " + api.getUrl() + " passsed");
}
}
if (error != 0)
return false;
else
return true;
}
public static void main (String[] args) {
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = null;
String file = null;
while (iter.hasNext()) {
String arg = iter.next();
// management server host
if (arg.equals("-h")) {
host = iter.next();
}
if (arg.equals("-f")) {
file = iter.next();
}
}
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Deploy extends TestCase{
public static final Logger s_logger = Logger.getLogger(Deploy.class.getName());
public Deploy(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest() {
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if (api.getResponseCode() != 200) {
error++;
s_logger.error("The command " + api.getUrl() + " failed");
}
else {
s_logger.info("The command " + api.getUrl() + " passsed");
}
}
if (error != 0)
return false;
else
return true;
}
public static void main (String[] args) {
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
String host = null;
String file = null;
while (iter.hasNext()) {
String arg = iter.next();
// management server host
if (arg.equals("-h")) {
host = iter.next();
}
if (arg.equals("-f")) {
file = iter.next();
}
}
Deploy deploy = new Deploy ();
ArrayList<String> inputFile = new ArrayList<String>();
inputFile.add(file);
deploy.setInputFile(inputFile);
deploy.setTestCaseName("Management server deployment");
deploy.getParam().put("hostip", host);
deploy.getParam().put("apicommands", "../metadata/func/commands");
deploy.setCommands();
s_logger.info("Starting deployment against host " + host);
boolean result = deploy.executeTest();
if (result == false) {
s_logger.error("DEPLOYMENT FAILED");
System.exit(1);
}
else {
s_logger.info("DEPLOYMENT IS SUCCESSFUL");
}
}
}
inputFile.add(file);
deploy.setInputFile(inputFile);
deploy.setTestCaseName("Management server deployment");
deploy.getParam().put("hostip", host);
deploy.getParam().put("apicommands", "../metadata/func/commands");
deploy.setCommands();
s_logger.info("Starting deployment against host " + host);
boolean result = deploy.executeTest();
if (result == false) {
s_logger.error("DEPLOYMENT FAILED");
System.exit(1);
}
else {
s_logger.info("DEPLOYMENT IS SUCCESSFUL");
}
}
}

View File

@ -10,165 +10,165 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import java.sql.Statement;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
package com.cloud.test.regression;
import java.sql.Statement;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class EventsApiTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(EventsApiTest.class.getName());
public EventsApiTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//!!!check if we need to execute mySql command
NodeList commandName = fstElmnt.getElementsByTagName("name");
Element commandElmnt = (Element) commandName.item(0);
NodeList commandNm = commandElmnt.getChildNodes();
if (((Node) commandNm.item(0)).getNodeValue().equals("mysqlupdate")) {
//establish connection to mysql server and execute an update command
NodeList mysqlList = fstElmnt.getElementsByTagName("mysqlcommand");
for (int j=0; j<mysqlList.getLength(); j++) {
Element itemVariableElement = (Element) mysqlList.item(j);
s_logger.info("Executing mysql command " + itemVariableElement.getTextContent());
try {
Statement st = this.getConn().createStatement();
st.executeUpdate(itemVariableElement.getTextContent());
} catch (Exception ex) {
s_logger.error(ex);
return false;
}
}
}
else if (((Node) commandNm.item(0)).getNodeValue().equals("agentcommand")) {
//connect to all the agents and execute agent command
NodeList commandList = fstElmnt.getElementsByTagName("commandname");
Element commandElement = (Element) commandList.item(0);
NodeList ipList = fstElmnt.getElementsByTagName("ip");
for (int j=0; j<ipList.getLength(); j++) {
Element itemVariableElement = (Element) ipList.item(j);
s_logger.info("Attempting to SSH into agent " + itemVariableElement.getTextContent());
try {
Connection conn = new Connection(itemVariableElement.getTextContent());
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into agent " + itemVariableElement.getTextContent());
boolean isAuthenticated = conn.authenticateWithPassword("root",
"password");
if (isAuthenticated == false) {
s_logger.info("Authentication failed for root with password");
return false;
}
Session sess = conn.openSession();
s_logger.info("Executing : " + commandElement.getTextContent());
sess.execCommand(commandElement.getTextContent());
Thread.sleep(60000);
sess.close();
conn.close();
} catch (Exception ex) {
s_logger.error(ex);
return false;
}
}
}
else {
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Empty response was returned as expected. Command was sent with url " + api.getUrl());
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Command was sent with the url " + api.getUrl());
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Command " + api.getName() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Command that was supposed to fail, failed. Command was sent with url " + api.getUrl());
}
}
}
//verify events with userid parameter - test case 97
HashMap<String, Integer> expectedEvents = new HashMap<String, Integer>();
expectedEvents.put("VM.START", 1);
boolean eventResult = ApiCommand.verifyEvents(expectedEvents, "INFO", "http://" + this.getParam().get("hostip") + ":8096", "userid=" + this.getParam().get("userid1") + "&type=VM.START");
s_logger.info("Test case 97 - listEvent command verification result is " + eventResult);
//verify error events
eventResult = ApiCommand.verifyEvents("../metadata/error_events.properties", "ERROR", "http://" + this.getParam().get("hostip") + ":8096", this.getParam().get("erroruseraccount"));
s_logger.info("listEvent command verification result is " + eventResult);
if (error != 0)
return false;
else
return true;
}
}
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class EventsApiTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(EventsApiTest.class.getName());
public EventsApiTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//!!!check if we need to execute mySql command
NodeList commandName = fstElmnt.getElementsByTagName("name");
Element commandElmnt = (Element) commandName.item(0);
NodeList commandNm = commandElmnt.getChildNodes();
if (((Node) commandNm.item(0)).getNodeValue().equals("mysqlupdate")) {
//establish connection to mysql server and execute an update command
NodeList mysqlList = fstElmnt.getElementsByTagName("mysqlcommand");
for (int j=0; j<mysqlList.getLength(); j++) {
Element itemVariableElement = (Element) mysqlList.item(j);
s_logger.info("Executing mysql command " + itemVariableElement.getTextContent());
try {
Statement st = this.getConn().createStatement();
st.executeUpdate(itemVariableElement.getTextContent());
} catch (Exception ex) {
s_logger.error(ex);
return false;
}
}
}
else if (((Node) commandNm.item(0)).getNodeValue().equals("agentcommand")) {
//connect to all the agents and execute agent command
NodeList commandList = fstElmnt.getElementsByTagName("commandname");
Element commandElement = (Element) commandList.item(0);
NodeList ipList = fstElmnt.getElementsByTagName("ip");
for (int j=0; j<ipList.getLength(); j++) {
Element itemVariableElement = (Element) ipList.item(j);
s_logger.info("Attempting to SSH into agent " + itemVariableElement.getTextContent());
try {
Connection conn = new Connection(itemVariableElement.getTextContent());
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into agent " + itemVariableElement.getTextContent());
boolean isAuthenticated = conn.authenticateWithPassword("root",
"password");
if (isAuthenticated == false) {
s_logger.info("Authentication failed for root with password");
return false;
}
Session sess = conn.openSession();
s_logger.info("Executing : " + commandElement.getTextContent());
sess.execCommand(commandElement.getTextContent());
Thread.sleep(60000);
sess.close();
conn.close();
} catch (Exception ex) {
s_logger.error(ex);
return false;
}
}
}
else {
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Empty response was returned as expected. Command was sent with url " + api.getUrl());
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Command was sent with the url " + api.getUrl());
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Command " + api.getName() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed. Command that was supposed to fail, failed. Command was sent with url " + api.getUrl());
}
}
}
//verify events with userid parameter - test case 97
HashMap<String, Integer> expectedEvents = new HashMap<String, Integer>();
expectedEvents.put("VM.START", 1);
boolean eventResult = ApiCommand.verifyEvents(expectedEvents, "INFO", "http://" + this.getParam().get("hostip") + ":8096", "userid=" + this.getParam().get("userid1") + "&type=VM.START");
s_logger.info("Test case 97 - listEvent command verification result is " + eventResult);
//verify error events
eventResult = ApiCommand.verifyEvents("../metadata/error_events.properties", "ERROR", "http://" + this.getParam().get("hostip") + ":8096", this.getParam().get("erroruseraccount"));
s_logger.info("listEvent command verification result is " + eventResult);
if (error != 0)
return false;
else
return true;
}
}

View File

@ -10,65 +10,65 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class HA extends TestCase{
public static final Logger s_logger = Logger.getLogger(HA.class.getName());
public HA(){
this.setClient();
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), this.getConn());
//verify the response parameters
if ((api.getResponseCode() !=200 ) && (api.getRequired() == true) )
{
s_logger.error("Exiting the test....Command " + api.getName() + " required for the future run, failed with an error code " + api.getResponseCode() + ". Command was sent with the url " + api.getUrl());
return false;
}
else if ((api.getResponseCode() != 200) && (api.getResponseType() != ResponseType.ERROR)) {
error++;
s_logger.error("Command " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
} else if ((api.getResponseCode() == 200) && (api.getResponseType() == ResponseType.ERROR)) {
error++;
s_logger.error("Command " + api.getTestCaseInfo() + " which was supposed to failed, passed. The command was sent with url " + api.getUrl());
} else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. Command was sent with url " + api.getUrl());
return false;
}
s_logger.info("Command " + api.getTestCaseInfo() + " passed");
}
}
if (error != 0)
return false;
else
return true;
}
}
package com.cloud.test.regression;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class HA extends TestCase{
public static final Logger s_logger = Logger.getLogger(HA.class.getName());
public HA(){
this.setClient();
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), this.getConn());
//verify the response parameters
if ((api.getResponseCode() !=200 ) && (api.getRequired() == true) )
{
s_logger.error("Exiting the test....Command " + api.getName() + " required for the future run, failed with an error code " + api.getResponseCode() + ". Command was sent with the url " + api.getUrl());
return false;
}
else if ((api.getResponseCode() != 200) && (api.getResponseType() != ResponseType.ERROR)) {
error++;
s_logger.error("Command " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
} else if ((api.getResponseCode() == 200) && (api.getResponseType() == ResponseType.ERROR)) {
error++;
s_logger.error("Command " + api.getTestCaseInfo() + " which was supposed to failed, passed. The command was sent with url " + api.getUrl());
} else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. Command was sent with url " + api.getUrl());
return false;
}
s_logger.info("Command " + api.getTestCaseInfo() + " passed");
}
}
if (error != 0)
return false;
else
return true;
}
}

View File

@ -10,134 +10,134 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class LoadBalancingTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(LoadBalancingTest.class.getName());
public LoadBalancingTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
// //Try to create portForwarding rule for all available private/public ports
// ArrayList<String> port = new ArrayList<String>();
// for (int i=1; i<65536; i++){
// port.add(Integer.toString(i));
// }
//
// //try all public ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateLoadBalancerRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&privateport=22&protocol=tcp&publicport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create LB rule for the public port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
//
// //try all private ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateLoadBalancerRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&publicport=22&protocol=tcp&privateport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create LB rule for the private port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
if (error != 0)
return false;
else
return true;
}
}
public class LoadBalancingTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(LoadBalancingTest.class.getName());
public LoadBalancingTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
// //Try to create portForwarding rule for all available private/public ports
// ArrayList<String> port = new ArrayList<String>();
// for (int i=1; i<65536; i++){
// port.add(Integer.toString(i));
// }
//
// //try all public ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateLoadBalancerRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&privateport=22&protocol=tcp&publicport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create LB rule for the public port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
//
// //try all private ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateLoadBalancerRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&publicport=22&protocol=tcp&privateport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create LB rule for the private port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
if (error != 0)
return false;
else
return true;
}
}

View File

@ -10,8 +10,8 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
@ -20,123 +20,123 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class PortForwardingTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(PortForwardingTest.class.getName());
public PortForwardingTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
// //Try to create portForwarding rule for all available private/public ports
// ArrayList<String> port = new ArrayList<String>();
// for (int i=1; i<65536; i++){
// port.add(Integer.toString(i));
// }
//
// //try all public ports
// for (String portValue : port) {
// try {
// s_logger.info("public port is " + portValue);
// String url = this.getHost() + ":8096/?command=createOrUpdateIpForwardingRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&privateport=22&protocol=tcp&publicport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create portForwarding rule for the public port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
//
// //try all private ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateIpForwardingRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&publicport=22&protocol=tcp&privateport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create portForwarding rule for the private port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
if (error != 0)
return false;
else
return true;
}
}
public class PortForwardingTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(PortForwardingTest.class.getName());
public PortForwardingTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
//verify the response of the command
if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//verify if response is suppposed to be empty
if (api.getResponseType() == ResponseType.EMPTY) {
if (api.isEmpty() == true) {
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
else {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Empty response was expected. Command was sent with url " + api.getUrl());
}
} else {
if (api.isEmpty() != false)
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Non-empty response was expected. Command was sent with url " + api.getUrl());
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
// //Try to create portForwarding rule for all available private/public ports
// ArrayList<String> port = new ArrayList<String>();
// for (int i=1; i<65536; i++){
// port.add(Integer.toString(i));
// }
//
// //try all public ports
// for (String portValue : port) {
// try {
// s_logger.info("public port is " + portValue);
// String url = this.getHost() + ":8096/?command=createOrUpdateIpForwardingRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&privateport=22&protocol=tcp&publicport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create portForwarding rule for the public port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
//
// //try all private ports
// for (String portValue : port) {
// try {
// String url = this.getHost() + ":8096/?command=createOrUpdateIpForwardingRule&account=" + this.getParam().get("accountname") + "&publicip=" + this.getParam().get("boundaryip") +
// "&privateip=" + this.getParam().get("vmipaddress") + "&publicport=22&protocol=tcp&privateport=" + portValue;
// HttpClient client = new HttpClient();
// HttpMethod method = new GetMethod(url);
// int responseCode = client.executeMethod(method);
// if (responseCode != 200 ) {
// error++;
// s_logger.error("Can't create portForwarding rule for the private port " + portValue + ". Request was sent with url " + url);
// }
// }catch (Exception ex) {
// s_logger.error(ex);
// }
// }
if (error != 0)
return false;
else
return true;
}
}

View File

@ -12,71 +12,71 @@
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.apache.log4j.Logger;
public class SanityTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(SanityTest.class.getName());
public SanityTest(){
this.setClient();
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
api.sendCommand(this.getClient(), null);
//verify the response parameters
if ((api.getResponseCode() !=200 ) && (api.getRequired() == true) )
{
s_logger.error("Exiting the test....Command " + api.getName() + " required for the future run, failed with an error code " + api.getResponseCode() + ". Command was sent with the url " + api.getUrl());
return false;
}
else if (api.getResponseCode() != 200) {
error++;
s_logger.error("Test " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
}
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. Command was sent with url " + api.getUrl());
return false;
}
//verify parameters
if (api.verifyParam() == false)
{
s_logger.error("Test " + api.getTestCaseInfo() + " failed. Verification for returned parameters failed. The command was sent with url " + api.getUrl());
error++;
}
else if (api.getTestCaseInfo() != null)
{
s_logger.info("Test " + api.getTestCaseInfo() + " passed");
}
}
}
//verify event
boolean eventResult = ApiCommand.verifyEvents("../metadata/func/regression_events.properties", "INFO", "http://" + this.getParam().get("hostip") + ":8096", this.getParam().get("accountname"));
s_logger.info("listEvent command verification result is " + eventResult);
if (error != 0)
return false;
else
return true;
}
}
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.apache.log4j.Logger;
public class SanityTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(SanityTest.class.getName());
public SanityTest(){
this.setClient();
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
api.sendCommand(this.getClient(), null);
//verify the response parameters
if ((api.getResponseCode() !=200 ) && (api.getRequired() == true) )
{
s_logger.error("Exiting the test....Command " + api.getName() + " required for the future run, failed with an error code " + api.getResponseCode() + ". Command was sent with the url " + api.getUrl());
return false;
}
else if (api.getResponseCode() != 200) {
error++;
s_logger.error("Test " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
}
else {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. Command was sent with url " + api.getUrl());
return false;
}
//verify parameters
if (api.verifyParam() == false)
{
s_logger.error("Test " + api.getTestCaseInfo() + " failed. Verification for returned parameters failed. The command was sent with url " + api.getUrl());
error++;
}
else if (api.getTestCaseInfo() != null)
{
s_logger.info("Test " + api.getTestCaseInfo() + " passed");
}
}
}
//verify event
boolean eventResult = ApiCommand.verifyEvents("../metadata/func/regression_events.properties", "INFO", "http://" + this.getParam().get("hostip") + ":8096", this.getParam().get("accountname"));
s_logger.info("listEvent command verification result is " + eventResult);
if (error != 0)
return false;
else
return true;
}
}

View File

@ -10,73 +10,73 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Test extends TestCase{
public static final Logger s_logger = Logger.getLogger(Test.class.getName());
public Test(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
}
//Try to create portForwarding rule for all available private/public ports
ArrayList<String> port = new ArrayList<String>();
for (int j=1; j<1000; j++){
port.add(Integer.toString(j));
}
//try all public ports
for (String portValue : port) {
try {
s_logger.info("public port is " + portValue);
String url = "http://" + this.getParam().get("hostip") + ":8096/?command=createNetworkRule&publicPort=" + portValue + "&privatePort=22&protocol=tcp&isForward=true&securityGroupId=1&account=admin";
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode != 200 ) {
error++;
s_logger.error("Can't create portForwarding network rule for the public port " + portValue + ". Request was sent with url " + url);
}
}catch (Exception ex) {
s_logger.error(ex);
}
}
if (error != 0)
return false;
else
return true;
}
}
package com.cloud.test.regression;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Test extends TestCase{
public static final Logger s_logger = Logger.getLogger(Test.class.getName());
public Test(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), null);
}
//Try to create portForwarding rule for all available private/public ports
ArrayList<String> port = new ArrayList<String>();
for (int j=1; j<1000; j++){
port.add(Integer.toString(j));
}
//try all public ports
for (String portValue : port) {
try {
s_logger.info("public port is " + portValue);
String url = "http://" + this.getParam().get("hostip") + ":8096/?command=createNetworkRule&publicPort=" + portValue + "&privatePort=22&protocol=tcp&isForward=true&securityGroupId=1&account=admin";
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
if (responseCode != 200 ) {
error++;
s_logger.error("Can't create portForwarding network rule for the public port " + portValue + ". Request was sent with url " + url);
}
}catch (Exception ex) {
s_logger.error(ex);
}
}
if (error != 0)
return false;
else
return true;
}
}

View File

@ -10,8 +10,8 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
package com.cloud.test.regression;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
@ -27,24 +27,24 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.httpclient.HttpClient;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
public abstract class TestCase{
public static Logger s_logger = Logger.getLogger(TestCase.class.getName());
private Connection conn;
private ArrayList <Document> inputFile = new ArrayList<Document> ();
private HttpClient client;
private String testCaseName;
public abstract class TestCase{
public static Logger s_logger = Logger.getLogger(TestCase.class.getName());
private Connection conn;
private ArrayList <Document> inputFile = new ArrayList<Document> ();
private HttpClient client;
private String testCaseName;
private HashMap<String, String> param = new HashMap<String, String> ();
private HashMap<String, String> commands = new HashMap<String, String> ();
public HashMap<String, String> getParam() {
return param;
}
public void setParam(HashMap<String, String> param) {
this.param = param;
private HashMap<String, String> commands = new HashMap<String, String> ();
public HashMap<String, String> getParam() {
return param;
}
public void setParam(HashMap<String, String> param) {
this.param = param;
}
@ -73,26 +73,26 @@ public abstract class TestCase{
s_logger.info("Unable to find the file " + param.get("apicommands") + " due to following exception " + ex);
}
}
public Connection getConn() {
return conn;
}
public void setConn(String dbPassword) {
this.conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
this.conn=DriverManager.getConnection("jdbc:mysql://" + param.get("db") + "/cloud", "root", dbPassword);
if (!this.conn.isValid(0)) {
s_logger.error("Connection to DB failed to establish");
}
}catch (Exception ex) {
s_logger.error(ex);
}
}
}
public Connection getConn() {
return conn;
}
public void setConn(String dbPassword) {
this.conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
this.conn=DriverManager.getConnection("jdbc:mysql://" + param.get("db") + "/cloud", "root", dbPassword);
if (!this.conn.isValid(0)) {
s_logger.error("Connection to DB failed to establish");
}
}catch (Exception ex) {
s_logger.error(ex);
}
}
public void setInputFile (ArrayList<String> fileNameInput) {
for (String fileName: fileNameInput) {
File file = new File(fileName);
@ -106,31 +106,31 @@ public abstract class TestCase{
s_logger.error("Unable to load " + fileName + " due to ", ex);
}
this.inputFile.add(doc);
}
}
public ArrayList<Document> getInputFile() {
return inputFile;
}
public void setTestCaseName(String testCaseName) {
this.testCaseName = testCaseName;
}
public String getTestCaseName(){
return this.testCaseName;
}
public void setClient() {
HttpClient client = new HttpClient();
this.client = client;
}
public HttpClient getClient() {
return this.client;
}
//abstract methods
public abstract boolean executeTest();
}
}
}
public ArrayList<Document> getInputFile() {
return inputFile;
}
public void setTestCaseName(String testCaseName) {
this.testCaseName = testCaseName;
}
public String getTestCaseName(){
return this.testCaseName;
}
public void setClient() {
HttpClient client = new HttpClient();
this.client = client;
}
public HttpClient getClient() {
return this.client;
}
//abstract methods
public abstract boolean executeTest();
}

View File

@ -10,55 +10,55 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
package com.cloud.test.regression;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.cloud.test.regression.ApiCommand.ResponseType;
public class VMApiTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(VMApiTest.class.getName());
public VMApiTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), this.getConn());
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
public class VMApiTest extends TestCase{
public static final Logger s_logger = Logger.getLogger(VMApiTest.class.getName());
public VMApiTest(){
this.setClient();
this.setParam(new HashMap<String, String>());
}
public boolean executeTest(){
int error=0;
Element rootElement = this.getInputFile().get(0).getDocumentElement();
NodeList commandLst = rootElement.getElementsByTagName("command");
//Analyze each command, send request and build the array list of api commands
for (int i=0; i<commandLst.getLength(); i++) {
Node fstNode = commandLst.item(i);
Element fstElmnt = (Element) fstNode;
//new command
ApiCommand api = new ApiCommand(fstElmnt, this.getParam(), this.getCommands());
//send a command
api.sendCommand(this.getClient(), this.getConn());
//verify the response of the command
if ((api.getResponseType() == ResponseType.ERROR) && (api.getResponseCode() == 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed. Command that was supposed to fail, passed. The command was sent with the following url " + api.getUrl());
error++;
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() == 200)) {
//set parameters for the future use
if (api.setParam(this.getParam()) == false) {
s_logger.error("Exiting the test...Command " + api.getName() + " didn't return parameters needed for the future use. The command was sent with url " + api.getUrl());
return false;
}
//verify parameters
if (api.verifyParam() == false)
{
@ -68,24 +68,24 @@ public static final Logger s_logger = Logger.getLogger(VMApiTest.class.getName()
else
{
s_logger.info("Test " + api.getTestCaseInfo() + " passed");
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
if (error != 0)
return false;
else
return true;
}
}
}
}
else if ((api.getResponseType() != ResponseType.ERROR) && (api.getResponseCode() != 200)) {
s_logger.error("Test case " + api.getTestCaseInfo() + " failed with an error code " + api.getResponseCode() + " . Command was sent with url " + api.getUrl());
if (api.getRequired() == true) {
s_logger.info("The command is required for the future use, so exiging");
return false;
}
error++;
}
else if (api.getTestCaseInfo() != null){
s_logger.info("Test case " + api.getTestCaseInfo() + " passed");
}
}
if (error != 0)
return false;
else
return true;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -10,148 +10,148 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.stress;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.trilead.ssh2.ChannelCondition;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class WgetTest {
public static int MAX_RETRY_LINUX = 1;
public static final Logger s_logger = Logger.getLogger(WgetTest.class.getName());
public static String host = "";
public static String password = "rs-ccb35ea5";
public static void main (String[] args) {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
// host
if (arg.equals("-h")) {
host = iter.next();
}
//password
if (arg.equals("-p")) {
password = iter.next();
}
}
int i = 0;
if (host == null || host.equals("")) {
s_logger
.info("Did not receive a host back from test, ignoring ssh test");
System.exit(2);
}
if (password == null){
s_logger.info("Did not receive a password back from test, ignoring ssh test");
System.exit(2);
}
int retry = 0;
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry
+ " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
s_logger.info("Attempting to SSH into linux host " + host
+ " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("User + ssHed successfully into linux host " + host);
boolean isAuthenticated = conn.authenticateWithPassword("root",
password);
if (isAuthenticated == false) {
s_logger.info("Authentication failed for root with password" + password);
System.exit(2);
}
boolean success = false;
String linuxCommand = null;
if (i % 10 == 0)
linuxCommand = "rm -rf *; wget http://192.168.1.250/dump.bin && ls -al dump.bin";
else
linuxCommand = "wget http://192.168.1.250/dump.bin && ls -al dump.bin";
Session sess = conn.openSession();
sess.execCommand(linuxCommand);
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(
ChannelCondition.STDOUT_DATA
| ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger
.info("Timeout while waiting for data from peer.");
System.exit(2);
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
/* int len = */stderr.read(buffer);
}
}
sess.close();
conn.close();
if (!success) {
retry++;
if (retry == MAX_RETRY_LINUX) {
System.exit(2);
}
}
} catch (Exception e) {
retry++;
s_logger.error("SSH Linux Network test fail with error");
if (retry == MAX_RETRY_LINUX) {
s_logger.error("Ssh test failed");
System.exit(2);
}
}
}
}
package com.cloud.test.stress;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.trilead.ssh2.ChannelCondition;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
public class WgetTest {
public static int MAX_RETRY_LINUX = 1;
public static final Logger s_logger = Logger.getLogger(WgetTest.class.getName());
public static String host = "";
public static String password = "rs-ccb35ea5";
public static void main (String[] args) {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
// host
if (arg.equals("-h")) {
host = iter.next();
}
//password
if (arg.equals("-p")) {
password = iter.next();
}
}
int i = 0;
if (host == null || host.equals("")) {
s_logger
.info("Did not receive a host back from test, ignoring ssh test");
System.exit(2);
}
if (password == null){
s_logger.info("Did not receive a password back from test, ignoring ssh test");
System.exit(2);
}
int retry = 0;
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry
+ " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
s_logger.info("Attempting to SSH into linux host " + host
+ " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("User + ssHed successfully into linux host " + host);
boolean isAuthenticated = conn.authenticateWithPassword("root",
password);
if (isAuthenticated == false) {
s_logger.info("Authentication failed for root with password" + password);
System.exit(2);
}
boolean success = false;
String linuxCommand = null;
if (i % 10 == 0)
linuxCommand = "rm -rf *; wget http://192.168.1.250/dump.bin && ls -al dump.bin";
else
linuxCommand = "wget http://192.168.1.250/dump.bin && ls -al dump.bin";
Session sess = conn.openSession();
sess.execCommand(linuxCommand);
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(
ChannelCondition.STDOUT_DATA
| ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger
.info("Timeout while waiting for data from peer.");
System.exit(2);
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
/* int len = */stderr.read(buffer);
}
}
sess.close();
conn.close();
if (!success) {
retry++;
if (retry == MAX_RETRY_LINUX) {
System.exit(2);
}
}
} catch (Exception e) {
retry++;
s_logger.error("SSH Linux Network test fail with error");
if (retry == MAX_RETRY_LINUX) {
s_logger.error("Ssh test failed");
System.exit(2);
}
}
}
}

View File

@ -10,104 +10,104 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.ui;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.cloud.test.ui.AbstractSeleniumTestCase;
import com.thoughtworks.selenium.SeleniumException;
public class AddAndDeleteAISO extends AbstractSeleniumTestCase {
@Test
public void testAddAndDeleteISO() throws Exception {
try {
selenium.open("/client/");
selenium.type("account_username", "admin");
selenium.type("account_password", "password");
selenium.click("loginbutton");
Thread.sleep(3000);
assertTrue(selenium.isTextPresent("admin"));
selenium.click("//div[@id='leftmenu_templates']/div");
selenium.click("//div[@id='leftmenu_submenu_my_iso']/div/div[2]");
Thread.sleep(3000);
selenium.click("label");
selenium.type("add_iso_name", "abc");
selenium.type("add_iso_display_text", "abc");
String iso_url = System.getProperty("add_iso_url", "http://10.91.28.6/ISO/Fedora-11-i386-DVD.iso");
selenium.type("add_iso_url", iso_url);
String iso_zone = System.getProperty("add_iso_zone", "All Zones");
selenium.select("add_iso_zone", "label="+iso_zone);
String iso_os_type = System.getProperty("add_iso_os_type", "Fedora 11");
selenium.select("add_iso_os_type", "label="+iso_os_type);
selenium.click("//div[28]/div[11]/button[1]");
Thread.sleep(3000);
int i=1;
try
{
for(;;i++)
{
System.out.println("i= "+i);
selenium.click("//div[" +i+ "]/div/div[2]/span/span");
}
}
catch(Exception ex) {
}
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("//div[@id='after_action_info_container_on_top']")) break; } catch (Exception e) {}
Thread.sleep(10000);
}
assertTrue(selenium.isTextPresent("Adding succeeded"));
Thread.sleep(3000);
int status=1;
while(!selenium.isTextPresent("Ready"))
{
for(int j =1;j<=i;j++)
{
if (selenium.isTextPresent("Ready"))
{
status=0;
break;
}
selenium.click("//div["+j+"]/div/div[2]/span/span");
}
if(status==0){
break;
}
else
{
selenium.click("//div[@id='leftmenu_submenu_featured_iso']/div/div[2]");
Thread.sleep(3000);
selenium.click("//div[@id='leftmenu_submenu_my_iso']/div/div[2]");
Thread.sleep(3000);
}
}
selenium.click("link=Delete ISO");
selenium.click("//div[28]/div[11]/button[1]");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("after_action_info_container_on_top")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
assertTrue(selenium.isTextPresent("Delete ISO action succeeded"));
selenium.click("main_logout");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome to Management Console"));
} catch (SeleniumException ex) {
System.err.println(ex.getMessage());
fail(ex.getMessage());
throw ex;
}
}
package com.cloud.test.ui;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.cloud.test.ui.AbstractSeleniumTestCase;
import com.thoughtworks.selenium.SeleniumException;
public class AddAndDeleteAISO extends AbstractSeleniumTestCase {
@Test
public void testAddAndDeleteISO() throws Exception {
try {
selenium.open("/client/");
selenium.type("account_username", "admin");
selenium.type("account_password", "password");
selenium.click("loginbutton");
Thread.sleep(3000);
assertTrue(selenium.isTextPresent("admin"));
selenium.click("//div[@id='leftmenu_templates']/div");
selenium.click("//div[@id='leftmenu_submenu_my_iso']/div/div[2]");
Thread.sleep(3000);
selenium.click("label");
selenium.type("add_iso_name", "abc");
selenium.type("add_iso_display_text", "abc");
String iso_url = System.getProperty("add_iso_url", "http://10.91.28.6/ISO/Fedora-11-i386-DVD.iso");
selenium.type("add_iso_url", iso_url);
String iso_zone = System.getProperty("add_iso_zone", "All Zones");
selenium.select("add_iso_zone", "label="+iso_zone);
String iso_os_type = System.getProperty("add_iso_os_type", "Fedora 11");
selenium.select("add_iso_os_type", "label="+iso_os_type);
selenium.click("//div[28]/div[11]/button[1]");
Thread.sleep(3000);
int i=1;
try
{
for(;;i++)
{
System.out.println("i= "+i);
selenium.click("//div[" +i+ "]/div/div[2]/span/span");
}
}
catch(Exception ex) {
}
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("//div[@id='after_action_info_container_on_top']")) break; } catch (Exception e) {}
Thread.sleep(10000);
}
assertTrue(selenium.isTextPresent("Adding succeeded"));
Thread.sleep(3000);
int status=1;
while(!selenium.isTextPresent("Ready"))
{
for(int j =1;j<=i;j++)
{
if (selenium.isTextPresent("Ready"))
{
status=0;
break;
}
selenium.click("//div["+j+"]/div/div[2]/span/span");
}
if(status==0){
break;
}
else
{
selenium.click("//div[@id='leftmenu_submenu_featured_iso']/div/div[2]");
Thread.sleep(3000);
selenium.click("//div[@id='leftmenu_submenu_my_iso']/div/div[2]");
Thread.sleep(3000);
}
}
selenium.click("link=Delete ISO");
selenium.click("//div[28]/div[11]/button[1]");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("after_action_info_container_on_top")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
assertTrue(selenium.isTextPresent("Delete ISO action succeeded"));
selenium.click("main_logout");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome to Management Console"));
} catch (SeleniumException ex) {
System.err.println(ex.getMessage());
fail(ex.getMessage());
throw ex;
}
}
}

View File

@ -10,102 +10,102 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.ui;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.cloud.test.ui.AbstractSeleniumTestCase;
import com.thoughtworks.selenium.SeleniumException;
public class AddAndDeleteATemplate extends AbstractSeleniumTestCase {
@Test
public void testAddAndDeleteTemplate() throws Exception {
try {
selenium.open("/client/");
selenium.type("account_username", "admin");
selenium.type("account_password", "password");
selenium.click("loginbutton");
Thread.sleep(3000);
assertTrue(selenium.isTextPresent("admin"));
selenium.click("//div[@id='leftmenu_templates']/div");
selenium.click("//div[@id='leftmenu_submenu_my_template']/div/div[2]");
Thread.sleep(3000);
selenium.click("label");
selenium.type("add_template_name", "abc");
selenium.type("add_template_display_text", "abc");
String template_url = System.getProperty("add_template_url", "http://10.91.28.6/templates/centos53-x86_64/latest/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2");
selenium.type("add_template_url", template_url);
String template_zone = System.getProperty("add_template_zone", "All Zones");
selenium.select("add_template_zone", "label="+template_zone);
String template_os_type = System.getProperty("add_template_os_type", "CentOS 5.3 (32-bit)");
selenium.select("add_template_os_type", "label="+template_os_type);
selenium.click("//div[28]/div[11]/button[1]");
Thread.sleep(3000);
int i=1;
try
{
for(;;i++)
{
System.out.println("i= "+i);
selenium.click("//div[" +i+ "]/div/div[2]/span/span");
}
}
catch(Exception ex) {
}
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("//div[@id='after_action_info_container_on_top']")) break; } catch (Exception e) {}
Thread.sleep(10000);
}
assertTrue(selenium.isTextPresent("Adding succeeded"));
Thread.sleep(3000);
int status=1;
while(!selenium.isTextPresent("Ready"))
{
for(int j =1;j<=i;j++)
{
if (selenium.isTextPresent("Ready"))
{
status=0;
break;
}
selenium.click("//div["+j+"]/div/div[2]/span/span");
}
if(status==0){
break;
}
else
{
selenium.click("//div[@id='leftmenu_submenu_featured_template']/div/div[2]");
Thread.sleep(3000);
selenium.click("//div[@id='leftmenu_submenu_my_template']/div/div[2]");
Thread.sleep(3000);
}
}
selenium.click("link=Delete Template");
selenium.click("//div[28]/div[11]/button[1]");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("after_action_info_container_on_top")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
assertTrue(selenium.isTextPresent("Delete Template action succeeded"));
selenium.click("main_logout");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome to Management Console"));
} catch (SeleniumException ex) {
System.err.println(ex.getMessage());
fail(ex.getMessage());
throw ex;
}
}
package com.cloud.test.ui;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.cloud.test.ui.AbstractSeleniumTestCase;
import com.thoughtworks.selenium.SeleniumException;
public class AddAndDeleteATemplate extends AbstractSeleniumTestCase {
@Test
public void testAddAndDeleteTemplate() throws Exception {
try {
selenium.open("/client/");
selenium.type("account_username", "admin");
selenium.type("account_password", "password");
selenium.click("loginbutton");
Thread.sleep(3000);
assertTrue(selenium.isTextPresent("admin"));
selenium.click("//div[@id='leftmenu_templates']/div");
selenium.click("//div[@id='leftmenu_submenu_my_template']/div/div[2]");
Thread.sleep(3000);
selenium.click("label");
selenium.type("add_template_name", "abc");
selenium.type("add_template_display_text", "abc");
String template_url = System.getProperty("add_template_url", "http://10.91.28.6/templates/centos53-x86_64/latest/f59f18fb-ae94-4f97-afd2-f84755767aca.vhd.bz2");
selenium.type("add_template_url", template_url);
String template_zone = System.getProperty("add_template_zone", "All Zones");
selenium.select("add_template_zone", "label="+template_zone);
String template_os_type = System.getProperty("add_template_os_type", "CentOS 5.3 (32-bit)");
selenium.select("add_template_os_type", "label="+template_os_type);
selenium.click("//div[28]/div[11]/button[1]");
Thread.sleep(3000);
int i=1;
try
{
for(;;i++)
{
System.out.println("i= "+i);
selenium.click("//div[" +i+ "]/div/div[2]/span/span");
}
}
catch(Exception ex) {
}
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("//div[@id='after_action_info_container_on_top']")) break; } catch (Exception e) {}
Thread.sleep(10000);
}
assertTrue(selenium.isTextPresent("Adding succeeded"));
Thread.sleep(3000);
int status=1;
while(!selenium.isTextPresent("Ready"))
{
for(int j =1;j<=i;j++)
{
if (selenium.isTextPresent("Ready"))
{
status=0;
break;
}
selenium.click("//div["+j+"]/div/div[2]/span/span");
}
if(status==0){
break;
}
else
{
selenium.click("//div[@id='leftmenu_submenu_featured_template']/div/div[2]");
Thread.sleep(3000);
selenium.click("//div[@id='leftmenu_submenu_my_template']/div/div[2]");
Thread.sleep(3000);
}
}
selenium.click("link=Delete Template");
selenium.click("//div[28]/div[11]/button[1]");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (selenium.isVisible("after_action_info_container_on_top")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
assertTrue(selenium.isTextPresent("Delete Template action succeeded"));
selenium.click("main_logout");
selenium.waitForPageToLoad("30000");
assertTrue(selenium.isTextPresent("Welcome to Management Console"));
} catch (SeleniumException ex) {
System.err.println(ex.getMessage());
fail(ex.getMessage());
throw ex;
}
}
}

View File

@ -10,101 +10,101 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
import java.io.BufferedReader;
import java.io.IOException;
import org.apache.log4j.Logger;
package com.cloud.test.utils;
import java.io.BufferedReader;
import java.io.IOException;
import org.apache.log4j.Logger;
import com.cloud.utils.script.OutputInterpreter;
import com.cloud.utils.script.Script;
public class ConsoleProxy implements Runnable {
public static String proxyIp;
private String command;
private int connectionsMade;
private long responseTime;
public static final Logger s_logger = Logger.getLogger(ConsoleProxy.class
.getClass());
public ConsoleProxy(String port, String sid, String host) {
this.command = "https://" + proxyIp
+ ".realhostip.com:8000/getscreen?w=100&h=75&host=" + host
+ "&port=" + port + "&sid=" + sid;
s_logger.info("Command for a console proxy is " + this.command);
this.connectionsMade=0;
this.responseTime=0;
}
public int getConnectionsMade() {
return this.connectionsMade;
}
public long getResponseTime() {
return this.responseTime;
}
public void run() {
while (true){
Script myScript = new Script("wget");
myScript.add(command);
myScript.execute();
long begin = System.currentTimeMillis();
wgetInt process = new wgetInt();
String response = myScript.execute(process);
long end = process.getEnd();
if (response!=null){
s_logger.info("Content lenght is incorrect: "+response);
}
long duration = (end - begin);
this.connectionsMade++;
this.responseTime=this.responseTime+duration;
try{
Thread.sleep(1000);
}catch (InterruptedException e){
}
}
}
public class wgetInt extends OutputInterpreter {
private long end;
public long getEnd() {
return end;
}
public void setEnd(long end) {
this.end = end;
}
@Override
public String interpret(BufferedReader reader) throws IOException {
// TODO Auto-generated method stub
end = System.currentTimeMillis();
String status = null;
String line = null;
while ((line = reader.readLine()) != null) {
int index = line.indexOf("Length:");
if (index == -1) {
continue;
}
else{
int index1 = line.indexOf("Length: 1827");
if (index1 == -1) {
return status;
}
else
status=line;
}
}
return status;
}
}
}
public class ConsoleProxy implements Runnable {
public static String proxyIp;
private String command;
private int connectionsMade;
private long responseTime;
public static final Logger s_logger = Logger.getLogger(ConsoleProxy.class
.getClass());
public ConsoleProxy(String port, String sid, String host) {
this.command = "https://" + proxyIp
+ ".realhostip.com:8000/getscreen?w=100&h=75&host=" + host
+ "&port=" + port + "&sid=" + sid;
s_logger.info("Command for a console proxy is " + this.command);
this.connectionsMade=0;
this.responseTime=0;
}
public int getConnectionsMade() {
return this.connectionsMade;
}
public long getResponseTime() {
return this.responseTime;
}
public void run() {
while (true){
Script myScript = new Script("wget");
myScript.add(command);
myScript.execute();
long begin = System.currentTimeMillis();
wgetInt process = new wgetInt();
String response = myScript.execute(process);
long end = process.getEnd();
if (response!=null){
s_logger.info("Content lenght is incorrect: "+response);
}
long duration = (end - begin);
this.connectionsMade++;
this.responseTime=this.responseTime+duration;
try{
Thread.sleep(1000);
}catch (InterruptedException e){
}
}
}
public class wgetInt extends OutputInterpreter {
private long end;
public long getEnd() {
return end;
}
public void setEnd(long end) {
this.end = end;
}
@Override
public String interpret(BufferedReader reader) throws IOException {
// TODO Auto-generated method stub
end = System.currentTimeMillis();
String status = null;
String line = null;
while ((line = reader.readLine()) != null) {
int index = line.indexOf("Length:");
if (index == -1) {
continue;
}
else{
int index1 = line.indexOf("Length: 1827");
if (index1 == -1) {
return status;
}
else
status=line;
}
}
return status;
}
}
}

View File

@ -10,75 +10,75 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.StringTokenizer;
public class IpSqlGenerator {
public static void main (String[] args) {
try {
if (args.length != 5) {
System.out.println("Usage -- generate-ip.sh <public|private> <begin ip range> <end ip range> <data center id> <pod id>");
System.out.println("Example -- generate-ip.sh public 192.168.1.1 192.168.1.255 1 1");
System.out.println(" will generate ips ranging from public ips 192.168.1.1 to 192.168.1.255 for dc 1 and pod 1");
return;
}
String type = args[0];
StringTokenizer st = new StringTokenizer(args[1], ".");
int ipS1 = Integer.parseInt(st.nextToken());
int ipS2 = Integer.parseInt(st.nextToken());
int ipS3 = Integer.parseInt(st.nextToken());
int ipS4 = Integer.parseInt(st.nextToken());
st = new StringTokenizer(args[2], ".");
int ipE1 = Integer.parseInt(st.nextToken());
int ipE2 = Integer.parseInt(st.nextToken());
int ipE3 = Integer.parseInt(st.nextToken());
int ipE4 = Integer.parseInt(st.nextToken());
String dcId = args[3];
String podId = args[4];
if (type.equals("private")) {
FileOutputStream fs = new FileOutputStream(new File("private-ips.sql"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = ipS1; i <= ipE1; i++) {
for (int j = ipS2; j <= ipE2; j++) {
for (int k = ipS3; k <= ipE3; k++) {
for (int l = ipS4; l <= ipE4; l++) {
out.writeBytes("INSERT INTO `vmops`.`dc_ip_address_alloc` (ip_address, data_center_id, pod_id) VALUES ('"
+ i + "." + j + "." + k + "." + l + "'," + dcId + "," + podId + ");\r\n");
}
}
}
}
out.writeBytes("\r\n");
out.flush();
out.close();
} else {
FileOutputStream fs = new FileOutputStream(new File("public-ips.sql"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = ipS1; i <= ipE1; i++) {
for (int j = ipS2; j <= ipE2; j++) {
for (int k = ipS3; k <= ipE3; k++) {
for (int l = ipS4; l <= ipE4; l++) {
out.writeBytes("INSERT INTO `vmops`.`user_ip_address` (ip_address, data_center_id) VALUES ('"
+ i + "." + j + "." + k + "." + l + "'," + dcId + ");\r\n");
}
}
}
}
out.writeBytes("\r\n");
out.flush();
out.close();
}
} catch (Exception e) {
}
}
}
package com.cloud.test.utils;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.StringTokenizer;
public class IpSqlGenerator {
public static void main (String[] args) {
try {
if (args.length != 5) {
System.out.println("Usage -- generate-ip.sh <public|private> <begin ip range> <end ip range> <data center id> <pod id>");
System.out.println("Example -- generate-ip.sh public 192.168.1.1 192.168.1.255 1 1");
System.out.println(" will generate ips ranging from public ips 192.168.1.1 to 192.168.1.255 for dc 1 and pod 1");
return;
}
String type = args[0];
StringTokenizer st = new StringTokenizer(args[1], ".");
int ipS1 = Integer.parseInt(st.nextToken());
int ipS2 = Integer.parseInt(st.nextToken());
int ipS3 = Integer.parseInt(st.nextToken());
int ipS4 = Integer.parseInt(st.nextToken());
st = new StringTokenizer(args[2], ".");
int ipE1 = Integer.parseInt(st.nextToken());
int ipE2 = Integer.parseInt(st.nextToken());
int ipE3 = Integer.parseInt(st.nextToken());
int ipE4 = Integer.parseInt(st.nextToken());
String dcId = args[3];
String podId = args[4];
if (type.equals("private")) {
FileOutputStream fs = new FileOutputStream(new File("private-ips.sql"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = ipS1; i <= ipE1; i++) {
for (int j = ipS2; j <= ipE2; j++) {
for (int k = ipS3; k <= ipE3; k++) {
for (int l = ipS4; l <= ipE4; l++) {
out.writeBytes("INSERT INTO `vmops`.`dc_ip_address_alloc` (ip_address, data_center_id, pod_id) VALUES ('"
+ i + "." + j + "." + k + "." + l + "'," + dcId + "," + podId + ");\r\n");
}
}
}
}
out.writeBytes("\r\n");
out.flush();
out.close();
} else {
FileOutputStream fs = new FileOutputStream(new File("public-ips.sql"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = ipS1; i <= ipE1; i++) {
for (int j = ipS2; j <= ipE2; j++) {
for (int k = ipS3; k <= ipE3; k++) {
for (int l = ipS4; l <= ipE4; l++) {
out.writeBytes("INSERT INTO `vmops`.`user_ip_address` (ip_address, data_center_id) VALUES ('"
+ i + "." + j + "." + k + "." + l + "'," + dcId + ");\r\n");
}
}
}
}
out.writeBytes("\r\n");
out.flush();
out.close();
}
} catch (Exception e) {
}
}
}

View File

@ -10,108 +10,108 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import org.apache.log4j.Logger;
public class ProxyLoadTemp {
public static final Logger s_logger= Logger.getLogger(ProxyLoadTemp.class.getClass());
public static int numThreads=0;
public static ArrayList<ConsoleProxy> proxyList = new ArrayList<ConsoleProxy>();
public static long begin;
public static long end;
public static long sum=0;
public ProxyLoadTemp(){
}
public static void main (String[] args){
begin= System.currentTimeMillis();
Runtime.getRuntime().addShutdownHook(new ShutdownThread(new ProxyLoadTemp()));
ConsoleProxy.proxyIp="172-16-1-101";
try
{
BufferedReader consoleInput = new BufferedReader(new FileReader("console.input"));
boolean eof = false;
s_logger.info("Started reading file");
while (!eof){
String line = consoleInput.readLine();
s_logger.info("Line is "+line);
if (line == null){
s_logger.info("Line "+numThreads+" is null");
eof=true;
}
else{
String[] result=null;
try
{
s_logger.info("Starting parsing line "+line);
result= parseLine(line, "[,]");
s_logger.info("Line retrieved from the file is "+result[0]+" "+result[1]+" "+result[2]);
ConsoleProxy proxy = new ConsoleProxy(result[0], result[1], result[2]);
proxyList.add(proxy);
new Thread(proxy).start();
numThreads++;
}
catch (Exception ex){
s_logger.warn(ex);
}
}
}
}catch(Exception e){
s_logger.warn(e);
}
}
public static class ShutdownThread extends Thread {
ProxyLoadTemp temp;
public ShutdownThread(ProxyLoadTemp temp) {
this.temp = temp;
}
public void run() {
s_logger.info("Program was running in "+numThreads+" threads");
for (int j=0; j<proxyList.size(); j++){
long av=0;
if (proxyList.get(j).getConnectionsMade()!=0){
av=proxyList.get(j).getResponseTime()/proxyList.get(j).getConnectionsMade();
}
s_logger.info("Information for "+j+" thread: Number of requests sent is "+proxyList.get(j).getConnectionsMade()+". Average response time is "+av+" milliseconds");
sum=sum+av;
}
ProxyLoadTemp.end= System.currentTimeMillis();
s_logger.info("Summary for all"+numThreads+" threads: Average response time is "+sum/numThreads+" milliseconds");
s_logger.info("Test was running for "+(ProxyLoadTemp.end-ProxyLoadTemp.begin)/1000+" seconds");
}
}
public static String[] parseLine(String line, String del) throws Exception
{
String del1=del.substring(1, del.length()-1);
if (line.contains(del1)!=true)
{
throw new Exception();
}
else
{
String[] token = line.split(del);
return token;
}
}
}
package com.cloud.test.utils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import org.apache.log4j.Logger;
public class ProxyLoadTemp {
public static final Logger s_logger= Logger.getLogger(ProxyLoadTemp.class.getClass());
public static int numThreads=0;
public static ArrayList<ConsoleProxy> proxyList = new ArrayList<ConsoleProxy>();
public static long begin;
public static long end;
public static long sum=0;
public ProxyLoadTemp(){
}
public static void main (String[] args){
begin= System.currentTimeMillis();
Runtime.getRuntime().addShutdownHook(new ShutdownThread(new ProxyLoadTemp()));
ConsoleProxy.proxyIp="172-16-1-101";
try
{
BufferedReader consoleInput = new BufferedReader(new FileReader("console.input"));
boolean eof = false;
s_logger.info("Started reading file");
while (!eof){
String line = consoleInput.readLine();
s_logger.info("Line is "+line);
if (line == null){
s_logger.info("Line "+numThreads+" is null");
eof=true;
}
else{
String[] result=null;
try
{
s_logger.info("Starting parsing line "+line);
result= parseLine(line, "[,]");
s_logger.info("Line retrieved from the file is "+result[0]+" "+result[1]+" "+result[2]);
ConsoleProxy proxy = new ConsoleProxy(result[0], result[1], result[2]);
proxyList.add(proxy);
new Thread(proxy).start();
numThreads++;
}
catch (Exception ex){
s_logger.warn(ex);
}
}
}
}catch(Exception e){
s_logger.warn(e);
}
}
public static class ShutdownThread extends Thread {
ProxyLoadTemp temp;
public ShutdownThread(ProxyLoadTemp temp) {
this.temp = temp;
}
public void run() {
s_logger.info("Program was running in "+numThreads+" threads");
for (int j=0; j<proxyList.size(); j++){
long av=0;
if (proxyList.get(j).getConnectionsMade()!=0){
av=proxyList.get(j).getResponseTime()/proxyList.get(j).getConnectionsMade();
}
s_logger.info("Information for "+j+" thread: Number of requests sent is "+proxyList.get(j).getConnectionsMade()+". Average response time is "+av+" milliseconds");
sum=sum+av;
}
ProxyLoadTemp.end= System.currentTimeMillis();
s_logger.info("Summary for all"+numThreads+" threads: Average response time is "+sum/numThreads+" milliseconds");
s_logger.info("Test was running for "+(ProxyLoadTemp.end-ProxyLoadTemp.begin)/1000+" seconds");
}
}
public static String[] parseLine(String line, String del) throws Exception
{
String del1=del.substring(1, del.length()-1);
if (line.contains(del1)!=true)
{
throw new Exception();
}
else
{
String[] token = line.split(del);
return token;
}
}
}

View File

@ -10,8 +10,8 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
package com.cloud.test.utils;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Iterator;
@ -20,91 +20,91 @@ import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeMap;
public class SignRequest {
public static String url;
public static String apikey;
public static String secretkey;
public static String command;
public static void main (String[] args) {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
if (arg.equals("-a")) {
apikey = iter.next();
}
if (arg.equals("-u")) {
url = iter.next();
}
if (arg.equals("-s")) {
secretkey = iter.next();
}
}
if (url == null) {
System.out.println("Please specify url with -u option. Example: -u \"command=listZones&id=1\"");
System.exit(1);
}
if (apikey == null) {
System.out.println("Please specify apikey with -a option");
System.exit(1);
}
if (secretkey == null) {
System.out.println("Please specify secretkey with -s option");
System.exit(1);
}
TreeMap<String, String> param = new TreeMap<String, String>();
String temp = "";
param.put("apikey", apikey);
StringTokenizer str1 = new StringTokenizer (url, "&");
while(str1.hasMoreTokens()) {
String newEl = str1.nextToken();
StringTokenizer str2 = new StringTokenizer(newEl, "=");
String name = str2.nextToken();
String value= str2.nextToken();
param.put(name, value);
}
//sort url hash map by key
Set c = param.entrySet();
Iterator it = c.iterator();
while (it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
String key = (String) me.getKey();
String value = (String) me.getValue();
try {
temp = temp + key + "=" + URLEncoder.encode(value, "UTF-8") + "&";
} catch (Exception ex) {
System.out.println("Unable to set parameter " + value + " for the command " + param.get("command"));
}
}
temp = temp.substring(0, temp.length()-1 );
String requestToSign = temp.toLowerCase();
System.out.println("After sorting: " + requestToSign);
String signature = UtilsForTest.signRequest(requestToSign, secretkey);
System.out.println("After Base64 encoding: " + signature);
String encodedSignature = "";
try {
encodedSignature = URLEncoder.encode(signature, "UTF-8");
} catch (Exception ex) {
System.out.println(ex);
public class SignRequest {
public static String url;
public static String apikey;
public static String secretkey;
public static String command;
public static void main (String[] args) {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
if (arg.equals("-a")) {
apikey = iter.next();
}
if (arg.equals("-u")) {
url = iter.next();
}
if (arg.equals("-s")) {
secretkey = iter.next();
}
}
System.out.println("After UTF8 encoding: " + encodedSignature);
if (url == null) {
System.out.println("Please specify url with -u option. Example: -u \"command=listZones&id=1\"");
System.exit(1);
}
if (apikey == null) {
System.out.println("Please specify apikey with -a option");
System.exit(1);
}
if (secretkey == null) {
System.out.println("Please specify secretkey with -s option");
System.exit(1);
}
TreeMap<String, String> param = new TreeMap<String, String>();
String temp = "";
param.put("apikey", apikey);
StringTokenizer str1 = new StringTokenizer (url, "&");
while(str1.hasMoreTokens()) {
String newEl = str1.nextToken();
StringTokenizer str2 = new StringTokenizer(newEl, "=");
String name = str2.nextToken();
String value= str2.nextToken();
param.put(name, value);
}
//sort url hash map by key
Set c = param.entrySet();
Iterator it = c.iterator();
while (it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
String key = (String) me.getKey();
String value = (String) me.getValue();
try {
temp = temp + key + "=" + URLEncoder.encode(value, "UTF-8") + "&";
} catch (Exception ex) {
System.out.println("Unable to set parameter " + value + " for the command " + param.get("command"));
}
}
temp = temp.substring(0, temp.length()-1 );
String requestToSign = temp.toLowerCase();
System.out.println("After sorting: " + requestToSign);
String signature = UtilsForTest.signRequest(requestToSign, secretkey);
System.out.println("After Base64 encoding: " + signature);
String encodedSignature = "";
try {
encodedSignature = URLEncoder.encode(signature, "UTF-8");
} catch (Exception ex) {
System.out.println(ex);
}
System.out.println("After UTF8 encoding: " + encodedSignature);
String url = temp + "&signature=" + encodedSignature;
System.out.println("After sort and add signature: " + url);
}
}
System.out.println("After sort and add signature: " + url);
}
}

View File

@ -10,35 +10,35 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Formatter;
public class SqlDataGenerator {
public static void main (String[] args) {
try {
FileOutputStream fs = new FileOutputStream(new File("out.txt"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = 20; i < 171; i++) {
out.writeBytes("INSERT INTO `vmops`.`dc_ip_address_alloc` (ip_address, data_center_id, pod_id) VALUES ('192.168.2."+i+"',1,1);\r\n");
}
out.writeBytes("\r\n");
for (int i = 1; i < 10000; i++) {
StringBuilder imagePath = new StringBuilder();
Formatter formatter = new Formatter(imagePath);
formatter.format("%04x", i);
out.writeBytes("INSERT INTO `vmops`.`dc_vnet_alloc` (vnet, data_center_id) VALUES ('"+imagePath.toString()+"',1);\r\n");
}
out.flush();
out.close();
} catch (Exception e) {
}
}
}
package com.cloud.test.utils;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Formatter;
public class SqlDataGenerator {
public static void main (String[] args) {
try {
FileOutputStream fs = new FileOutputStream(new File("out.txt"));
DataOutputStream out = new DataOutputStream(fs);
for (int i = 20; i < 171; i++) {
out.writeBytes("INSERT INTO `vmops`.`dc_ip_address_alloc` (ip_address, data_center_id, pod_id) VALUES ('192.168.2."+i+"',1,1);\r\n");
}
out.writeBytes("\r\n");
for (int i = 1; i < 10000; i++) {
StringBuilder imagePath = new StringBuilder();
Formatter formatter = new Formatter(imagePath);
formatter.format("%04x", i);
out.writeBytes("INSERT INTO `vmops`.`dc_vnet_alloc` (vnet, data_center_id) VALUES ('"+imagePath.toString()+"',1);\r\n");
}
out.flush();
out.close();
} catch (Exception e) {
}
}
}

View File

@ -10,368 +10,368 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
import com.trilead.ssh2.ChannelCondition;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.SCPClient;
import com.trilead.ssh2.Session;
public class TestClient {
private static long sleepTime = 180000L; // default 0
private static boolean cleanUp = true;
public static final Logger s_logger = Logger.getLogger(TestClient.class.getName());
private static boolean repeat = true;
private static int numOfUsers = 0;
private static String[] users = null;
private static boolean internet = true;
private static final int MAX_RETRY_LINUX = 5;
private static final int MAX_RETRY_WIN = 10;
public static void main (String[] args) {
String host = "http://localhost";
String port = "8080";
String testUrl = "/client/test";
int numThreads = 1;
try {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
// host
if (arg.equals("-h")) {
host = "http://" + iter.next();
}
if (arg.equals("-p")) {
port = iter.next();
}
if (arg.equals("-t")) {
numThreads = Integer.parseInt(iter.next());
}
if (arg.equals("-s")) {
sleepTime = Long.parseLong(iter.next());
}
if (arg.equals("-c")) {
cleanUp = Boolean.parseBoolean(iter.next());
if (!cleanUp) sleepTime = 0L; // no need to wait if we don't ever cleanup
}
if (arg.equals("-r")) {
repeat = Boolean.parseBoolean(iter.next());
}
if (arg.equals("-u")) {
numOfUsers = Integer.parseInt(iter.next());
}
if (arg.equals("-i")) {
internet = Boolean.parseBoolean(iter.next());
}
}
final String server = host+":"+port+testUrl;
s_logger.info("Starting test against server: " + server + " with " + numThreads + " thread(s)");
if (cleanUp) s_logger.info("Clean up is enabled, each test will wait " + sleepTime + " ms before cleaning up");
if (numOfUsers > 0) {
s_logger.info("Pre-generating users for test of size : " + numOfUsers);
users = new String[numOfUsers];
Random ran = new Random();
for (int i = 0; i < numOfUsers; i++) {
users[i] = Math.abs(ran.nextInt()) + "-user";
}
}
for (int i = 0; i < numThreads; i++) {
new Thread(new Runnable() {
public void run() {
do {
String username = null;
try {
long now = System.currentTimeMillis();
Random ran = new Random();
if (users != null) {
username = users[Math.abs(ran.nextInt()) % numOfUsers];
} else {
username = Math.abs(ran.nextInt())+"-user";
}
NDC.push(username);
String url = server+"?email="+username+"&password="+username+"&command=deploy";
s_logger.info("Launching test for user: " + username + " with url: " + url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
boolean success = false;
String reason = null;
if (responseCode == 200) {
if (internet) {
s_logger.info("Deploy successful...waiting 5 minute before SSH tests");
Thread.sleep(300000L); // Wait 60 seconds so the linux VM can boot up.
s_logger.info("Begin Linux SSH test");
reason = sshTest(method.getResponseHeader("linuxIP").getValue());
if (reason == null) {
s_logger.info("Linux SSH test successful");
s_logger.info("Begin Windows SSH test");
reason = sshWinTest(method.getResponseHeader("windowsIP").getValue());
}
}
if (reason == null) {
if (internet) {
s_logger.info("Windows SSH test successful");
} else {
s_logger.info("deploy test successful....now cleaning up");
if (cleanUp) {
s_logger.info("Waiting " + sleepTime + " ms before cleaning up vms");
Thread.sleep(sleepTime);
} else {
success = true;
}
}
if (users == null) {
s_logger.info("Sending cleanup command");
url = server+"?email="+username+"&password="+username+"&command=cleanup";
} else {
s_logger.info("Sending stop DomR / destroy VM command");
url = server+"?email="+username+"&password="+username+"&command=stopDomR";
}
method = new GetMethod(url);
responseCode = client.executeMethod(method);
if (responseCode == 200) {
success = true;
} else {
reason = method.getStatusText();
}
} else {
// Just stop but don't destroy the VMs/Routers
s_logger.info("SSH test failed with reason '" + reason + "', stopping VMs");
url = server+"?email="+username+"&password="+username+"&command=stop";
responseCode = client.executeMethod(new GetMethod(url));
}
} else {
// Just stop but don't destroy the VMs/Routers
reason = method.getStatusText();
s_logger.info("Deploy test failed with reason '" + reason + "', stopping VMs");
url = server+"?email="+username+"&password="+username+"&command=stop";
client.executeMethod(new GetMethod(url));
}
if (success) {
s_logger.info("***** Completed test for user : " + username + " in " + ((System.currentTimeMillis() - now) / 1000L) + " seconds");
} else {
s_logger.info("##### FAILED test for user : " + username + " in " + ((System.currentTimeMillis() - now) / 1000L) + " seconds with reason : " + reason);
}
} catch (Exception e) {
s_logger.warn("Error in thread", e);
try {
HttpClient client = new HttpClient();
String url = server+"?email="+username+"&password="+username+"&command=stop";
client.executeMethod(new GetMethod(url));
} catch (Exception e1) {
}
} finally {
NDC.clear();
}
} while (repeat);
}
}).start();
}
} catch (Exception e) {
s_logger.error(e);
}
}
private static String sshWinTest(String host) {
if (host == null) {
s_logger.info("Did not receive a host back from test, ignoring win ssh test");
return null;
}
// We will retry 5 times before quitting
int retry = 0;
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry + " ...sleeping 300 seconds before next attempt");
Thread.sleep(300000);
}
s_logger.info("Attempting to SSH into windows host " + host + " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into windows host " + host);
boolean success = false;
boolean isAuthenticated = conn.authenticateWithPassword("vmops", "vmops");
if (isAuthenticated == false) {
return "Authentication failed";
}
SCPClient scp = new SCPClient(conn);
scp.put("wget.exe", "");
Session sess = conn.openSession();
s_logger.info("Executing : wget http://172.16.0.220/dump.bin");
sess.execCommand("wget http://172.16.0.220/dump.bin && dir dump.bin");
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger.info("Timeout while waiting for data from peer.");
return null;
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
int len = stderr.read(buffer);
}
}
sess.close();
conn.close();
if (success) {
return null;
} else {
retry++;
if (retry == MAX_RETRY_WIN) {
return "SSH Windows Network test fail";
}
}
} catch (Exception e) {
retry++;
if (retry == MAX_RETRY_WIN) {
return "SSH Windows Network test fail with error " + e.getMessage();
}
}
}
}
private static String sshTest(String host) {
if (host == null) {
s_logger.info("Did not receive a host back from test, ignoring ssh test");
return null;
}
// We will retry 5 times before quitting
int retry = 0;
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry + " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
s_logger.info("Attempting to SSH into linux host " + host + " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into linux host " + host);
boolean isAuthenticated = conn.authenticateWithPassword("root", "password");
if (isAuthenticated == false) {
return "Authentication failed";
}
boolean success = false;
Session sess = conn.openSession();
s_logger.info("Executing : wget http://172.16.0.220/dump.bin");
sess.execCommand("wget http://172.16.0.220/dump.bin && ls -al dump.bin");
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger.info("Timeout while waiting for data from peer.");
return null;
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
int len = stderr.read(buffer);
}
}
sess.close();
conn.close();
if (success) {
return null;
} else {
retry++;
if (retry == MAX_RETRY_LINUX) {
return "SSH Linux Network test fail";
}
}
} catch (Exception e) {
retry++;
if (retry == MAX_RETRY_LINUX) {
return "SSH Linux Network test fail with error " + e.getMessage();
}
}
}
}
}
package com.cloud.test.utils;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
import com.trilead.ssh2.ChannelCondition;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.SCPClient;
import com.trilead.ssh2.Session;
public class TestClient {
private static long sleepTime = 180000L; // default 0
private static boolean cleanUp = true;
public static final Logger s_logger = Logger.getLogger(TestClient.class.getName());
private static boolean repeat = true;
private static int numOfUsers = 0;
private static String[] users = null;
private static boolean internet = true;
private static final int MAX_RETRY_LINUX = 5;
private static final int MAX_RETRY_WIN = 10;
public static void main (String[] args) {
String host = "http://localhost";
String port = "8080";
String testUrl = "/client/test";
int numThreads = 1;
try {
// Parameters
List<String> argsList = Arrays.asList(args);
Iterator<String> iter = argsList.iterator();
while (iter.hasNext()) {
String arg = iter.next();
// host
if (arg.equals("-h")) {
host = "http://" + iter.next();
}
if (arg.equals("-p")) {
port = iter.next();
}
if (arg.equals("-t")) {
numThreads = Integer.parseInt(iter.next());
}
if (arg.equals("-s")) {
sleepTime = Long.parseLong(iter.next());
}
if (arg.equals("-c")) {
cleanUp = Boolean.parseBoolean(iter.next());
if (!cleanUp) sleepTime = 0L; // no need to wait if we don't ever cleanup
}
if (arg.equals("-r")) {
repeat = Boolean.parseBoolean(iter.next());
}
if (arg.equals("-u")) {
numOfUsers = Integer.parseInt(iter.next());
}
if (arg.equals("-i")) {
internet = Boolean.parseBoolean(iter.next());
}
}
final String server = host+":"+port+testUrl;
s_logger.info("Starting test against server: " + server + " with " + numThreads + " thread(s)");
if (cleanUp) s_logger.info("Clean up is enabled, each test will wait " + sleepTime + " ms before cleaning up");
if (numOfUsers > 0) {
s_logger.info("Pre-generating users for test of size : " + numOfUsers);
users = new String[numOfUsers];
Random ran = new Random();
for (int i = 0; i < numOfUsers; i++) {
users[i] = Math.abs(ran.nextInt()) + "-user";
}
}
for (int i = 0; i < numThreads; i++) {
new Thread(new Runnable() {
public void run() {
do {
String username = null;
try {
long now = System.currentTimeMillis();
Random ran = new Random();
if (users != null) {
username = users[Math.abs(ran.nextInt()) % numOfUsers];
} else {
username = Math.abs(ran.nextInt())+"-user";
}
NDC.push(username);
String url = server+"?email="+username+"&password="+username+"&command=deploy";
s_logger.info("Launching test for user: " + username + " with url: " + url);
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
int responseCode = client.executeMethod(method);
boolean success = false;
String reason = null;
if (responseCode == 200) {
if (internet) {
s_logger.info("Deploy successful...waiting 5 minute before SSH tests");
Thread.sleep(300000L); // Wait 60 seconds so the linux VM can boot up.
s_logger.info("Begin Linux SSH test");
reason = sshTest(method.getResponseHeader("linuxIP").getValue());
if (reason == null) {
s_logger.info("Linux SSH test successful");
s_logger.info("Begin Windows SSH test");
reason = sshWinTest(method.getResponseHeader("windowsIP").getValue());
}
}
if (reason == null) {
if (internet) {
s_logger.info("Windows SSH test successful");
} else {
s_logger.info("deploy test successful....now cleaning up");
if (cleanUp) {
s_logger.info("Waiting " + sleepTime + " ms before cleaning up vms");
Thread.sleep(sleepTime);
} else {
success = true;
}
}
if (users == null) {
s_logger.info("Sending cleanup command");
url = server+"?email="+username+"&password="+username+"&command=cleanup";
} else {
s_logger.info("Sending stop DomR / destroy VM command");
url = server+"?email="+username+"&password="+username+"&command=stopDomR";
}
method = new GetMethod(url);
responseCode = client.executeMethod(method);
if (responseCode == 200) {
success = true;
} else {
reason = method.getStatusText();
}
} else {
// Just stop but don't destroy the VMs/Routers
s_logger.info("SSH test failed with reason '" + reason + "', stopping VMs");
url = server+"?email="+username+"&password="+username+"&command=stop";
responseCode = client.executeMethod(new GetMethod(url));
}
} else {
// Just stop but don't destroy the VMs/Routers
reason = method.getStatusText();
s_logger.info("Deploy test failed with reason '" + reason + "', stopping VMs");
url = server+"?email="+username+"&password="+username+"&command=stop";
client.executeMethod(new GetMethod(url));
}
if (success) {
s_logger.info("***** Completed test for user : " + username + " in " + ((System.currentTimeMillis() - now) / 1000L) + " seconds");
} else {
s_logger.info("##### FAILED test for user : " + username + " in " + ((System.currentTimeMillis() - now) / 1000L) + " seconds with reason : " + reason);
}
} catch (Exception e) {
s_logger.warn("Error in thread", e);
try {
HttpClient client = new HttpClient();
String url = server+"?email="+username+"&password="+username+"&command=stop";
client.executeMethod(new GetMethod(url));
} catch (Exception e1) {
}
} finally {
NDC.clear();
}
} while (repeat);
}
}).start();
}
} catch (Exception e) {
s_logger.error(e);
}
}
private static String sshWinTest(String host) {
if (host == null) {
s_logger.info("Did not receive a host back from test, ignoring win ssh test");
return null;
}
// We will retry 5 times before quitting
int retry = 0;
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry + " ...sleeping 300 seconds before next attempt");
Thread.sleep(300000);
}
s_logger.info("Attempting to SSH into windows host " + host + " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into windows host " + host);
boolean success = false;
boolean isAuthenticated = conn.authenticateWithPassword("vmops", "vmops");
if (isAuthenticated == false) {
return "Authentication failed";
}
SCPClient scp = new SCPClient(conn);
scp.put("wget.exe", "");
Session sess = conn.openSession();
s_logger.info("Executing : wget http://172.16.0.220/dump.bin");
sess.execCommand("wget http://172.16.0.220/dump.bin && dir dump.bin");
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger.info("Timeout while waiting for data from peer.");
return null;
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
int len = stderr.read(buffer);
}
}
sess.close();
conn.close();
if (success) {
return null;
} else {
retry++;
if (retry == MAX_RETRY_WIN) {
return "SSH Windows Network test fail";
}
}
} catch (Exception e) {
retry++;
if (retry == MAX_RETRY_WIN) {
return "SSH Windows Network test fail with error " + e.getMessage();
}
}
}
}
private static String sshTest(String host) {
if (host == null) {
s_logger.info("Did not receive a host back from test, ignoring ssh test");
return null;
}
// We will retry 5 times before quitting
int retry = 0;
while (true) {
try {
if (retry > 0) {
s_logger.info("Retry attempt : " + retry + " ...sleeping 120 seconds before next attempt");
Thread.sleep(120000);
}
s_logger.info("Attempting to SSH into linux host " + host + " with retry attempt: " + retry);
Connection conn = new Connection(host);
conn.connect(null, 60000, 60000);
s_logger.info("SSHed successfully into linux host " + host);
boolean isAuthenticated = conn.authenticateWithPassword("root", "password");
if (isAuthenticated == false) {
return "Authentication failed";
}
boolean success = false;
Session sess = conn.openSession();
s_logger.info("Executing : wget http://172.16.0.220/dump.bin");
sess.execCommand("wget http://172.16.0.220/dump.bin && ls -al dump.bin");
InputStream stdout = sess.getStdout();
InputStream stderr = sess.getStderr();
byte[] buffer = new byte[8192];
while (true) {
if ((stdout.available() == 0) && (stderr.available() == 0)) {
int conditions = sess.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
| ChannelCondition.EOF, 120000);
if ((conditions & ChannelCondition.TIMEOUT) != 0) {
s_logger.info("Timeout while waiting for data from peer.");
return null;
}
if ((conditions & ChannelCondition.EOF) != 0) {
if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0) {
break;
}
}
}
while (stdout.available() > 0) {
success = true;
int len = stdout.read(buffer);
if (len > 0) // this check is somewhat paranoid
s_logger.info(new String(buffer, 0, len));
}
while (stderr.available() > 0) {
int len = stderr.read(buffer);
}
}
sess.close();
conn.close();
if (success) {
return null;
} else {
retry++;
if (retry == MAX_RETRY_LINUX) {
return "SSH Linux Network test fail";
}
}
} catch (Exception e) {
retry++;
if (retry == MAX_RETRY_LINUX) {
return "SSH Linux Network test fail with error " + e.getMessage();
}
}
}
}
}

View File

@ -10,8 +10,8 @@
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.test.utils;
package com.cloud.test.utils;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
@ -33,201 +33,201 @@ import org.w3c.dom.NodeList;
import com.cloud.utils.encoding.Base64;
import com.cloud.utils.exception.CloudRuntimeException;
public class UtilsForTest {
private static DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
public static boolean verifyTags (Map<String, String> params) {
boolean result = true;
for (String value : params.keySet()) {
if (params.get(value) == null) {
result=false;
}
}
return result;
}
public static boolean verifyTagValues (Map<String, String> params, Map<String, String> pattern) {
boolean result = true;
if (pattern != null) {
for (String value : pattern.keySet()) {
if (!pattern.get(value).equals(params.get(value))) {
result=false;
System.out.println("Tag " + value + " has " + params.get(value) + " while expected value is: " + pattern.get(value));
}
}
}
return result;
}
public static Map<String, String> parseXML(InputStream is,
String[] tagNames) {
Map<String, String> returnValues = new HashMap<String, String>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in the response");
returnValues.put(tagNames[i], null);
} else {
returnValues.put(tagNames[i], targetNodes.item(0)
.getTextContent());
}
}
} catch (Exception ex) {
public class UtilsForTest {
private static DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
public static boolean verifyTags (Map<String, String> params) {
boolean result = true;
for (String value : params.keySet()) {
if (params.get(value) == null) {
result=false;
}
}
return result;
}
public static boolean verifyTagValues (Map<String, String> params, Map<String, String> pattern) {
boolean result = true;
if (pattern != null) {
for (String value : pattern.keySet()) {
if (!pattern.get(value).equals(params.get(value))) {
result=false;
System.out.println("Tag " + value + " has " + params.get(value) + " while expected value is: " + pattern.get(value));
}
}
}
return result;
}
public static Map<String, String> parseXML(InputStream is,
String[] tagNames) {
Map<String, String> returnValues = new HashMap<String, String>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in the response");
returnValues.put(tagNames[i], null);
} else {
returnValues.put(tagNames[i], targetNodes.item(0)
.getTextContent());
}
}
} catch (Exception ex) {
System.out.println("error processing XML");
ex.printStackTrace();
}
return returnValues;
}
public static ArrayList<HashMap<String, String>> parseMulXML (InputStream is, String[] tagNames){
ArrayList<HashMap<String, String>> returnValues = new ArrayList<HashMap <String, String>>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
for (int j = 0; j < targetNodes.getLength(); j++) {
HashMap<String, String> valueList = new HashMap<String,String> ();
Node node = targetNodes.item(j);
//parse child nodes
NodeList child = node.getChildNodes();
for (int c=0; c<node.getChildNodes().getLength(); c++){
child.item(c).getNodeName();
valueList.put(child.item(c).getNodeName(), child.item(c).getTextContent());
}
returnValues.add(valueList);
}
}
}
} catch (Exception ex) {
System.out.println(ex);
}
return returnValues;
}
public static String createMD5String(String password) {
MessageDigest md5;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new CloudRuntimeException("Error", e);
}
md5.reset();
BigInteger pwInt = new BigInteger(1, md5.digest(password.getBytes()));
// make sure our MD5 hash value is 32 digits long...
StringBuffer sb = new StringBuffer();
String pwStr = pwInt.toString(16);
int padding = 32 - pwStr.length();
for (int i = 0; i < padding; i++) {
sb.append('0');
}
sb.append(pwStr);
return sb.toString();
}
public static Map<String, String> getSingleValueFromXML(InputStream is,
String[] tagNames) {
Map<String, String> returnValues = new HashMap<String, String>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
returnValues.put(tagNames[i], targetNodes.item(0)
.getTextContent());
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValues;
}
public static ArrayList<HashMap<String, String>> parseMulXML (InputStream is, String[] tagNames){
ArrayList<HashMap<String, String>> returnValues = new ArrayList<HashMap <String, String>>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
for (int j = 0; j < targetNodes.getLength(); j++) {
HashMap<String, String> valueList = new HashMap<String,String> ();
Node node = targetNodes.item(j);
//parse child nodes
NodeList child = node.getChildNodes();
for (int c=0; c<node.getChildNodes().getLength(); c++){
child.item(c).getNodeName();
valueList.put(child.item(c).getNodeName(), child.item(c).getTextContent());
}
returnValues.add(valueList);
}
}
}
} catch (Exception ex) {
System.out.println(ex);
}
return returnValues;
}
public static String createMD5String(String password) {
MessageDigest md5;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new CloudRuntimeException("Error", e);
}
md5.reset();
BigInteger pwInt = new BigInteger(1, md5.digest(password.getBytes()));
// make sure our MD5 hash value is 32 digits long...
StringBuffer sb = new StringBuffer();
String pwStr = pwInt.toString(16);
int padding = 32 - pwStr.length();
for (int i = 0; i < padding; i++) {
sb.append('0');
}
sb.append(pwStr);
return sb.toString();
}
public static Map<String, String> getSingleValueFromXML(InputStream is,
String[] tagNames) {
Map<String, String> returnValues = new HashMap<String, String>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
returnValues.put(tagNames[i], targetNodes.item(0)
.getTextContent());
}
}
} catch (Exception ex) {
System.out.println("error processing XML");
ex.printStackTrace();
}
return returnValues;
}
public static Map<String, List<String>> getMultipleValuesFromXML(
InputStream is, String[] tagNames) {
Map<String, List<String>> returnValues = new HashMap<String, List<String>>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
List<String> valueList = new ArrayList<String>();
for (int j = 0; j < targetNodes.getLength(); j++) {
Node node = targetNodes.item(j);
valueList.add(node.getTextContent());
}
returnValues.put(tagNames[i], valueList);
}
}
} catch (Exception ex) {
System.out.println(ex);
}
return returnValues;
}
public static String signRequest(String request, String key) {
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(),
"HmacSHA1");
mac.init(keySpec);
mac.update(request.getBytes());
ex.printStackTrace();
}
return returnValues;
}
public static Map<String, List<String>> getMultipleValuesFromXML(
InputStream is, String[] tagNames) {
Map<String, List<String>> returnValues = new HashMap<String, List<String>>();
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < tagNames.length; i++) {
NodeList targetNodes = rootElement
.getElementsByTagName(tagNames[i]);
if (targetNodes.getLength() <= 0) {
System.out.println("no " + tagNames[i]
+ " tag in XML response...returning null");
} else {
List<String> valueList = new ArrayList<String>();
for (int j = 0; j < targetNodes.getLength(); j++) {
Node node = targetNodes.item(j);
valueList.add(node.getTextContent());
}
returnValues.put(tagNames[i], valueList);
}
}
} catch (Exception ex) {
System.out.println(ex);
}
return returnValues;
}
public static String signRequest(String request, String key) {
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(),
"HmacSHA1");
mac.init(keySpec);
mac.update(request.getBytes());
byte[] encryptedBytes = mac.doFinal();
//System.out.println("HmacSHA1 hash: " + encryptedBytes);
return Base64.encodeBytes(encryptedBytes);
} catch (Exception ex) {
//System.out.println("HmacSHA1 hash: " + encryptedBytes);
return Base64.encodeBytes(encryptedBytes);
} catch (Exception ex) {
System.out.println("unable to sign request");
ex.printStackTrace();
}
return null;
}
}
ex.printStackTrace();
}
return null;
}
}