Daniel Erez has uploaded a new change for review. Change subject: core: add tests for AddExistingFileStorageDomainCommand ......................................................................
core: add tests for AddExistingFileStorageDomainCommand Added a new unit tests class AddExistingFileStorageDomainCommandTest. Change-Id: Iae99fc564942fe8ff92f3e7e133d5c6c4d4bba49 Signed-off-by: Daniel Erez <de...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommandTest.java 2 files changed, 144 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/29783/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommand.java index 8e56616..fb9211c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommand.java @@ -55,29 +55,34 @@ } protected boolean checkExistingStorageDomain() { - if (DbFacade.getInstance().getStorageDomainStaticDao().get(getStorageDomain().getId()) != null) { - return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_ALREADY_EXIST); + if (getStorageDomainStaticDAO().get(getStorageDomain().getId()) != null) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_ALREADY_EXIST); } - List<Guid> storageIds = (ArrayList<Guid>) runVdsCommand(VDSCommandType.HSMGetStorageDomainsList, + List<Guid> storageIds = executeHSMGetStorageDomainsList( new HSMGetStorageDomainsListVDSCommandParameters(getVdsId(), Guid.Empty, getStorageDomain() - .getStorageType(), getStorageDomain().getStorageDomainType(), "") - ).getReturnValue(); + .getStorageType(), getStorageDomain().getStorageDomainType(), "")); if (!storageIds.contains(getStorageDomain().getId())) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST); } - Pair<StorageDomainStatic, Guid> domainFromIrs = (Pair<StorageDomainStatic, Guid>) runVdsCommand( - VDSCommandType.HSMGetStorageDomainInfo, - new HSMGetStorageDomainInfoVDSCommandParameters(getVdsId(), getStorageDomain().getId()) - ).getReturnValue(); + Pair<StorageDomainStatic, Guid> domainFromIrs = executeHSMGetStorageDomainInfo( + new HSMGetStorageDomainInfoVDSCommandParameters(getVdsId(), getStorageDomain().getId())); if (domainFromIrs.getFirst().getStorageDomainType() != getStorageDomain().getStorageDomainType()) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_CHANGE_STORAGE_DOMAIN_TYPE); } return concreteCheckExistingStorageDomain(domainFromIrs); + } + + protected List<Guid> executeHSMGetStorageDomainsList(HSMGetStorageDomainsListVDSCommandParameters parameters) { + return (ArrayList<Guid>) runVdsCommand(VDSCommandType.HSMGetStorageDomainsList, parameters).getReturnValue(); + } + + protected Pair<StorageDomainStatic, Guid> executeHSMGetStorageDomainInfo(HSMGetStorageDomainInfoVDSCommandParameters parameters) { + return (Pair<StorageDomainStatic, Guid>) runVdsCommand(VDSCommandType.HSMGetStorageDomainInfo, parameters).getReturnValue(); } protected boolean concreteCheckExistingStorageDomain(Pair<StorageDomainStatic, Guid> domain) { @@ -98,4 +103,8 @@ } return returnValue; } + + protected DbFacade getDbFacade() { + return DbFacade.getInstance(); + } } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommandTest.java index 6ef6d52..b147c8e 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingFileStorageDomainCommandTest.java @@ -1,60 +1,163 @@ package org.ovirt.engine.core.bll.storage; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; -import org.ovirt.engine.core.common.action.StorageDomainManagementParameter; -import org.ovirt.engine.core.common.businessentities.LUNs; -import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; -import org.ovirt.engine.core.compat.Guid; +import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; import java.util.ArrayList; +import java.util.Collections; import java.util.List; + +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.bll.CanDoActionTestUtils; +import org.ovirt.engine.core.common.action.StorageDomainManagementParameter; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StorageFormatType; +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VDSStatus; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.utils.Pair; +import org.ovirt.engine.core.common.vdscommands.HSMGetStorageDomainInfoVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.HSMGetStorageDomainsListVDSCommandParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.StorageDomainStaticDAO; +import org.ovirt.engine.core.dao.StoragePoolDAO; +import org.ovirt.engine.core.dao.VdsDAO; +import org.ovirt.engine.core.utils.MockConfigRule; @RunWith(MockitoJUnitRunner.class) public class AddExistingFileStorageDomainCommandTest { - private AddExistingBlockStorageDomainCommand<StorageDomainManagementParameter> command; + private AddExistingFileStorageDomainCommand<StorageDomainManagementParameter> command; private StorageDomainManagementParameter parameters; + + private static int SD_MAX_NAME_LENGTH = 50; + + @ClassRule + public static MockConfigRule mcr = new MockConfigRule( + mockConfig(ConfigValues.StorageDomainNameSizeLimit, SD_MAX_NAME_LENGTH), + mockConfig(ConfigValues.SupportedStorageFormats, Version.v3_4.toString(), "3"), + mockConfig(ConfigValues.SupportedStorageFormats, Version.v3_5.toString(), "3") + ); + + @Mock + private DbFacade dbFacade; + + @Mock + private VdsDAO vdsDAO; + + @Mock + private StoragePoolDAO storagePoolDAO; + + @Mock + private StorageDomainStaticDAO storageDomainStaticDAO; @Before public void setUp() { parameters = new StorageDomainManagementParameter(getStorageDomain()); parameters.setVdsId(Guid.newGuid()); - command = spy(new AddExistingBlockStorageDomainCommand<>(parameters)); + parameters.setStoragePoolId(Guid.newGuid()); + command = spy(new AddExistingFileStorageDomainCommand<>(parameters)); + + command.setStoragePool(getStoragePool()); + + doReturn(dbFacade).when(command).getDbFacade(); + doReturn(vdsDAO).when(command).getVdsDAO(); + doReturn(storagePoolDAO).when(command).getStoragePoolDAO(); + doReturn(storageDomainStaticDAO).when(command).getStorageDomainStaticDAO(); + + doReturn(false).when(command).isStorageWithSameNameExists(); doNothing().when(command).addStorageDomainInDb(); doNothing().when(command).updateStorageDomainDynamicFromIrs(); - doNothing().when(command).saveLUNsInDB(any(List.class)); + + when(command.getVdsDAO().getAllForStoragePoolAndStatus(any(Guid.class), eq(VDSStatus.Up))).thenReturn(getHosts()); + when(command.getStoragePoolDAO().get(any(Guid.class))).thenReturn(getStoragePool()); } @Test - public void testAddExistingBlockDomainSuccessfully() { - command.executeCommand(); + public void testCandoPassSuccessfully() { + when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(null); - when(command.getLUNsFromVgInfo(parameters.getStorageDomain().getStorage())).thenReturn(getLUNs()); + StorageDomainStatic sdStatic = command.getStorageDomain().getStorageStaticData(); + doReturn(new Pair<>(sdStatic, sdStatic.getId())).when(command).executeHSMGetStorageDomainInfo( + any(HSMGetStorageDomainInfoVDSCommandParameters.class)); + doReturn(Collections.singletonList(sdStatic.getId())).when(command).executeHSMGetStorageDomainsList( + any(HSMGetStorageDomainsListVDSCommandParameters.class)); - assertTrue(command.getReturnValue().getSucceeded()); + CanDoActionTestUtils.runAndAssertCanDoActionSuccess(command); + } + + @Test + public void testAlreadyExistStorageDomain() { + when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(parameters.getStorageDomain()); + + CanDoActionTestUtils.runAndAssertCanDoActionFailure(command, + VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_ALREADY_EXIST); + } + + @Test + public void testNonExistingStorageDomain() { + when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(null); + + doReturn(Collections.emptyList()).when(command).executeHSMGetStorageDomainsList( + any(HSMGetStorageDomainsListVDSCommandParameters.class)); + + CanDoActionTestUtils.runAndAssertCanDoActionFailure(command, + VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST); + } + + @Test + public void testCannotChangeStorageDomainType() { + when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(null); + + StorageDomainStatic sdStatic = getStorageDomain(); + sdStatic.setStorageDomainType(StorageDomainType.Image); + + doReturn(new Pair<>(sdStatic, sdStatic.getId())).when(command).executeHSMGetStorageDomainInfo( + any(HSMGetStorageDomainInfoVDSCommandParameters.class)); + doReturn(Collections.singletonList(sdStatic.getId())).when(command).executeHSMGetStorageDomainsList( + any(HSMGetStorageDomainsListVDSCommandParameters.class)); + + CanDoActionTestUtils.runAndAssertCanDoActionFailure(command, + VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_CHANGE_STORAGE_DOMAIN_TYPE); } private StorageDomainStatic getStorageDomain() { StorageDomainStatic storageDomain = new StorageDomainStatic(); storageDomain.setStorage(Guid.newGuid().toString()); + storageDomain.setStorageDomainType(StorageDomainType.Data); + storageDomain.setStorageFormat(StorageFormatType.V3); return storageDomain; } - private List<LUNs> getLUNs() { - List<LUNs> luns = new ArrayList<>(); - LUNs lun = new LUNs(); - lun.setId(Guid.newGuid().toString()); - luns.add(lun); - return luns; + private StoragePool getStoragePool() { + StoragePool storagePool = new StoragePool(); + storagePool.setId(Guid.newGuid()); + storagePool.setcompatibility_version(Version.v3_5); + return storagePool; + } + + private List<VDS> getHosts() { + List<VDS> hosts = new ArrayList<>(); + VDS host = new VDS(); + host.setId(Guid.newGuid()); + host.setStatus(VDSStatus.Up); + hosts.add(host); + return hosts; } } -- To view, visit http://gerrit.ovirt.org/29783 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iae99fc564942fe8ff92f3e7e133d5c6c4d4bba49 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches