// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. 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() { @Override 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(); } } }