anmolbabu has uploaded a new change for review. Change subject: engine : Bll Query to get geo-rep status details ......................................................................
engine : Bll Query to get geo-rep status details Bll Query to get geo-rep status details Change-Id: If13b945fb21e36e4614bb95393aba71e57dba9be Signed-off-by: Anmol Babu <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQuery.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQueryTest.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoRepStatusDetailsPrameters.java 3 files changed, 198 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/30528/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQuery.java new file mode 100644 index 0000000..335fe2c --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQuery.java @@ -0,0 +1,21 @@ +package org.ovirt.engine.core.bll.gluster; + +import org.ovirt.engine.core.common.queries.gluster.GlusterVolumeGeoRepStatusDetailsPrameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; +import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepSessionDetailsVDSParameters; +import org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeGeoRepStatusDetailForXmlRpc; + +public class GetGlusterVolumeGeoRepStatusDetailQuery extends GlusterQueriesCommandBase<GlusterVolumeGeoRepStatusDetailsPrameters> { + + protected GetGlusterVolumeGeoRepStatusDetailQuery(GlusterVolumeGeoRepStatusDetailsPrameters parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + GlusterVolumeGeoRepStatusDetailsPrameters parameters = getParameters(); + VDSReturnValue returnValue = runVdsCommand(VDSCommandType.GetGlusterVolumeGeoRepSessionStatusDetail, new GlusterVolumeGeoRepSessionDetailsVDSParameters(getUpServerId(parameters.getClusterId()), getGlusterVolumeName(parameters.getVolumeId()), parameters.getSlaveHost(), parameters.getSlaveVolumeName())); + getQueryReturnValue().setReturnValue((GlusterVolumeGeoRepStatusDetailForXmlRpc) returnValue.getReturnValue()); + } +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQueryTest.java new file mode 100644 index 0000000..f63244f --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeGeoRepStatusDetailQueryTest.java @@ -0,0 +1,139 @@ +package org.ovirt.engine.core.bll.gluster; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.ovirt.engine.core.bll.AbstractQueryTest; +import org.ovirt.engine.core.bll.utils.ClusterUtils; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VDSStatus; +import org.ovirt.engine.core.common.businessentities.gluster.GeoRepSessionStatus; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.gluster.GlusterVolumeGeoRepStatusDetailsPrameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.VdsDAO; +import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao; +import org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeGeoRepStatusDetailForXmlRpc; + +public class GetGlusterVolumeGeoRepStatusDetailQueryTest extends AbstractQueryTest<GlusterVolumeGeoRepStatusDetailsPrameters, GetGlusterVolumeGeoRepStatusDetailQuery> { + private static final Guid CLUSTER_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1"); + private static final String MASTER_SERVER = "server1"; + private static final Guid MASTER_SERVER_Uuid = Guid.newGuid(); + private static final String SLAVE_SERVER = "server2"; + private static final Guid MASTER_VOLUME_ID = Guid.newGuid(); + private static final String MASTER_VOLUME_NAME = "test_master"; + private static final String MASTER_BRICK = "/home/test_master_b1"; + private static final String SLAVE = "server1 :: test_slave"; + private static final String SLAVE_VOLUME_NAME = "test_slave"; + private static final GeoRepSessionStatus PAIR_STATUS = GeoRepSessionStatus.ACTIVE; + private static final String SESSION_KEY = MASTER_SERVER + " : " + MASTER_VOLUME_NAME + "/" + SLAVE_SERVER + " : " + SLAVE_VOLUME_NAME + " " + Guid.newGuid(); + private static final String NA_PAIR_STATUS = "N/A"; + + private ClusterUtils clusterUtils; + private VdsDAO vdsDao; + private GlusterVolumeDao volumeDao; + + @Before + @Override + public void setUp() throws Exception { + super.setUp(); + setupMock(); + } + + private GlusterVolumeGeoRepStatusDetailForXmlRpc getExpectedGeoRepStatusDetails() { + Map<String, Object> innerMap = new HashMap<String, Object>(); + innerMap.put("volumeName", MASTER_VOLUME_NAME); + innerMap.put("sessionSlave", SESSION_KEY); + + Map<String, Object> pairMap = new HashMap<String, Object>(); + pairMap.put("masterNode", MASTER_SERVER); + pairMap.put("masterNodeUuid", MASTER_SERVER_Uuid); + pairMap.put("masterBrick", MASTER_BRICK); + pairMap.put("slave", SLAVE); + pairMap.put("status", PAIR_STATUS); + pairMap.put("checkpoint_status", NA_PAIR_STATUS); + pairMap.put("crawl_status", NA_PAIR_STATUS); + pairMap.put("files_syncd", 1); + pairMap.put("files_pending", 1); + pairMap.put("bytes_pending", 1); + pairMap.put("deletes_pending", 1); + pairMap.put("files_skipped", 1); + + List<Map<String, Object>> pairMaps = new ArrayList<Map<String, Object>>(); + pairMaps.add(pairMap); + + innerMap.put("pairs", pairMaps); + + GlusterVolumeGeoRepStatusDetailForXmlRpc geoRepStatusDetail = new GlusterVolumeGeoRepStatusDetailForXmlRpc(innerMap); + return geoRepStatusDetail; + } + + private VDS getVds(VDSStatus status) { + VDS vds = new VDS(); + vds.setId(MASTER_SERVER_Uuid); + vds.setVdsName(MASTER_SERVER); + vds.setVdsGroupId(CLUSTER_ID); + vds.setStatus(status); + return vds; + } + + private void setupMock() { + vdsDao = mock(VdsDAO.class); + volumeDao = mock(GlusterVolumeDao.class); + clusterUtils = mock(ClusterUtils.class); + + doReturn(vdsDao).when(getQuery()).getVdsDao(); + doReturn(volumeDao).when(getQuery()).getGlusterVolumeDao(); + doReturn(CLUSTER_ID).when(getQueryParameters()).getClusterId(); + doReturn(MASTER_VOLUME_ID).when(getQueryParameters()).getVolumeId(); + doReturn(SLAVE_VOLUME_NAME).when(getQueryParameters().getSlaveVolumeName()); + doReturn(SLAVE_SERVER).when(getQueryParameters().getSlaveHost()); + + VDSReturnValue returnValue = new VDSReturnValue(); + returnValue.setSucceeded(true); + returnValue.setReturnValue(getExpectedGeoRepStatusDetails()); + + doReturn(returnValue).when(getQuery()).runVdsCommand(eq(VDSCommandType.GetGlusterVolumeGeoRepSessionStatusDetail), + any(VDSParametersBase.class)); + } + + @Test + public void testQueryForStatusDetails() { + doReturn(MASTER_VOLUME_ID).when(getQueryParameters()).getVolumeId(); + when(vdsDao.get(MASTER_SERVER_Uuid)).thenReturn(getVds(VDSStatus.Up)); + when(clusterUtils.getUpServer(CLUSTER_ID)).thenReturn(getVds(VDSStatus.Up)); + + getQuery().executeQueryCommand(); + + GlusterVolumeGeoRepStatusDetailForXmlRpc expectedStatusDetails = getExpectedGeoRepStatusDetails(); + GlusterVolumeGeoRepStatusDetailForXmlRpc statusDetails = (GlusterVolumeGeoRepStatusDetailForXmlRpc) getQuery().getQueryReturnValue().getReturnValue(); + assertNotNull(statusDetails); + assertEquals(expectedStatusDetails, statusDetails); + } + + @Test (expected = RuntimeException.class) + public void testQueryForInvalidVolumeId() { + doReturn(Guid.Empty).when(getQueryParameters()).getVolumeId(); + doReturn(null).when(volumeDao).getById(Guid.Empty); + + getQuery().executeQueryCommand(); + VdcQueryReturnValue returnValue = (VdcQueryReturnValue)getQuery().getReturnValue(); + assertEquals(VdcBllMessages.GLUSTER_VOLUME_ID_INVALID.toString(), returnValue.getExceptionString()); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoRepStatusDetailsPrameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoRepStatusDetailsPrameters.java new file mode 100644 index 0000000..6b5be90 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeGeoRepStatusDetailsPrameters.java @@ -0,0 +1,38 @@ +package org.ovirt.engine.core.common.queries.gluster; + +import org.ovirt.engine.core.compat.Guid; + + +public class GlusterVolumeGeoRepStatusDetailsPrameters extends GlusterVolumeQueriesParameters { + + private static final long serialVersionUID = 1081721673083678394L; + + private String slaveHost; + private String slaveVolumeName; + + public GlusterVolumeGeoRepStatusDetailsPrameters() { + + } + + public GlusterVolumeGeoRepStatusDetailsPrameters(Guid clusterId, Guid volumeId, String slaveHost, String slaveVolumeName) { + super(clusterId, volumeId); + this.slaveHost = slaveHost; + this.slaveVolumeName = slaveVolumeName; + } + + public String getSlaveHost() { + return slaveHost; + } + + public void setSlaveHost(String slaveHost) { + this.slaveHost = slaveHost; + } + + public String getSlaveVolumeName() { + return slaveVolumeName; + } + + public void setSlaveVolumeName(String slaveVolumeName) { + this.slaveVolumeName = slaveVolumeName; + } +} -- To view, visit http://gerrit.ovirt.org/30528 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If13b945fb21e36e4614bb95393aba71e57dba9be Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: anmolbabu <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
