package org.ovirt.engine.core.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Date; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfoStatus; import org.ovirt.engine.core.compat.Guid; public class StorageDomainOvfInfoDaoTest extends BaseGenericDaoTestCase<Guid, StorageDomainOvfInfo, StorageDomainOvfInfoDao> { @Override protected StorageDomainOvfInfo generateNewEntity() { return new StorageDomainOvfInfo(FixturesTool.STORAGE_DOAMIN_NFS_MASTER, null, FixturesTool.DISK_ID_2, StorageDomainOvfInfoStatus.OUTDATED, null); } @Override protected void updateExistingEntity() { existingEntity.setStatus(StorageDomainOvfInfoStatus.DISABLED); existingEntity.setLastUpdated(new Date(System.currentTimeMillis())); } @Override protected Guid getExistingEntityId() { return FixturesTool.DISK_ID; } @Override protected StorageDomainOvfInfoDao prepareDao() { return dbFacade.getStorageDomainOvfInfoDao(); } @Override protected Guid generateNonExistingId() { return Guid.newGuid(); } @Override protected int getEntitiesTotalCount() { //unneeded here return 0; } @Override public void testGetAll() { //unneeded here } @Override public void testGet() { //unneeded here } @Test public void updateOvfUpdatedInfoFewDomains() { StorageDomainOvfInfo ovfInfo = dao.get(getExistingEntityId()); StorageDomainOvfInfo ovfInfo1 = dao.getAllForDomain(FixturesTool.STORAGE_DOAMIN_NFS2_2).get(0); assertNotSame("domain shouldn't be ovf updated prior to test", StorageDomainOvfInfoStatus.UPDATED, ovfInfo1.getStatus()); assertNotSame("domain shouldn't be ovf updated prior to test", StorageDomainOvfInfoStatus.UPDATED, ovfInfo.getStatus()); dao.updateOvfUpdatedInfo(Arrays.asList(ovfInfo.getStorageDomainId(), ovfInfo1.getStorageDomainId()), StorageDomainOvfInfoStatus.UPDATED, StorageDomainOvfInfoStatus.DISABLED); ovfInfo = dao.get(ovfInfo.getOvfDiskId()); ovfInfo1 = dao.get(ovfInfo1.getOvfDiskId()); assertEquals(StorageDomainOvfInfoStatus.UPDATED, ovfInfo.getStatus()); assertEquals(StorageDomainOvfInfoStatus.UPDATED, ovfInfo1.getStatus()); } @Test public void updateOvfUpdatedInfoWithRelevantExceptStatus() { StorageDomainOvfInfo ovfInfo = dao.get(getExistingEntityId()); ovfInfo.setStatus(StorageDomainOvfInfoStatus.DISABLED); dao.update(ovfInfo); StorageDomainOvfInfo ovfInfo1 = dao.getAllForDomain(FixturesTool.STORAGE_DOAMIN_NFS2_2).get(0); assertNotSame("domain shouldn't be ovf updated prior to test", StorageDomainOvfInfoStatus.UPDATED, ovfInfo1.getStatus()); dao.updateOvfUpdatedInfo(Arrays.asList(ovfInfo.getStorageDomainId(), ovfInfo1.getStorageDomainId()), StorageDomainOvfInfoStatus.UPDATED, StorageDomainOvfInfoStatus.DISABLED); ovfInfo = dao.get(ovfInfo.getOvfDiskId()); ovfInfo1 = dao.get(ovfInfo1.getOvfDiskId()); assertEquals(StorageDomainOvfInfoStatus.DISABLED, ovfInfo.getStatus()); assertEquals(StorageDomainOvfInfoStatus.UPDATED, ovfInfo1.getStatus()); } @Test public void loadStorageDomainIdsForOvfIds() { StorageDomainOvfInfo ovfInfo = dao.get(getExistingEntityId()); assertTrue("domain shouldn't have stored ovfs prior to test", ovfInfo.getStoredOvfIds().isEmpty()); Guid ovfId1 = Guid.newGuid(); Guid ovfId2 = Guid.newGuid(); List<Guid> ovfIds = Arrays.asList(ovfId1, ovfId2); ovfInfo.setStoredOvfIds(ovfIds); dao.update(ovfInfo); ovfInfo = dao.get(ovfInfo.getOvfDiskId()); assertEquals(ovfIds.size(), ovfInfo.getStoredOvfIds().size()); assertTrue(ovfInfo.getStoredOvfIds().containsAll(ovfIds)); List<Guid> loadedStorageDomainIds = dao.loadStorageDomainIdsForOvfIds(ovfIds); assertEquals(1, loadedStorageDomainIds.size()); assertEquals(ovfInfo.getStorageDomainId(), loadedStorageDomainIds.get(0)); } }