/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*
*/
package org.apache.geode.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 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.*;
import org.json.JSONArray;
import org.json.JSONObject;
/**
* JUnit Tests for ClusterSelectedRegionService in the back-end server for region detail page
*
*
*/
@Ignore
public class ClusterSelectedRegionServiceTest extends BaseServiceTest {
/**
*
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
doLogin();
System.out.println("\n\nClusterSelectedRegionServiceTest :: Setup done");
}
/**
*
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
doLogout();
System.out.println("ClusterSelectedRegionServiceTest :: Teardown done");
}
/**
*
* @throws java.lang.Exception
*/
@Override
@Before
public void setUp() throws Exception {}
/**
*
* @throws java.lang.Exception
*/
@Override
@After
public void tearDown() throws Exception {}
/**
* Tests that service returns json object
*
*/
@Test
public void testResponseNotNull() {
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE BEGIN : NULL RESPONSE CHECK FOR CLUSTER REGIONS------");
if (httpclient != null) {
try {
HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_1_VALUE).build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for ClusterSelectedRegion",
jsonObj.getJSONObject("ClusterSelectedRegion"));
} finally {
response.close();
}
} catch (Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionServiceTest :: No Http connection was established.");
}
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE END : NULL RESPONSE CHECK FOR CLUSTER REGIONS------\n");
}
/**
*
* Tests that response is for same logged in user
*
*/
@Test
public void testResponseUsername() {
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE BEGIN : NULL USERNAME IN RESPONSE CHECK FOR CLUSTER REGIONS------");
if (httpclient != null) {
try {
HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_1_VALUE).build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for ClusterSelectedRegion",
clusterSelectedRegionObj);
String szUser = clusterSelectedRegionObj.getString("userName");
Assert.assertEquals(
"ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: No Http connection was established.");
}
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE END : NULL USERNAME IN RESPONSE CHECK FOR CLUSTER REGIONS------\n");
}
/**
*
* Tests that response is for same region
*
* Test method for
* {@link org.apache.geode.tools.pulse.internal.service.ClusterSelectedRegionService#execute(javax.servlet.http.HttpServletRequest)}.
*
*/
@Test
public void testResponseRegionPathMatches() {
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE BEGIN : REGION PATH IN RESPONSE CHECK FOR CLUSTER REGIONS------");
if (httpclient != null) {
try {
HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_1_VALUE).build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for ClusterSelectedRegion",
clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for selectedRegion",
jsonObjRegion);
Assert.assertTrue(
"ClusterSelectedRegionServiceTest :: Server did not return 'path' of region",
jsonObjRegion.has("path"));
String szPath = jsonObjRegion.getString("path");
Assert.assertEquals(
"ClusterSelectedRegionServiceTest :: Server returned wrong region path. Expected region path = /GlobalVilage_2/GlobalVilage_9 , actual region path = "
+ szPath,
szPath, "/GlobalVilage_2/GlobalVilage_9");
} finally {
response.close();
}
} catch (Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionServiceTest :: No Http connection was established.");
}
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE END : REGION PATH IN RESPONSE CHECK FOR CLUSTER REGIONS------\n");
}
/**
*
* Tests that response is for same region
*
* Test method for
* {@link org.apache.geode.tools.pulse.internal.service.ClusterSelectedRegionService#execute(javax.servlet.http.HttpServletRequest)}.
*
*/
@Test
public void testResponseNonExistentRegion() {
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE BEGIN : NON-EXISTENT REGION CHECK FOR CLUSTER REGIONS------");
if (httpclient != null) {
try {
HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_2_VALUE).build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for ClusterSelectedRegion",
clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response for selectedRegion",
jsonObjRegion);
Assert.assertTrue(
"ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: No Http connection was established.");
}
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE END : NON-EXISTENT REGION CHECK FOR CLUSTER REGIONS------\n");
}
/**
*
* Tests that service returns json object
*
* Test method for
* {@link org.apache.geode.tools.pulse.internal.service.ClusterSelectedRegionService#execute(javax.servlet.http.HttpServletRequest)}.
*
*/
@Test
public void testResponseMemerberCount() {
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE BEGIN : MISMATCHED MEMBERCOUNT FOR REGION CHECK FOR CLUSTER REGIONS------");
if (httpclient != null) {
try {
HttpUriRequest pulseupdate = RequestBuilder.post().setUri(new URI(PULSE_UPDATE_URL))
.addParameter(PULSE_UPDATE_PARAM, PULSE_UPDATE_1_VALUE).build();
CloseableHttpResponse response = httpclient.execute(pulseupdate);
try {
HttpEntity entity = response.getEntity();
System.out.println("ClusterSelectedRegionServiceTest :: 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("ClusterSelectedRegionServiceTest :: JSON response returned : " + jsonResp);
EntityUtils.consume(entity);
JSONObject jsonObj = new JSONObject(jsonResp);
JSONObject clusterSelectedRegionObj = jsonObj.getJSONObject("ClusterSelectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null ClusterSelectedRegion",
clusterSelectedRegionObj);
JSONObject jsonObjRegion = clusterSelectedRegionObj.getJSONObject("selectedRegion");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null for selectedRegion",
jsonObjRegion);
Assert.assertTrue(
"ClusterSelectedRegionServiceTest :: Server did not return 'memberCount' of region",
jsonObjRegion.has("memberCount"));
int memberCount = jsonObjRegion.getInt("memberCount");
Assert.assertTrue(
"ClusterSelectedRegionServiceTest :: Server did not return 'members' of region",
jsonObjRegion.has("members"));
JSONArray arrMembers = jsonObjRegion.getJSONArray("members");
Assert.assertNotNull(
"ClusterSelectedRegionServiceTest :: Server returned null response in selectedRegion",
arrMembers);
int members = arrMembers.length();
Assert.assertEquals(
"ClusterSelectedRegionServiceTest :: Server returned mismatched member count and region members",
members, memberCount);
} finally {
response.close();
}
} catch (Exception failed) {
logException(failed);
Assert.fail("Exception ! ");
}
} else {
Assert.fail("ClusterSelectedRegionServiceTest :: No Http connection was established.");
}
System.out.println(
"ClusterSelectedRegionServiceTest :: ------TESTCASE END : MISMATCHED MEMBERCOUNT FOR REGION CHECK FOR CLUSTER REGIONS------\n");
}
}