/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.model.suite;
import java.net.URI;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
import com.emc.sa.model.DBClientTestBase;
import com.emc.storageos.db.client.model.uimodels.VirtualMachine;
import com.emc.sa.model.dao.ModelClient;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.NamedURI;
import com.emc.storageos.db.client.model.Vcenter;
import com.emc.storageos.db.client.model.VcenterDataCenter;
public class VirtualMachineTest extends DBClientTestBase {
private static final Logger _logger = Logger.getLogger(VirtualMachineTest.class);
@Test
public void testPersistObject() throws Exception {
_logger.info("Starting persist VirtualMachine test");
ModelClient modelClient = getModelClient();
VirtualMachine model = new VirtualMachine();
model.setId(URIUtil.createId(VirtualMachine.class));
model.setLabel("foo");
model.setRunning(false);
model.setTemplate(true);
URI datacenterUri = URIUtil.createId(VcenterDataCenter.class);
NamedURI datacenterId = new NamedURI(datacenterUri, "dc1");
model.setDatacenterId(datacenterId);
modelClient.save(model);
model = modelClient.virtualMachines().findById(model.getId());
Assert.assertNotNull(model);
Assert.assertEquals("foo", model.getLabel());
Assert.assertEquals(false, model.getRunning());
Assert.assertEquals(true, model.getTemplate());
Assert.assertEquals(datacenterId, model.getDatacenterId());
}
@Test
public void testFindByDatacenter() throws Exception {
_logger.info("Starting findByDatacenter test");
ModelClient modelClient = getModelClient();
Vcenter v2 = createVCenterWithLabel("v2");
modelClient.save(v2);
VcenterDataCenter dc2 = createDatacenterWithLabel("dc2");
dc2.setVcenter(v2.getId());
modelClient.save(dc2);
VirtualMachine vm1 = createWithLabel("vm1");
vm1.setDatacenterId(new NamedURI(dc2.getId(), dc2.getLabel()));
modelClient.save(vm1);
VcenterDataCenter dc3 = createDatacenterWithLabel("dc3");
dc3.setVcenter(v2.getId());
modelClient.save(dc3);
VirtualMachine vm2 = createWithLabel("vm2");
vm2.setDatacenterId(new NamedURI(dc3.getId(), dc3.getLabel()));
modelClient.save(vm2);
VirtualMachine vm3 = createWithLabel("vm3");
vm3.setDatacenterId(new NamedURI(dc3.getId(), dc3.getLabel()));
modelClient.save(vm3);
List<VirtualMachine> virtualMachines = modelClient.virtualMachines().findByDatacenter(dc2.getId());
Assert.assertNotNull(virtualMachines);
Assert.assertEquals(1, virtualMachines.size());
virtualMachines = modelClient.virtualMachines().findByDatacenter(dc3.getId());
Assert.assertNotNull(virtualMachines);
Assert.assertEquals(2, virtualMachines.size());
}
private Vcenter createVCenterWithLabel(String label) {
Vcenter model = new Vcenter();
model.setId(URIUtil.createId(Vcenter.class));
model.setLabel(label);
model.setIpAddress("my hostname");
model.setPassword("my password");
model.setPortNumber(42);
model.setUseSSL(true);
model.setUsername("my username");
return model;
}
private VcenterDataCenter createDatacenterWithLabel(String label) {
VcenterDataCenter model = new VcenterDataCenter();
model.setId(URIUtil.createId(VcenterDataCenter.class));
model.setLabel(label);
return model;
}
private VirtualMachine createWithLabel(String label) {
VirtualMachine model = new VirtualMachine();
model.setId(URIUtil.createId(VirtualMachine.class));
model.setLabel(label);
model.setRunning(false);
model.setTemplate(true);
return model;
}
}