/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is available at http://www.abiquo.com/.....
*
* The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com),
* Consell de Cent 296, Principal 2�, 08007 Barcelona, Spain.
*
* No portions of the Code have been created by third parties.
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
* Graphical User Interface of this software may be used under the terms
* of the Common Public Attribution License Version 1.0 (the "CPAL License",
* available at http://cpal.abiquo.com/), in which case the
* provisions of CPAL License are applicable instead of those above. In relation
* of this portions of the Code, a Legal Notice according to Exhibits A and B of
* CPAL Licence should be provided in any distribution of the corresponding Code
* to Graphical User Interface.
*/
package com.abiquo.abiserver.abicloudws;
import java.util.UUID;
import junit.framework.TestCase;
import com.abiquo.abiserver.business.hibernate.pojohb.infrastructure.HypervisorHB;
import com.abiquo.abiserver.business.hibernate.pojohb.infrastructure.VirtualmachineHB;
import com.abiquo.abiserver.business.hibernate.pojohb.virtualimage.VirtualimageHB;
import com.abiquo.abiserver.business.hibernate.util.HibernateUtil;
import com.abiquo.abiserver.commands.InfrastructureCommand;
import com.abiquo.abiserver.pojo.infrastructure.HyperVisor;
import com.abiquo.abiserver.pojo.infrastructure.State;
import com.abiquo.abiserver.pojo.infrastructure.VirtualMachine;
import com.abiquo.abiserver.pojo.result.BasicResult;
import com.abiquo.abiserver.pojo.virtualimage.VirtualImage;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class InfrastructureWSTest extends TestCase
{
private InfrastructureWS infraWs;
private InfrastructureCommand infraCommand;
private VirtualMachine virtualMachine;
protected void setUp() throws Exception
{
super.setUp();
virtualMachine = new VirtualMachine();
// Creating a Virtual Box hypervisor
HyperVisor hyperVisor = new HyperVisor();
hyperVisor.setName("vBox");
hyperVisor.setIp("192.168.102.61");
hyperVisor.setPort(18083);
virtualMachine.setAssignedTo(hyperVisor);
virtualMachine.setName("XUbuntu");
virtualMachine.setUUID(UUID.randomUUID().toString());
// Creating a virtualImage
VirtualImage virtualImage = new VirtualImage();
virtualImage.setPath("/opt/vm_repository/xubuntu-8.04-x86.vdi");
virtualImage.setName("XubuntuImage");
virtualMachine.setVirtualImage(virtualImage);
infraWs = new InfrastructureWS();
infraCommand = new InfrastructureCommand();
infraWs = new InfrastructureWS();
}
protected void tearDown() throws Exception
{
super.tearDown();
}
/*
* public void testCreateVirtualMachineDB(){ infraCommand.createVirtualMachine(virtualMachine);
* }
*/
/*
* public void testCreateVirtualMachine() throws InterruptedException { VirtualMachine
* virtualMachineDeployed = getVirtualImageFromDb(1); BasicResult result =
* infraWs.createVirtualMachine(virtualMachineDeployed); assertTrue("An error was occured: " +
* result.getMessage(), result.getSuccess()); Thread.sleep(5000); }
*/
public void testDeployVirtualMachine() throws InterruptedException
{
BasicResult result = infraWs.createVirtualMachine(virtualMachine);
assertTrue("An error was occured: " + result.getMessage(), result.getSuccess());
Thread.sleep(5000);
}
public void testPowerUpMachine() throws InterruptedException
{
State powerUpState = new State();
powerUpState.setId(State.POWERED_OFF);
virtualMachine.setState(powerUpState);
BasicResult result = infraWs.setVirtualMachineState(virtualMachine, "PowerUp");
Thread.sleep(10000);
assertTrue("An error was occured: " + result.getMessage(), result.getSuccess());
}
public void testPowerDownMachine() throws InterruptedException
{
State powerUpState = new State();
powerUpState.setId(State.RUNNING);
virtualMachine.setState(powerUpState);
BasicResult result = infraWs.setVirtualMachineState(virtualMachine, "PowerOff");
Thread.sleep(10000);
assertTrue("An error was occured: " + result.getMessage(), result.getSuccess());
}
public void testDeleteVirtualMachine()
{
BasicResult result = infraWs.deleteVirtualMachine(virtualMachine);
assertTrue("An error was occured: " + result.getMessage(), result.getSuccess());
}
private VirtualMachine getVirtualImageFromDb(int virtualMachineId)
{
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.getTransaction();
transaction.begin();
VirtualmachineHB virtualMachinePojo =
(VirtualmachineHB) session.get(VirtualmachineHB.class, virtualMachineId);
VirtualMachine virtualMachine = new VirtualMachine();
virtualMachine.setCpu(virtualMachinePojo.getCpu());
virtualMachine.setDescription(virtualMachinePojo.getDescription());
virtualMachine.setHd(virtualMachine.getHd());
virtualMachine.setHighDisponibility(virtualMachinePojo.getHighDisponibility() != 0);
virtualMachine.setId(virtualMachinePojo.getIdVm());
virtualMachine.setName(virtualMachinePojo.getName());
virtualMachine.setRam(virtualMachinePojo.getRam());
State state = new State();
state.setId(virtualMachinePojo.getState().getIdState());
state.setDescription(virtualMachinePojo.getState().getDescription());
virtualMachine.setState(state);
virtualMachine.setUUID(virtualMachinePojo.getUuid());
virtualMachine.setVdrpIP(virtualMachinePojo.getVdrpIp());
virtualMachine.setVdrpPort(virtualMachinePojo.getVdrpPort());
VirtualimageHB virtualimagePojo = virtualMachinePojo.getImage();
VirtualImage virtualImage = new VirtualImage();
virtualImage.setName(virtualimagePojo.getName());
virtualImage.setPath(virtualimagePojo.getPathName());
virtualMachine.setVirtualImage(virtualImage);
// Setting the hypervisor
HypervisorHB hypervisorPojo = virtualMachinePojo.getHypervisor();
HyperVisor hypervisor = new HyperVisor();
hypervisor.setIp(hypervisorPojo.getIp());
hypervisor.setPort(hypervisorPojo.getPort());
hypervisor.setName(hypervisorPojo.getType().getName());
virtualMachine.setAssignedTo(hypervisor);
transaction.commit();
return virtualMachine;
}
}