Allon Mureinik has uploaded a new change for review. Change subject: core: introduce AddNFSStorageDomainCommandTest ......................................................................
core: introduce AddNFSStorageDomainCommandTest An initial test case for AddNFSStorageDomainCommandTest, focusing mainly on its canDoAction() method. Change-Id: I5e07f7fe5988dab9f37ecc040cdf3d839d776e23 Signed-off-by: Allon Mureinik <amure...@redhat.com> --- A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddNFSStorageDomainCommandTest.java 1 file changed, 198 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/30950/1 diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddNFSStorageDomainCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddNFSStorageDomainCommandTest.java new file mode 100644 index 0000000..1348a33 --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddNFSStorageDomainCommandTest.java @@ -0,0 +1,198 @@ +package org.ovirt.engine.core.bll.storage; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; +import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; + +import java.util.Collections; +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.StorageDomain; +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.StorageServerConnections; +import org.ovirt.engine.core.common.businessentities.StorageType; +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.compat.Guid; +import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.dao.StorageDomainDAO; +import org.ovirt.engine.core.dao.StorageDomainStaticDAO; +import org.ovirt.engine.core.dao.StoragePoolDAO; +import org.ovirt.engine.core.dao.StorageServerConnectionDAO; +import org.ovirt.engine.core.dao.VdsDAO; +import org.ovirt.engine.core.utils.MockConfigRule; +import org.ovirt.engine.core.utils.RandomUtils; + +@RunWith(MockitoJUnitRunner.class) +public class AddNFSStorageDomainCommandTest { + + private AddNFSStorageDomainCommand<StorageDomainManagementParameter> cmd; + + @ClassRule + public static MockConfigRule mcr = new MockConfigRule( + mockConfig(ConfigValues.StorageDomainNameSizeLimit, 10), + mockConfig(ConfigValues.SupportedStorageFormats, Version.v3_5.toString(), "0,2,3"), + mockConfig(ConfigValues.SupportedStorageFormats, Version.v3_0.toString(), "0") + ); + + @Mock + private VdsDAO vdsDao; + @Mock + private StorageDomainDAO sdDao; + @Mock + private StorageDomainStaticDAO sdsDao; + @Mock + private StoragePoolDAO spDao; + @Mock + private StorageServerConnectionDAO sscDao; + + private StorageDomainStatic sd; + private Guid spId; + private StoragePool sp; + private Guid connId; + + @Before + public void setUp() { + Guid vdsId = Guid.newGuid(); + spId = Guid.newGuid(); + connId = Guid.newGuid(); + + sd = new StorageDomainStatic(); + sd.setId(Guid.newGuid()); + sd.setStorageType(StorageType.NFS); + sd.setStorageDomainType(StorageDomainType.Data); + sd.setStorageName("newStorage"); + sd.setStorageFormat(StorageFormatType.V3); + sd.setStorage(connId.toString()); + + VDS vds = new VDS(); + vds.setId(vdsId); + vds.setStatus(VDSStatus.Up); + vds.setStoragePoolId(spId); + when(vdsDao.get(vdsId)).thenReturn(vds); + + sp = new StoragePool(); + sp.setId(spId); + sp.setcompatibility_version(Version.v3_5); + when(spDao.get(spId)).thenReturn(sp); + + StorageServerConnections conn = new StorageServerConnections(); + conn.setid(connId.toString()); + conn.setstorage_type(StorageType.NFS); + + when(sscDao.get(connId.toString())).thenReturn(conn); + + StorageDomainManagementParameter params = new StorageDomainManagementParameter(sd); + params.setVdsId(vdsId); + + cmd = spy(new AddNFSStorageDomainCommand<>(params)); + doReturn(vdsDao).when(cmd).getVdsDAO(); + doReturn(sdDao).when(cmd).getStorageDomainDAO(); + doReturn(sdsDao).when(cmd).getStorageDomainStaticDAO(); + doReturn(spDao).when(cmd).getStoragePoolDAO(); + doReturn(sscDao).when(cmd).getStorageServerConnectionDAO(); + } + + @Test + public void canDoActionSucceeds() { + CanDoActionTestUtils.runAndAssertCanDoActionSuccess(cmd); + } + + @Test + public void canDoActionFailsNameExists() { + when(sdsDao.getByName(sd.getName())).thenReturn(new StorageDomainStatic()); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NAME_ALREADY_EXIST); + } + + @Test + public void canDoActionFailsLongName() { + sd.setStorageName(RandomUtils.instance().nextString(11)); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_NAME_LENGTH_IS_TOO_LONG); + } + + @Test + public void canDoActionFailsBlockIso() { + sd.setStorageDomainType(StorageDomainType.ISO); + sd.setStorageType(StorageType.FCP); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); + } + + @Test + public void canDoActionFailsBlockLocal() { + sd.setStorageDomainType(StorageDomainType.ImportExport); + sd.setStorageType(StorageType.LOCALFS); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); + } + + @Test + public void canDoActionFailsMaster() { + sd.setStorageDomainType(StorageDomainType.Master); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); + } + + @Test + public void canDoActionFailsNoStoragePool() { + when(spDao.get(spId)).thenReturn(null); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); + } + + @Test + public void canDoActionFailsUnsupportedFormat() { + sp.setcompatibility_version(Version.v3_0); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); + } + + @Test + public void canDoActionFailsUnsupportedBlockOnlyFormat() { + sd.setStorageFormat(StorageFormatType.V2); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); + } + + @Test + public void canDoActionFailsUnsupportedIsoFormat() { + sd.setStorageDomainType(StorageDomainType.ISO); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); + } + + @Test + public void canDoActionFailsUnsupportedExportFormat() { + sd.setStorageDomainType(StorageDomainType.ImportExport); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL_HOST); + } + + @Test + public void canDoActionFailsNoConnection() { + when(sscDao.get(connId.toString())).thenReturn(null); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_NOT_EXIST); + } + + @Test + public void canDoActionFailsConnectionAlreadyUsed() { + when(sdDao.getAllByConnectionId(connId)).thenReturn(Collections.singletonList(new StorageDomain())); + CanDoActionTestUtils.runAndAssertCanDoActionFailure + (cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_BELONGS_TO_SEVERAL_STORAGE_DOMAINS); + } +} -- To view, visit http://gerrit.ovirt.org/30950 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5e07f7fe5988dab9f37ecc040cdf3d839d776e23 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <amure...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches