/* * * 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 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.*; import org.json.JSONObject; /** * JUnit Tests for ClusterSelectedRegionsMemberService in the back-end server for region detail page * * */ @Ignore public class ClusterSelectedRegionsMemberServiceTest extends BaseServiceTest { /** * @throws java.lang.Exception * */ @BeforeClass public static void setUpBeforeClass() throws Exception { doLogin(); System.out.println("\n\nClusterSelectedRegionsMemberServiceTest :: Setup done"); } /** * @throws java.lang.Exception * */ @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 * */ @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 * */ @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 * * */ @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 * * */ @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 * * */ @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------"); } }