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.junit.Test; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.storage_domain_static; import org.ovirt.engine.core.compat.Guid; public class StorageDomainStaticDAOTest extends BaseDAOTestCase { private static final Guid EXISTING_POOL_ID = new Guid("6d849ebf-755f-4552-ad09-9a090cda105d"); private StorageDomainStaticDAO dao; private StorageDomainDynamicDAO dynamicDao; private DiskImageDAO imageDao; private storage_domain_static existingDomain; private storage_domain_static newStaticDomain; @Override public void setUp() throws Exception { super.setUp(); dao = prepareDAO(dbFacade.getStorageDomainStaticDAO()); dynamicDao = prepareDAO(dbFacade.getStorageDomainDynamicDAO()); imageDao = prepareDAO(dbFacade.getDiskImageDAO()); existingDomain = dao.get(new Guid("72e3a666-89e1-4005-a7ca-f7548004a9ab")); newStaticDomain = new storage_domain_static(); newStaticDomain.setstorage_name("NewStorageDomain"); newStaticDomain.setstorage("fDMzhE-wx3s-zo3q-Qcxd-T0li-yoYU-QvVePl"); } /** * Ensures that null is returned when the id is invalid. */ @Test public void testGetWithInvalidId() { storage_domain_static result = dao.get(Guid.NewGuid()); assertNull(result); } /** * Ensures that retrieving the static domain works as expected. */ @Test public void testGet() { storage_domain_static result = dao.get(existingDomain.getId()); assertNotNull(result); assertEquals(existingDomain.getId(), result.getId()); } /** * Ensures that get all is not implemented. */ @Test public void testGetAll() { List<storage_domain_static> result = dao.getAll(); assertNotNull(result); assertFalse(result.isEmpty()); } /** * Ensures that null is returned when the name is invalid. */ @Test public void testGetByNameWithInvalidName() { storage_domain_static result = dao.getByName("farkle"); assertNull(result); } /** * Ensures the right instance is returned. */ @Test public void testGetByName() { storage_domain_static result = dao.getByName(existingDomain .getstorage_name()); assertNotNull(result); assertEquals(existingDomain.getId(), result.getId()); } /** * Ensures an empty collection is returned. */ @Test public void testGetAllForStoragePoolWithInvalidPool() { List<storage_domain_static> result = dao .getAllForStoragePool(Guid.NewGuid()); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures the right collection of domains are returned. */ @Test public void testGetAllForStoragePool() { List<storage_domain_static> result = dao.getAllForStoragePool(EXISTING_POOL_ID); assertNotNull(result); assertFalse(result.isEmpty()); } /** * Ensures the right set is returned. */ @Test public void testGetAllForStoragePoolOfStorageType() { List<storage_domain_static> result = dao.getAllForStoragePoolOfStorageType(StorageType.ISCSI, EXISTING_POOL_ID); assertNotNull(result); assertFalse(result.isEmpty()); for (storage_domain_static domain : result) { assertEquals(StorageType.ISCSI, domain.getstorage_type()); } } /** * Ensures that an empty collection is returned when no static domains of the specified type exist. */ @Test public void testGetAllOfStorageTypeWithInvalidType() { List<storage_domain_static> result = dao.getAllOfStorageType(StorageType.FCP); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures the right collection of domains is returned. */ @Test public void testGetAllOfStorageType() { List<storage_domain_static> result = dao .getAllOfStorageType(StorageType.ISCSI); assertNotNull(result); assertFalse(result.isEmpty()); for (storage_domain_static domain : result) { assertEquals(StorageType.ISCSI, domain.getstorage_type()); } } @Test public void testGetAllIdsForNonExistingStoragePoolId() throws Exception { List<Guid> result = dao.getAllIds(Guid.NewGuid(), StorageDomainStatus.Active); assertNotNull(result); assertTrue(result.isEmpty()); } @Test public void testGetAllIdsForNonExistingStatus() throws Exception { List<Guid> result = dao.getAllIds(EXISTING_POOL_ID, StorageDomainStatus.Unknown); assertNotNull(result); assertTrue(result.isEmpty()); } @Test public void testGetAllIds() throws Exception { List<Guid> result = dao.getAllIds(EXISTING_POOL_ID, StorageDomainStatus.Active); assertNotNull(result); assertFalse(result.isEmpty()); for (Guid id : result) { assertTrue(!Guid.Empty.equals(id)); } } /** * Ensures that saving a domain works as expected. */ @Test public void testSave() { dao.save(newStaticDomain); storage_domain_static result = dao.get(newStaticDomain.getId()); assertNotNull(result); } /** * Ensures that updating the static and dynamic portions works as expected. */ @Test public void testUpdate() { existingDomain.setstorage_name("UpdatedName"); dao.update(existingDomain); storage_domain_static after = dao.get(existingDomain.getId()); assertEquals(after, existingDomain); } /** * Ensures that removing a storage domain works as expected. */ @Test public void testRemove() { dynamicDao.remove(existingDomain.getId()); for (DiskImage image : imageDao.getAllSnapshotsForStorageDomain(existingDomain.getId())) { imageDao.remove(image.getId()); } dao.remove(existingDomain.getId()); storage_domain_static domainResult = dao.get(existingDomain.getId()); assertNull(domainResult); } }