Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: BLL test cases for activate/deactivate volume snapshot
......................................................................

gluster: BLL test cases for activate/deactivate volume snapshot

Added BLL test cases for gluster volume snapshots activate and
deactivate commands

Change-Id: I23a334d4e46a273ab26e873232a791f4c0e232cf
Signed-off-by: Shubhendu Tripathi <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeSnapshotCommandBase.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ActivateGlusterVolumeSnapshotCommandTest.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/BaseGlusterVolumeSnapshotCommandTest.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DeactivateGlusterVolumeSnapshotCommandTest.java
4 files changed, 295 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/34/39134/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeSnapshotCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeSnapshotCommandBase.java
index e33b290..dc02a65 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeSnapshotCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterVolumeSnapshotCommandBase.java
@@ -18,7 +18,6 @@
 
     public GlusterVolumeSnapshotCommandBase(T params) {
         super(params);
-        snapshot = 
getGlusterVolumeSnapshotDao().getByName(getGlusterVolumeId(), 
getParameters().getSnapshotName());
     }
 
     @Override
@@ -33,8 +32,9 @@
             return false;
         }
 
-        if (getSnapshot() == null) {
-            
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_SNAPSHOT_DOES_NOT_EXIST,
+        snapshot = 
getGlusterVolumeSnapshotDao().getByName(getGlusterVolumeId(), 
getParameters().getSnapshotName());
+        if (snapshot == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_GLUSTER_VOLUME_SNAPSHOT_DOES_NOT_EXIST,
                     getParameters().getSnapshotName());
         }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ActivateGlusterVolumeSnapshotCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ActivateGlusterVolumeSnapshotCommandTest.java
new file mode 100644
index 0000000..dde3529
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/ActivateGlusterVolumeSnapshotCommandTest.java
@@ -0,0 +1,89 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeSnapshotActionParameters;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterSnapshotStatus;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.Version;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ActivateGlusterVolumeSnapshotCommandTest extends 
BaseGlusterVolumeSnapshotCommandTest {
+    protected ActivateGlusterVolumeSnapshotCommand cmd;
+
+    @Test
+    public void canDoActionSucceeds() {
+        cmd =
+                spy(new ActivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        deactivatedSnapshotName,
+                        true)));
+        doReturn(getSnapshot(VOLUME_ID, deactivatedSnapshotName, 
GlusterSnapshotStatus.DEACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, deactivatedSnapshotName);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        prepareMocks(cmd);
+        assertTrue(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsWithWrongStatus() {
+        cmd =
+                spy(new ActivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        activatedSnapshotName,
+                        true)));
+        prepareMocks(cmd);
+        doReturn(getSnapshot(VOLUME_ID, activatedSnapshotName, 
GlusterSnapshotStatus.ACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, activatedSnapshotName);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnNullVolume() {
+        cmd =
+                spy(new ActivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(null,
+                        deactivatedSnapshotName,
+                        false)));
+        doReturn(getSnapshot(VOLUME_ID, deactivatedSnapshotName, 
GlusterSnapshotStatus.DEACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, deactivatedSnapshotName);
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnInvalidSnapshot() {
+        cmd =
+                spy(new ActivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        "invalid-snap",
+                        false)));
+        doReturn(null).when(snapshotDao).getByName(VOLUME_ID, "invalid-snap");
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnInvalidClusterCompatibilityVersion() {
+        cmd =
+                spy(new ActivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        deactivatedSnapshotName,
+                        false)));
+        doReturn(getSnapshot(VOLUME_ID, deactivatedSnapshotName, 
GlusterSnapshotStatus.DEACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, deactivatedSnapshotName);
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_5)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_5)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/BaseGlusterVolumeSnapshotCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/BaseGlusterVolumeSnapshotCommandTest.java
new file mode 100644
index 0000000..2825f78
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/BaseGlusterVolumeSnapshotCommandTest.java
@@ -0,0 +1,114 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig;
+
+import java.util.Date;
+
+import org.junit.ClassRule;
+import org.mockito.Mock;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeSnapshotActionParameters;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterSnapshotStatus;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSnapshotEntity;
+import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.common.gluster.GlusterFeatureSupported;
+import org.ovirt.engine.core.common.locks.LockingGroup;
+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.VdsGroupDAO;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeSnapshotDao;
+import org.ovirt.engine.core.utils.MockConfigRule;
+import org.ovirt.engine.core.utils.lock.EngineLock;
+
+public abstract class BaseGlusterVolumeSnapshotCommandTest {
+    @Mock
+    GlusterVolumeSnapshotDao snapshotDao;
+
+    @Mock
+    GlusterVolumeDao volumeDao;
+
+    @Mock
+    VdsGroupDAO vdsGroupDao;
+
+    @Mock
+    DbFacade dbFacade;
+
+    @Mock
+    EngineLock lock;
+
+    @Mock
+    GlusterFeatureSupported featureSupported;
+
+    protected static final String activatedSnapshotName = "snap-1";
+    protected static final String deactivatedSnapshotName = "snap-2";
+    protected static final String VOLUME_NAME = "vol1";
+    protected static final Guid VOLUME_ID = Guid.newGuid();
+    protected static final Guid CLUSTER_ID = Guid.newGuid();
+
+    @ClassRule
+    public static MockConfigRule mcr = new MockConfigRule(
+            mockConfig(ConfigValues.GlusterVolumeSnapshotSupported, 
Version.v3_6.toString(), true),
+            mockConfig(ConfigValues.GlusterVolumeSnapshotSupported, 
Version.v3_5.toString(), false)
+            );
+
+    protected void 
prepareMocks(GlusterVolumeSnapshotCommandBase<GlusterVolumeSnapshotActionParameters>
 command) {
+        doReturn(snapshotDao).when(command).getGlusterVolumeSnapshotDao();
+        doReturn(volumeDao).when(command).getGlusterVolumeDao();
+        doReturn(vdsGroupDao).when(command).getVdsGroupDAO();
+        doReturn(dbFacade).when(command).getDbFacade();
+        doReturn(snapshotDao).when(dbFacade).getGlusterVolumeSnapshotDao();
+        doReturn(VOLUME_NAME).when(command).getGlusterVolumeName();
+        doReturn(getGlusterVolume()).when(volumeDao).getById(any(Guid.class));
+        doReturn(getVds(VDSStatus.Up)).when(command).getUpServer();
+        doReturn(lock).when(command).acquireGeoRepSessionLock(any(Guid.class));
+        
doReturn(lock).when(command).acquireVolumeSnapshotLock(any(Guid.class));
+        doReturn(lock).when(command).acquireEngineLock(any(Guid.class), 
any(LockingGroup.class));
+    }
+
+    private VDS getVds(VDSStatus status) {
+        VDS vds = new VDS();
+        vds.setId(Guid.newGuid());
+        vds.setVdsName("gfs1");
+        vds.setVdsGroupId(CLUSTER_ID);
+        vds.setStatus(status);
+        return vds;
+    }
+
+    protected VDSGroup getVdsGroup(Version version) {
+        VDSGroup vdsGroup = new VDSGroup();
+        vdsGroup.setId(CLUSTER_ID);
+        vdsGroup.setName("cluster-1");
+        vdsGroup.setGlusterService(true);
+        vdsGroup.setCompatibilityVersion(version);
+        return vdsGroup;
+    }
+
+    private GlusterVolumeEntity getGlusterVolume() {
+        GlusterVolumeEntity volume = new GlusterVolumeEntity();
+        volume.setClusterId(CLUSTER_ID);
+        volume.setId(VOLUME_ID);
+        volume.setName("volume-1");
+        volume.setStatus(GlusterStatus.UP);
+        return volume;
+    }
+
+    protected GlusterVolumeSnapshotEntity getSnapshot(Guid volumeId, String 
snapName, GlusterSnapshotStatus status) {
+        GlusterVolumeSnapshotEntity snapshot = new 
GlusterVolumeSnapshotEntity();
+        snapshot.setClusterId(CLUSTER_ID);
+        snapshot.setVolumeId(volumeId);
+        snapshot.setDescription("desc");
+        snapshot.setId(Guid.newGuid());
+        snapshot.setSnapshotName(snapName);
+        snapshot.setStatus(status);
+        snapshot.setCreatedAt(new Date());
+        return snapshot;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DeactivateGlusterVolumeSnapshotCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DeactivateGlusterVolumeSnapshotCommandTest.java
new file mode 100644
index 0000000..2754015
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/DeactivateGlusterVolumeSnapshotCommandTest.java
@@ -0,0 +1,89 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
+import 
org.ovirt.engine.core.common.action.gluster.GlusterVolumeSnapshotActionParameters;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterSnapshotStatus;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.Version;
+
+@RunWith(MockitoJUnitRunner.class)
+public class DeactivateGlusterVolumeSnapshotCommandTest extends 
BaseGlusterVolumeSnapshotCommandTest {
+    protected DeactivateGlusterVolumeSnapshotCommand cmd;
+
+    @Test
+    public void canDoActionSucceeds() {
+        cmd =
+                spy(new DeactivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        deactivatedSnapshotName,
+                        true)));
+        doReturn(getSnapshot(VOLUME_ID, deactivatedSnapshotName, 
GlusterSnapshotStatus.ACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, deactivatedSnapshotName);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        prepareMocks(cmd);
+        assertTrue(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsWithWrongStatus() {
+        cmd =
+                spy(new DeactivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        deactivatedSnapshotName,
+                        true)));
+        prepareMocks(cmd);
+        doReturn(getSnapshot(VOLUME_ID, deactivatedSnapshotName, 
GlusterSnapshotStatus.DEACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, deactivatedSnapshotName);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnNullVolume() {
+        cmd =
+                spy(new DeactivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(null,
+                        activatedSnapshotName,
+                        false)));
+        doReturn(getSnapshot(VOLUME_ID, activatedSnapshotName, 
GlusterSnapshotStatus.ACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, activatedSnapshotName);
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnInvalidSnapshot() {
+        cmd =
+                spy(new DeactivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        "invaid-snap",
+                        false)));
+        doReturn(null).when(snapshotDao).getByName(VOLUME_ID, "invaid-snap");
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_6)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_6)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+
+    @Test
+    public void canDoActionFailsOnInvalidClusterCompatibilityVersion() {
+        cmd =
+                spy(new DeactivateGlusterVolumeSnapshotCommand(new 
GlusterVolumeSnapshotActionParameters(VOLUME_ID,
+                        activatedSnapshotName,
+                        false)));
+        doReturn(getSnapshot(VOLUME_ID, activatedSnapshotName, 
GlusterSnapshotStatus.ACTIVATED)).when(snapshotDao)
+                .getByName(VOLUME_ID, activatedSnapshotName);
+        prepareMocks(cmd);
+        
doReturn(getVdsGroup(Version.v3_5)).when(vdsGroupDao).get(any(Guid.class));
+        doReturn(getVdsGroup(Version.v3_5)).when(cmd).getVdsGroup();
+        assertFalse(cmd.canDoAction());
+    }
+}


-- 
To view, visit https://gerrit.ovirt.org/39134
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I23a334d4e46a273ab26e873232a791f4c0e232cf
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shubhendu Tripathi <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to