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

Reply via email to