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
