blob: 867056c5f4a142fcfb83f53e3bc940c38c7c167a [file] [log] [blame]
/*
* =========================================================================
* Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
* ========================================================================
*/
package com.vmware.gemfire.tools.pulse.tests.junit;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URI;
import java.util.Iterator;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.util.EntityUtils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
/**
* JUnit Tests for ClusterSelectedRegionsMemberService in the back-end server for region detail page
*
* @author rbhandekar
*
*/
public class ClusterSelectedRegionsMemberServiceTest extends BaseServiceTest {
/**
* @throws java.lang.Exception
*
* @author rbhandekar
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
doLogin();
System.out.println("\n\nClusterSelectedRegionsMemberServiceTest :: Setup done");
}
/**
* @throws java.lang.Exception
*
* @author rbhandekar
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
doLogout();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: Teardown done");
}
/**
* @throws java.lang.Exception
*/
@Override
@Before
public void setUp() throws Exception {
System.out.println("running setup -- ClusterSelectedRegionsMemberServiceTest");
}
/**
* @throws java.lang.Exception
*/
@Override
@After
public void tearDown() throws Exception {
System.out.println("running teardown -- ClusterSelectedRegionsMemberServiceTest");
}
/**
* Tests that service returns json object
*
* @author rbhandekar
*/
@Test
public void testResponseNotNull() {
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE BEGIN : NULL RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
if(httpclient != null){
try{
HttpUriRequest pulseupdate = RequestBuilder.post()
.setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_3_VALUE)
.build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : " + response.getStatusLine());
BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String sz = null;
while((sz = respReader.readLine()) != null){
pw.print(sz);
}
String jsonResp = sw.getBuffer().toString();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for ClusterSelectedRegionsMember", jsonObj.getJSONObject("ClusterSelectedRegionsMember"));
} finally {
response.close();
}
} catch(Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
}
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE END : NULL RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
}
/**
*
* Tests that response is for same logged in user
*
* @author rbhandekar
*/
@Test
public void testResponseUsername() {
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE BEGIN : NULL USERNAME IN RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
if(httpclient != null){
try{
HttpUriRequest pulseupdate = RequestBuilder.post()
.setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_3_VALUE)
.build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : " + response.getStatusLine());
BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String sz = null;
while((sz = respReader.readLine()) != null){
pw.print(sz);
}
String jsonResp = sw.getBuffer().toString();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegionsMember");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for ClusterSelectedRegionsMember", clusterSelectedRegionObj);
Assert.assertTrue("ClusterSelectedRegionsMemberServiceTest :: Server did not return 'userName' in request",clusterSelectedRegionObj.has("userName"));
String szUser = clusterSelectedRegionObj.getString("userName");
Assert.assertEquals("ClusterSelectedRegionsMemberServiceTest :: Server returned wrong user name. Expected was admin. Server returned = " + szUser, szUser, "admin");
} finally {
response.close();
}
} catch(Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
}
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE END : NULL USERNAME IN RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
}
/**
*
* Tests that response is for same region
*
*
* @author rbhandekar
*/
@Test
public void testResponseRegionOnMemberInfoMatches() {
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE BEGIN : MEMBER INFO RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
if(httpclient != null){
try{
HttpUriRequest pulseupdate = RequestBuilder.post()
.setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_3_VALUE)
.build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : " + response.getStatusLine());
BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String sz = null;
while((sz = respReader.readLine()) != null){
pw.print(sz);
}
String jsonResp = sw.getBuffer().toString();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegionsMember");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for ClusterSelectedRegionsMember",clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegionsMembers");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for selectedRegionsMembers",jsonObjRegion);
Iterator<String> itrMemberNames = jsonObjRegion.keys();
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null region on member info", itrMemberNames);
while(itrMemberNames.hasNext()){
String szMemberName = itrMemberNames.next();
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null member name", szMemberName);
Assert.assertTrue("Server did not return member details",jsonObjRegion.has(szMemberName));
JSONObject jsonMemberObj = jsonObjRegion.getJSONObject(szMemberName);
Assert.assertTrue("ClusterSelectedRegionsMemberServiceTest :: Server did not return 'regionFullPath' of region on member",jsonMemberObj.has("regionFullPath"));
String szPath = jsonMemberObj.getString("regionFullPath");
Assert.assertEquals("ClusterSelectedRegionsMemberServiceTest :: Server returned wrong region path for region on member", szPath, "/GlobalVilage_2/GlobalVilage_9");
}
} finally {
response.close();
}
} catch(Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
}
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE END : MEMBER INFO RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
}
/**
*
* Tests that response is for same region
*
*
* @author rbhandekar
*/
@Test
public void testResponseNonExistentRegion() {
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE BEGIN : NON-EXISTENT REGION CHECK FOR CLUSTER REGION MEMBERS------");
if(httpclient != null){
try{
System.out.println("Test for non-existent region : /Rubbish");
HttpUriRequest pulseupdate = RequestBuilder.post()
.setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_4_VALUE)
.build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : " + response.getStatusLine());
BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String sz = null;
while((sz = respReader.readLine()) != null){
pw.print(sz);
}
String jsonResp = sw.getBuffer().toString();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegionsMember");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null for ClusterSelectedRegionsMember",clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegionsMembers");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null for selectedRegionsMembers",jsonObjRegion);
Assert.assertTrue("ClusterSelectedRegionsMemberServiceTest :: Server did not return error on non-existent region",jsonObjRegion.has("errorOnRegion"));
} finally {
response.close();
}
} catch(Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
}
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE END : NON-EXISTENT REGION CHECK FOR CLUSTER REGION MEMBERS------");
}
/**
*
* Tests that response is for same region
*
*
* @author rbhandekar
*/
@Test
public void testResponseRegionOnMemberAccessor() {
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE BEGIN : ACCESSOR RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
if(httpclient != null){
try{
HttpUriRequest pulseupdate = RequestBuilder.post()
.setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_3_VALUE)
.build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: HTTP request status : " + response.getStatusLine());
BufferedReader respReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String sz = null;
while((sz = respReader.readLine()) != null){
pw.print(sz);
}
String jsonResp = sw.getBuffer().toString();
System.out.println("ClusterSelectedRegionsMemberServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegionsMember");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for ClusterSelectedRegionsMember",clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegionsMembers");
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null response for selectedRegionsMembers",jsonObjRegion);
Iterator<String> itrMemberNames = jsonObjRegion.keys();
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null region on member info", itrMemberNames);
while(itrMemberNames.hasNext()){
String szMemberName = itrMemberNames.next();
Assert.assertNotNull("ClusterSelectedRegionsMemberServiceTest :: Server returned null member name", szMemberName);
Assert.assertTrue("Server did not return member details",jsonObjRegion.has(szMemberName));
JSONObject jsonMemberObj = jsonObjRegion.getJSONObject(szMemberName);
Assert.assertTrue("ClusterSelectedRegionsMemberServiceTest :: Server did not return 'accessor' of region on member",jsonMemberObj.has("accessor"));
String szAccessor = jsonMemberObj.getString("accessor");
Assert.assertTrue("ClusterSelectedRegionsMemberServiceTest :: Server returned non-boolean value for accessor attribute", ((szAccessor.equalsIgnoreCase("True"))
|| (szAccessor.equalsIgnoreCase("False"))) );
}
} finally {
response.close();
}
} catch(Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionsMemberServiceTest :: No Http connection was established.");
}
System.out.println("ClusterSelectedRegionsMemberServiceTest :: ------TESTCASE END : ACCESSOR RESPONSE CHECK FOR CLUSTER REGION MEMBERS------");
}
}