package org.ovirt.engine.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.apache.commons.lang.NotImplementedException;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
import org.ovirt.engine.core.common.businessentities.VmNetworkStatistics;
import org.ovirt.engine.core.compat.Guid;
public class VmNetworkInterfaceDAOTest extends BaseDAOTestCase {
private static final Guid TEMPLATE_ID = new Guid("1b85420c-b84c-4f29-997e-0eb674b40b79");
private static final Guid INTERFACE_ID = new Guid("e2817b12-f873-4046-b0da-0098293c14fd");
private static final Guid VM_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355");
private VmNetworkInterfaceDAO dao;
private VmNetworkInterface newVmInterface;
@Override
public void setUp() throws Exception {
super.setUp();
dao = prepareDAO(dbFacade.getVmNetworkInterfaceDAO());
newVmInterface = new VmNetworkInterface();
newVmInterface.setStatistics(new VmNetworkStatistics());
newVmInterface.setId(Guid.NewGuid());
newVmInterface.setName("eth77");
newVmInterface.setNetworkName("enginet");
newVmInterface.setSpeed(1000);
newVmInterface.setType(3);
newVmInterface.setMacAddress("01:C0:81:21:71:17");
}
/**
* Ensures null is returned.
*/
@Test
public void testGetWithNonExistingId() {
VmNetworkInterface result = dao.get(Guid.NewGuid());
assertNull(result);
}
/**
* Ensures that the network interface is returned.
*/
@Test
public void testGet() {
VmNetworkInterface result = dao.get(INTERFACE_ID);
assertNotNull(result);
assertEquals(INTERFACE_ID, result.getId());
}
/**
* Ensures that an empty collection is returned.
*/
@Test
public void testGetAllForTemplateWithInvalidTemplate() {
List<VmNetworkInterface> result = dao.getAllForTemplate(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that interfaces are returned.
*/
@Test
public void testGetAllForTemplate() {
List<VmNetworkInterface> result = dao.getAllForTemplate(TEMPLATE_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (VmNetworkInterface iface : result) {
assertEquals(TEMPLATE_ID, iface.getVmTemplateId());
}
}
/**
* Ensures an empty collection is returned.
*/
@Test
public void testGetAllInterfacesForVmWithInvalidVm() {
List<VmNetworkInterface> result = dao.getAllForVm(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that a collection of interfaces related the specified VM are returned.
*/
@Test
public void testGetAllInterfacesForVm() {
List<VmNetworkInterface> result = dao.getAllForVm(VM_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (VmNetworkInterface iface : result) {
assertEquals(VM_ID, iface.getVmId());
}
}
/**
* Ensures that saving an interface works as expected.
*/
@Test
public void testSave() {
newVmInterface.setVmId(VM_ID);
dao.save(newVmInterface);
VmNetworkInterface savedInterface = dao.get(newVmInterface.getId());
assertNotNull(savedInterface);
assertEquals(newVmInterface.getName(), savedInterface.getName());
}
/**
* Ensures updating an interface works.
*/
@Test
public void testUpdate() {
List<VmNetworkInterface> before = dao.getAllForVm(VM_ID);
VmNetworkInterface iface = before.get(0);
iface.setName(iface.getName().toUpperCase());
dao.update(iface);
List<VmNetworkInterface> after = dao.getAllForVm(VM_ID);
boolean found = false;
for (VmNetworkInterface ifaced : after) {
found |= ifaced.getName().equals(iface.getName());
}
assertTrue(found);
}
/**
* Ensures that the specified VM's interfaces are deleted.
*/
@Test
public void testRemove() {
assertNotNull(dao.get(INTERFACE_ID));
dao.remove(INTERFACE_ID);
assertNull(dao.get(INTERFACE_ID));
}
@Test(expected = NotImplementedException.class)
public void testGetAll() throws Exception {
dao.getAll();
}
}