package org.ovirt.engine.core.dao; import static org.junit.Assert.*; import java.util.Date; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map; import org.ovirt.engine.core.common.businessentities.vm_pool_map; import org.ovirt.engine.core.common.businessentities.vm_pools; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; public class VmPoolDAOTest extends BaseDAOTestCase { private static final Guid USER_ID = new Guid("9bf7c640-b620-456f-a550-0348f366544b"); private static final Guid VDS_GROUP_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1"); private static final Guid DELETABLE_VM_POOL_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0078"); private static final Guid EXISTING_VM_POOL_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0076"); private static final Guid FREE_VM_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4356"); private static final Guid EXISTING_VM_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355"); private static final int VM_POOL_COUNT = 3; private static final Guid EXISTING_LEASE_ID = new Guid("87c27aec-0ae8-4071-ba64-4c8fba70b2a4"); private static final Guid FREE_VM_POOL_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0077"); private VmPoolDAO dao; private vm_pools existingVmPool; private vm_pools deletableVmPool; private vm_pools newVmPool; private vm_pool_map newVmPoolMap; private vm_pool_map existingVmPoolMap; private time_lease_vm_pool_map existingTimeLeaseVmPoolMap; private time_lease_vm_pool_map newTimeLeaseVmPoolMap; @Override public void setUp() throws Exception { super.setUp(); dao = prepareDAO(dbFacade.getVmPoolDAO()); existingVmPool = dao.get(EXISTING_VM_POOL_ID); deletableVmPool = dao.get(DELETABLE_VM_POOL_ID); newVmPool = new vm_pools(); newVmPool.setvm_pool_name("New VM Pool"); newVmPool.setvm_pool_description("This is a new VM pool."); newVmPool.setvds_group_id(VDS_GROUP_ID); existingVmPoolMap = dao.getVmPoolMapByVmGuid(new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355")); newVmPoolMap = new vm_pool_map(FREE_VM_ID, existingVmPool.getvm_pool_id()); existingTimeLeaseVmPoolMap = dao.getTimeLeasedVmPoolMapByIdForVmPool(EXISTING_LEASE_ID, EXISTING_VM_POOL_ID); newTimeLeaseVmPoolMap = new time_lease_vm_pool_map(new Date(), Guid.NewGuid(), new Date(), 1, FREE_VM_POOL_ID); } @Test public void testRemoveVmFromPool() { int before = dao.getVmPoolsMapByVmPoolId(existingVmPoolMap.getvm_pool_id()).size(); dao.removeVmFromVmPool(EXISTING_VM_ID); int after = dao.getVmPoolsMapByVmPoolId(existingVmPoolMap.getvm_pool_id()).size(); assertEquals(before - 1, after); vm_pool_map result = dao.getVmPoolMapByVmGuid(EXISTING_VM_ID); assertNull(result); } /** * Ensures that null is returned when the id is invalid. */ @Test public void testGetVmPoolWithInvalidId() { vm_pools result = dao.get(NGuid.NewGuid()); assertNull(result); } /** * Ensures that getting a VM pool works as expected. */ @Test public void testGetVmPool() { vm_pools result = dao.get(existingVmPool.getvm_pool_id()); assertNotNull(result); assertEquals(existingVmPool, result); } /** * Ensures that getting a VM pool by an invalid name returns null. */ @Test public void testGetByNameWithInvalidName() { vm_pools result = dao.getByName("farkle"); assertNull(result); } /** * Ensures that getting a VM pool by name works as expected. */ @Test public void testGetByName() { vm_pools result = dao.getByName(existingVmPool.getvm_pool_name()); assertNotNull(result); assertEquals(existingVmPool, result); } /** * Ensures the right number of pools are returned. */ @Test public void testGetAllVmPools() { List<vm_pools> result = dao.getAll(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(VM_POOL_COUNT, result.size()); } /** * Ensures an empty collection is returned. */ @Test public void testGetAllVmPoolsForUserWithNoVmPools() { List<vm_pools> result = dao.getAllForUser(Guid.NewGuid()); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures a collection of pools are returned. */ @Test public void testGetAllVmPoolsForUser() { List<vm_pools> result = dao.getAllForUser(USER_ID); assertNotNull(result); assertFalse(result.isEmpty()); } /** * Ensures an empty collection is returned. */ @Test public void testGetAllVmPoolsForAdGroupWithNoVmPools() { // TODO the underlying stored procedure depends on a table that was removed // // List<vm_pools> result = dao.getAllVmPoolsForAdGroup(Guid.NewGuid()); // // assertNotNull(result); // assertTrue(result.isEmpty()); } /** * Ensures that saving a VM pool works as expected. */ @Test public void testSaveVmPool() { dao.save(newVmPool); vm_pools result = dao.getByName(newVmPool.getvm_pool_name()); assertNotNull(result); assertEquals(newVmPool, result); } /** * Ensures that updating a VM pool works as expected. */ @Test public void testUpdateVmPool() { existingVmPool.setvm_pool_description("This is an updated VM pool."); dao.update(existingVmPool); vm_pools result = dao.get(existingVmPool.getvm_pool_id()); assertEquals(existingVmPool, result); } /** * Ensures removing a VM pool works as expected. */ @Test public void testRemoveVmPool() { dao.remove(deletableVmPool.getvm_pool_id()); vm_pools result = dao.get(deletableVmPool.getvm_pool_id()); assertNull(result); } @Test public void testGetVmPoolMap() { vm_pool_map result = dao.getVmPoolMapByVmGuid(EXISTING_VM_ID); assertNotNull(result); assertEquals(existingVmPoolMap, result); } @Test public void testAddVmToPool() { int before = dao.getVmPoolsMapByVmPoolId(newVmPoolMap.getvm_pool_id()).size(); dao.addVmToPool(newVmPoolMap); int after = dao.getVmPoolsMapByVmPoolId(newVmPoolMap.getvm_pool_id()).size(); assertEquals(before + 1, after); vm_pool_map result = dao.getVmPoolMapByVmGuid(newVmPoolMap.getvm_guid()); assertNotNull(result); assertEquals(newVmPoolMap, result); } @Test public void testGetTimeLeaseVmPoolMap() { time_lease_vm_pool_map result = dao.getTimeLeasedVmPoolMapByIdForVmPool(existingTimeLeaseVmPoolMap.getid(), existingTimeLeaseVmPoolMap.getvm_pool_id()); assertNotNull(result); assertEquals(existingTimeLeaseVmPoolMap, result); } @Test public void testAddTimeLeaseVmPoolMap() { dao.addTimeLeasedVmPoolMap(newTimeLeaseVmPoolMap); time_lease_vm_pool_map result = dao.getTimeLeasedVmPoolMapByIdForVmPool(newTimeLeaseVmPoolMap.getid(), newTimeLeaseVmPoolMap.getvm_pool_id()); assertNotNull(result); assertEquals(newTimeLeaseVmPoolMap, result); } @Test public void testUpdateTimeLeaseVmPoolMap() { existingTimeLeaseVmPoolMap.settype(100 - existingTimeLeaseVmPoolMap.gettype()); dao.updateTimeLeasedVmPoolMap(existingTimeLeaseVmPoolMap); time_lease_vm_pool_map result = dao.getTimeLeasedVmPoolMapByIdForVmPool(existingTimeLeaseVmPoolMap.getid(), existingTimeLeaseVmPoolMap.getvm_pool_id()); assertEquals(existingTimeLeaseVmPoolMap, result); } @Test public void testRemoveTimeLeaseVmPoolMap() { dao.removeTimeLeasedVmPoolMap(existingTimeLeaseVmPoolMap.getid(), existingTimeLeaseVmPoolMap.getvm_pool_id()); time_lease_vm_pool_map result = dao.getTimeLeasedVmPoolMapByIdForVmPool(existingTimeLeaseVmPoolMap.getid(), existingTimeLeaseVmPoolMap.getvm_pool_id()); assertNull(result); } @Test public void testGetAllTimeLeaseVmPoolMaps() { List<time_lease_vm_pool_map> result = dao.getAllTimeLeasedVmPoolMaps(); assertNotNull(result); assertFalse(result.isEmpty()); } }