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

Reply via email to