Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C137A200AE2 for ; Fri, 13 May 2016 00:33:41 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BF95B160939; Thu, 12 May 2016 22:33:41 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C816A160A10 for ; Fri, 13 May 2016 00:33:39 +0200 (CEST) Received: (qmail 20231 invoked by uid 500); 12 May 2016 22:33:39 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 20190 invoked by uid 99); 12 May 2016 22:33:38 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 May 2016 22:33:38 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 588471802E7 for ; Thu, 12 May 2016 22:33:38 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -3.221 X-Spam-Level: X-Spam-Status: No, score=-3.221 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001] autolearn=disabled Received: from mx2-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id ZL4pUyhlyo_3 for ; Thu, 12 May 2016 22:33:31 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx2-lw-us.apache.org (ASF Mail Server at mx2-lw-us.apache.org) with SMTP id 4F8EE5F480 for ; Thu, 12 May 2016 22:33:30 +0000 (UTC) Received: (qmail 20074 invoked by uid 99); 12 May 2016 22:33:29 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 May 2016 22:33:29 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8B03EE024E; Thu, 12 May 2016 22:33:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: udo@apache.org To: commits@geode.incubator.apache.org Date: Thu, 12 May 2016 22:33:31 -0000 Message-Id: <0a4f57df58f7420a8e8d325cb8a4f5ac@git.apache.org> In-Reply-To: <7c8ec89089bf4d4294cbc9d82124ade9@git.apache.org> References: <7c8ec89089bf4d4294cbc9d82124ade9@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/3] incubator-geode git commit: GEODE-1376: Cleaned up server port to be '0'. Cleaned up some legacy code and replaced with cleaner Lambda invocation. Replaced waitOnCriterion with Awaitility. archived-at: Thu, 12 May 2016 22:33:41 -0000 GEODE-1376: Cleaned up server port to be '0'. Cleaned up some legacy code and replaced with cleaner Lambda invocation. Replaced waitOnCriterion with Awaitility. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c33efb60 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c33efb60 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c33efb60 Branch: refs/heads/develop Commit: c33efb60630fe8bed7613c60f941810a7574f16b Parents: 89b91cb Author: Udo Kohlmeyer Authored: Fri May 13 08:28:54 2016 +1000 Committer: Udo Kohlmeyer Committed: Fri May 13 08:32:58 2016 +1000 ---------------------------------------------------------------------- ...stAPIOnRegionFunctionExecutionDUnitTest.java | 77 +-- .../web/controllers/RestAPITestBase.java | 16 +- .../RestAPIsAndInterOpsDUnitTest.java | 501 ++++++++----------- ...tAPIsOnGroupsFunctionExecutionDUnitTest.java | 6 +- ...APIsOnMembersFunctionExecutionDUnitTest.java | 19 +- .../controllers/RestAPIsWithSSLDUnitTest.java | 495 +++++++----------- .../internal/AutoConnectionSourceDUnitTest.java | 345 +++++++------ .../AutoConnectionSourceImplJUnitTest.java | 5 - .../internal/LocatorLoadBalancingDUnitTest.java | 439 +++++++--------- .../cache/client/internal/LocatorTestBase.java | 396 ++++++--------- .../internal/cache/Bug47667DUnitTest.java | 24 +- .../CacheServerManagementDUnitTest.java | 260 ++++------ 12 files changed, 1083 insertions(+), 1500 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c33efb60/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIOnRegionFunctionExecutionDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIOnRegionFunctionExecutionDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIOnRegionFunctionExecutionDUnitTest.java index fedd119..dc3986b 100644 --- a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIOnRegionFunctionExecutionDUnitTest.java +++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIOnRegionFunctionExecutionDUnitTest.java @@ -36,6 +36,7 @@ import java.util.*; /** * Dunit Test to validate OnRegion function execution with REST APIs + * * @since 8.0 */ @@ -58,22 +59,22 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { if (context instanceof RegionFunctionContext) { RegionFunctionContext rfContext = (RegionFunctionContext) context; rfContext.getDataSet().getCache().getLogger() - .info("Executing function : SampleFunction.execute(hasResult=true) with filter: " + rfContext.getFilter() + " " + rfContext); + .info("Executing function : SampleFunction.execute(hasResult=true) with filter: " + rfContext.getFilter() + " " + rfContext); if (rfContext.getArguments() instanceof Boolean) { /* return rfContext.getArguments(); */ if (hasResult()) { rfContext.getResultSender().lastResult( - (Serializable) rfContext.getArguments()); + (Serializable) rfContext.getArguments()); } else { rfContext - .getDataSet() - .getCache() - .getLogger() - .info( - "Executing function : SampleFunction.execute(hasResult=false) " + rfContext); + .getDataSet() + .getCache() + .getLogger() + .info( + "Executing function : SampleFunction.execute(hasResult=false) " + rfContext); while (true && !rfContext.getDataSet().isDestroyed()) { rfContext.getDataSet().getCache().getLogger() - .info("For Bug43513 "); + .info("For Bug43513 "); try { Thread.sleep(100); } catch (InterruptedException ie) { @@ -90,7 +91,7 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { Thread.sleep(2000); } catch (InterruptedException e) { rfContext.getDataSet().getCache().getLogger() - .warning("Got Exception : Thread Interrupted" + e); + .warning("Got Exception : Thread Interrupted" + e); } } if (PartitionRegionHelper.isPartitionedRegion(rfContext.getDataSet())) { @@ -100,11 +101,11 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { * rfContext).get(key); */ rfContext.getResultSender().lastResult( - (Serializable) PartitionRegionHelper.getLocalDataForContext( - rfContext).get(key)); + (Serializable) PartitionRegionHelper.getLocalDataForContext( + rfContext).get(key)); } else { rfContext.getResultSender().lastResult( - (Serializable) rfContext.getDataSet().get(key)); + (Serializable) rfContext.getDataSet().get(key)); } /* return (Serializable)rfContext.getDataSet().get(key); */ } else if (rfContext.getArguments() instanceof Set) { @@ -112,7 +113,7 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { ArrayList vals = new ArrayList(); for (Object key : origKeys) { Object val = PartitionRegionHelper - .getLocalDataForContext(rfContext).get(key); + .getLocalDataForContext(rfContext).get(key); if (val != null) { vals.add(val); } @@ -136,10 +137,10 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { DistributedSystem ds = InternalDistributedSystem.getAnyInstance(); LogWriter logger = ds.getLogWriter(); logger.info("Executing in SampleFunction on Server : " - + ds.getDistributedMember() + "with Context : " + context); + + ds.getDistributedMember() + "with Context : " + context); while (ds.isConnected()) { logger - .fine("Just executing function in infinite loop for Bug43513"); + .fine("Just executing function in infinite loop for Bug43513"); try { Thread.sleep(250); } catch (InterruptedException e) { @@ -182,7 +183,7 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { private boolean createPeerWithPR() { RegionAttributes ra = PartitionedRegionTestHelper.createRegionAttrsForPR(0, - 10); + 10); AttributesFactory raf = new AttributesFactory(ra); PartitionAttributesImpl pa = new PartitionAttributesImpl(); pa.setAll(ra.getPartitionAttributes()); @@ -231,10 +232,10 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { } private void createCacheAndRegisterFunction() { - restURLs.add(vm0.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm0, null))); - restURLs.add(vm1.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm1, null))); - restURLs.add(vm2.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm2, null))); - restURLs.add(vm3.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm3, null))); + restURLs.add(vm0.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm0.getHost().getHostName(), null))); + restURLs.add(vm1.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm1.getHost().getHostName(), null))); + restURLs.add(vm2.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm2.getHost().getHostName(), null))); + restURLs.add(vm3.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm3.getHost().getHostName(), null))); vm0.invoke("registerFunction(new SampleFunction())", () -> FunctionService.registerFunction(new SampleFunction())); vm1.invoke("registerFunction(new SampleFunction())", () -> FunctionService.registerFunction(new SampleFunction())); @@ -283,7 +284,7 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { createPeersWithPR(vm0, vm1, vm2, vm3); - vm3.invoke("populatePRRegion",() -> populatePRRegion()); + vm3.invoke("populatePRRegion", () -> populatePRRegion()); CloseableHttpResponse response = executeFunctionThroughRestCall("SampleFunction", PR_REGION_NAME, "key2", null, null, null); assertEquals(200, response.getStatusLine().getStatusCode()); @@ -305,16 +306,16 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { createPeersWithPR(vm0, vm1, vm2, vm3); - vm3.invoke("populatePRRegion",() -> populatePRRegion()); + vm3.invoke("populatePRRegion", () -> populatePRRegion()); String jsonBody = "[" - + "{\"@type\": \"double\",\"@value\": 210}" - + ",{\"@type\":\"com.gemstone.gemfire.rest.internal.web.controllers.Item\"," - + "\"itemNo\":\"599\",\"description\":\"Part X Free on Bumper Offer\"," - + "\"quantity\":\"2\"," - + "\"unitprice\":\"5\"," - + "\"totalprice\":\"10.00\"}" - + "]"; + + "{\"@type\": \"double\",\"@value\": 210}" + + ",{\"@type\":\"com.gemstone.gemfire.rest.internal.web.controllers.Item\"," + + "\"itemNo\":\"599\",\"description\":\"Part X Free on Bumper Offer\"," + + "\"quantity\":\"2\"," + + "\"unitprice\":\"5\"," + + "\"totalprice\":\"10.00\"}" + + "]"; CloseableHttpResponse response = executeFunctionThroughRestCall("SampleFunction", PR_REGION_NAME, null, jsonBody, null, null); assertEquals(200, response.getStatusLine().getStatusCode()); @@ -324,15 +325,15 @@ public class RestAPIOnRegionFunctionExecutionDUnitTest extends RestAPITestBase { assertCorrectInvocationCount(4, vm0, vm1, vm2, vm3); jsonBody = "[" - + "{\"@type\": \"double\",\"@value\": 220}" - + ",{\"@type\":\"com.gemstone.gemfire.rest.internal.web.controllers.Item\"," - + "\"itemNo\":\"609\",\"description\":\"Part X Free on Bumper Offer\"," - + "\"quantity\":\"3\"," - + "\"unitprice\":\"9\"," - + "\"totalprice\":\"12.00\"}" - + "]"; - - resetInvocationCounts(vm0,vm1,vm2,vm3); + + "{\"@type\": \"double\",\"@value\": 220}" + + ",{\"@type\":\"com.gemstone.gemfire.rest.internal.web.controllers.Item\"," + + "\"itemNo\":\"609\",\"description\":\"Part X Free on Bumper Offer\"," + + "\"quantity\":\"3\"," + + "\"unitprice\":\"9\"," + + "\"totalprice\":\"12.00\"}" + + "]"; + + resetInvocationCounts(vm0, vm1, vm2, vm3); response = executeFunctionThroughRestCall("SampleFunction", PR_REGION_NAME, "key2", jsonBody, null, null); assertEquals(200, response.getStatusLine().getStatusCode()); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c33efb60/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java ---------------------------------------------------------------------- diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java index fc71fd8..9e8086c 100644 --- a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java +++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPITestBase.java @@ -66,7 +66,6 @@ public class RestAPITestBase extends DistributedTestCase { if (agentUtil.findWarLocation("geode-web-api") == null) { fail("unable to locate geode-web-api WAR file"); } - Wait.pause(1000); // TODO: replace this with Awaitility final Host host = Host.getHost(0); vm0 = host.getVM(0); vm1 = host.getVM(1); @@ -102,11 +101,10 @@ public class RestAPITestBase extends DistributedTestCase { } } - public String createCacheWithGroups(VM vm, final String groups) { + public String createCacheWithGroups(final String hostName, final String groups) { RestAPITestBase test = new RestAPITestBase(getTestMethodName()); - final String hostName = vm.getHost().getHostName(); - final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort(); + final int servicePort = AvailablePortHelper.getRandomAvailableTCPPort(); Properties props = new Properties(); @@ -116,12 +114,12 @@ public class RestAPITestBase extends DistributedTestCase { props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true"); props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName); - props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(serverPort)); + props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(servicePort)); InternalDistributedSystem ds = test.getSystem(props); cache = CacheFactory.create(ds); - String restEndPoint = "http://" + hostName + ":" + serverPort + "/gemfire-api/v1"; + String restEndPoint = "http://" + hostName + ":" + servicePort + "/gemfire-api/v1"; return restEndPoint; } @@ -132,7 +130,7 @@ public class RestAPITestBase extends DistributedTestCase { protected CloseableHttpResponse executeFunctionThroughRestCall(String function, String regionName, String filter, String jsonBody, String groups, String members) { - LogWriterUtils.getLogWriter().info("Entering executeFunctionThroughRestCall"); + System.out.println("Entering executeFunctionThroughRestCall"); try { CloseableHttpClient httpclient = HttpClients.createDefault(); Random randomGenerator = new Random(); @@ -140,7 +138,7 @@ public class RestAPITestBase extends DistributedTestCase { HttpPost post = createHTTPPost(function, regionName, filter, restURLIndex, groups, members, jsonBody); - LogWriterUtils.getLogWriter().info("Request: POST " + post.toString()); + System.out.println("Request: POST " + post.toString()); return httpclient.execute(post); } catch (Exception e) { throw new RuntimeException("unexpected exception", e); @@ -185,7 +183,7 @@ public class RestAPITestBase extends DistributedTestCase { try { String httpResponseString = processHttpResponse(response); response.close(); - LogWriterUtils.getLogWriter().info("Response : " + httpResponseString); + System.out.println("Response : " + httpResponseString); //verify function execution result JSONArray resultArray = new JSONArray(httpResponseString); assertEquals(resultArray.length(), expectedServerResponses); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c33efb60/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java index 5b0eb17..0f4b2d3 100644 --- a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java +++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java @@ -16,38 +16,7 @@ */ package com.gemstone.gemfire.rest.internal.web.controllers; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import org.apache.http.HttpEntity; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpDelete; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.methods.HttpPut; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import com.gemstone.gemfire.cache.AttributesFactory; -import com.gemstone.gemfire.cache.Cache; -import com.gemstone.gemfire.cache.CacheFactory; -import com.gemstone.gemfire.cache.DataPolicy; -import com.gemstone.gemfire.cache.Region; -import com.gemstone.gemfire.cache.RegionAttributes; -import com.gemstone.gemfire.cache.RegionFactory; -import com.gemstone.gemfire.cache.RegionShortcut; +import com.gemstone.gemfire.cache.*; import com.gemstone.gemfire.cache.client.ClientCache; import com.gemstone.gemfire.cache.client.ClientCacheFactory; import com.gemstone.gemfire.cache.client.ClientRegionFactory; @@ -64,17 +33,31 @@ import com.gemstone.gemfire.management.ManagementTestBase; import com.gemstone.gemfire.pdx.PdxInstance; import com.gemstone.gemfire.test.dunit.Host; import com.gemstone.gemfire.test.dunit.NetworkUtils; -import com.gemstone.gemfire.test.dunit.SerializableCallable; -import com.gemstone.gemfire.test.dunit.SerializableRunnable; import com.gemstone.gemfire.test.dunit.VM; +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.*; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.*; /** * Dunit Test containing inter - operations between REST Client and Gemfire cache client + * * @since 8.0 */ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { - + private static final long serialVersionUID = -254776154266339226L; private ManagementTestBase helper; @@ -89,7 +72,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { private static final String[] PARAM_QUERY_IDS_ARRAY = { "findAllPeople", "filterByGender", "filterByLastName" }; - + final static String QUERY_ARGS = "[" + "{" + "\"@type\": \"string\"," @@ -98,29 +81,29 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { + "]"; final static String PERSON_AS_JSON_CAS = "{" - + "\"@old\" :" + + "\"@old\" :" + "{" + "\"@type\": \"com.gemstone.gemfire.rest.internal.web.controllers.Person\"," + "\"id\": 101," + " \"firstName\": \"Mithali\"," + " \"middleName\": \"Dorai\"," + " \"lastName\": \"Raj\"," - + " \"birthDate\": \"12/04/1982\"," + "\"gender\": \"FEMALE\"" + + " \"birthDate\": \"12/04/1982\"," + "\"gender\": \"FEMALE\"" + "}," - + "\"@new\" :" + + "\"@new\" :" + "{" + "\"@type\": \"com.gemstone.gemfire.rest.internal.web.controllers.Person\"," + "\"id\": 1101," + " \"firstName\": \"Virat\"," + " \"middleName\": \"Premkumar\"," + " \"lastName\": \"Kohli\"," - + " \"birthDate\": \"08/11/1988\"," + "\"gender\": \"MALE\"" + + " \"birthDate\": \"08/11/1988\"," + "\"gender\": \"MALE\"" + "}" + "}"; - + final static String PERSON_AS_JSON_REPLACE = "{" + "\"@type\": \"com.gemstone.gemfire.rest.internal.web.controllers.Person\"," + "\"id\": 501," + " \"firstName\": \"Barack\"," + " \"middleName\": \"Hussein\"," + " \"lastName\": \"Obama\"," - + " \"birthDate\": \"04/08/1961\"," + "\"gender\": \"MALE\"" + + " \"birthDate\": \"04/08/1961\"," + "\"gender\": \"MALE\"" + "}"; - + private static final String PERSON_LIST_AS_JSON = "[" + "{" + "\"@type\": \"com.gemstone.gemfire.rest.internal.web.controllers.Person\"," + "\"id\": 3," + " \"firstName\": \"Nishka3\"," @@ -178,86 +161,38 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { protected final void postTearDownLocatorTestBase() throws Exception { disconnectAllFromDS(); } - - public static String startBridgeServerWithRestServiceOnInVM(VM vm, final String[] groups, final String locators, final String[] regions, final ServerLoadProbe probe) { - - final String hostName = vm.getHost().getHostName(); - final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort(); - - //create Cache of given VM and start HTTP service with REST APIs service - new RestAPIsAndInterOpsDUnitTest("temp").startBridgeServer(hostName, serverPort, groups, locators, regions, probe); - - String restEndPoint = "http://" + hostName + ":" + serverPort + "/gemfire-api/v1"; - return restEndPoint; - } - - @SuppressWarnings("deprecation") - protected int startBridgeServer(String hostName, int restServicerPort, final String[] groups, final String locators, final String[] regions, final ServerLoadProbe probe) { - - Properties props = new Properties(); - props.setProperty(DistributionConfig.MCAST_PORT_NAME, String.valueOf(0)); - props.setProperty(DistributionConfig.LOCATORS_NAME, locators); - props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true"); - props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName); - props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(restServicerPort)); - - DistributedSystem ds = getSystem(props); - Cache cache = CacheFactory.create(ds); - ((GemFireCacheImpl)cache).setReadSerialized(true); - AttributesFactory factory = new AttributesFactory(); - - factory.setEnableBridgeConflation(true); - factory.setDataPolicy(DataPolicy.REPLICATE); - RegionAttributes attrs = factory.create(); - for(int i = 0; i < regions.length; i++) { - cache.createRegion(regions[i], attrs); - } - - CacheServer server = cache.addCacheServer(); - final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort(); - server.setPort(serverPort); - server.setGroups(groups); - server.setLoadProbe(probe); - try { - server.start(); - } catch (IOException e) { - e.printStackTrace(); - } - remoteObjects.put(CACHE_KEY, cache); - return new Integer(serverPort); - } - - public static void doPutsInClientCache() { + + public void doPutsInClientCache() { ClientCache cache = GemFireCacheImpl.getInstance(); assertNotNull(cache); Region region = cache.getRegion(PEOPLE_REGION_NAME); - + //put person object final Person person1 = new Person(101L, "Mithali", "Dorai", "Raj", DateTimeUtils.createDate(1982, Calendar.DECEMBER, 4), Gender.FEMALE); final Person person2 = new Person(102L, "Sachin", "Ramesh", "Tendulkar", DateTimeUtils.createDate(1975, Calendar.DECEMBER, 14), Gender.MALE); final Person person3 = new Person(103L, "Saurabh", "Baburav", "Ganguly", DateTimeUtils.createDate(1972, Calendar.AUGUST, 29), Gender.MALE); final Person person4 = new Person(104L, "Rahul", "subrymanyam", "Dravid", DateTimeUtils.createDate(1979, Calendar.MARCH, 17), Gender.MALE); final Person person5 = new Person(105L, "Jhulan", "Chidambaram", "Goswami", DateTimeUtils.createDate(1983, Calendar.NOVEMBER, 25), Gender.FEMALE); - + region.put("1", person1); region.put("2", person2); region.put("3", person3); region.put("4", person4); region.put("5", person5); - + final Person person6 = new Person(101L, "Rahul", "Rajiv", "Gndhi", DateTimeUtils.createDate(1970, Calendar.MAY, 14), Gender.MALE); final Person person7 = new Person(102L, "Narendra", "Damodar", "Modi", DateTimeUtils.createDate(1945, Calendar.DECEMBER, 24), Gender.MALE); final Person person8 = new Person(103L, "Atal", "Bihari", "Vajpayee", DateTimeUtils.createDate(1920, Calendar.AUGUST, 9), Gender.MALE); final Person person9 = new Person(104L, "Soniya", "Rajiv", "Gandhi", DateTimeUtils.createDate(1929, Calendar.MARCH, 27), Gender.FEMALE); final Person person10 = new Person(104L, "Priyanka", "Robert", "Gandhi", DateTimeUtils.createDate(1973, Calendar.APRIL, 15), Gender.FEMALE); - + final Person person11 = new Person(104L, "Murali", "Manohar", "Joshi", DateTimeUtils.createDate(1923, Calendar.APRIL, 25), Gender.MALE); final Person person12 = new Person(104L, "Lalkrishna", "Parmhansh", "Advani", DateTimeUtils.createDate(1910, Calendar.JANUARY, 01), Gender.MALE); final Person person13 = new Person(104L, "Shushma", "kumari", "Swaraj", DateTimeUtils.createDate(1943, Calendar.AUGUST, 10), Gender.FEMALE); final Person person14 = new Person(104L, "Arun", "raman", "jetly", DateTimeUtils.createDate(1942, Calendar.OCTOBER, 27), Gender.MALE); final Person person15 = new Person(104L, "Amit", "kumar", "shah", DateTimeUtils.createDate(1958, Calendar.DECEMBER, 21), Gender.MALE); final Person person16 = new Person(104L, "Shila", "kumari", "Dixit", DateTimeUtils.createDate(1927, Calendar.FEBRUARY, 15), Gender.FEMALE); - + Map userMap = new HashMap(); userMap.put("6", person6); userMap.put("7", person7); @@ -270,15 +205,15 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { userMap.put("14", person14); userMap.put("15", person15); userMap.put("16", person16); - + region.putAll(userMap); - + if (cache != null) cache.getLogger().info("Gemfire Cache Client: Puts successfully done"); - + } - public static void doQueryOpsUsingRestApis(String restEndpoint) { + public void doQueryOpsUsingRestApis(String restEndpoint) { String currentQueryOp = null; try { // Query TestCase-1 :: Prepare parameterized Queries @@ -291,8 +226,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse createNamedQueryResponse = httpclient.execute(post); assertEquals(createNamedQueryResponse.getStatusLine().getStatusCode(), 201); assertNotNull(createNamedQueryResponse.getEntity()); - createNamedQueryResponse.close(); - + createNamedQueryResponse.close(); post = new HttpPost(restEndpoint + findPeopleByGenderQuery); post.addHeader("Content-Type", "application/json"); @@ -301,7 +235,6 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { assertEquals(createNamedQueryResponse.getStatusLine().getStatusCode(), 201); assertNotNull(createNamedQueryResponse.getEntity()); createNamedQueryResponse.close(); - post = new HttpPost(restEndpoint + findPeopleByLastNameQuery); post.addHeader("Content-Type", "application/json"); @@ -311,7 +244,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { assertNotNull(createNamedQueryResponse.getEntity()); createNamedQueryResponse.close(); } - + // Query TestCase-2 :: List all parameterized queries { currentQueryOp = "listAllQueries"; @@ -320,7 +253,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse listAllQueriesResponse = httpclient.execute(get); assertEquals(listAllQueriesResponse.getStatusLine().getStatusCode(), 200); assertNotNull(listAllQueriesResponse.getEntity()); - + HttpEntity entity = listAllQueriesResponse.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -331,19 +264,19 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { sb.append(line); } listAllQueriesResponse.close(); - + // Check whether received response contains expected query IDs. JSONObject jsonObject = new JSONObject(sb.toString()); JSONArray jsonArray = jsonObject.getJSONArray("queries"); for (int i = 0; i < jsonArray.length(); i++) { assertTrue( - "PREPARE_PARAMETERIZED_QUERY: function IDs are not matched", - Arrays.asList(PARAM_QUERY_IDS_ARRAY).contains( - jsonArray.getJSONObject(i).getString("id"))); + "PREPARE_PARAMETERIZED_QUERY: function IDs are not matched", + Arrays.asList(PARAM_QUERY_IDS_ARRAY).contains( + jsonArray.getJSONObject(i).getString("id"))); } - } - + } + // Query TestCase-3 :: Run the specified named query passing in scalar values for query parameters. { currentQueryOp = "filterByLastName"; @@ -351,41 +284,35 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { HttpPost post = new HttpPost(restEndpoint + "/queries/filterByLastName"); post.addHeader("Content-Type", "application/json"); post.addHeader("Accept", "application/json"); - StringEntity entity = new StringEntity(QUERY_ARGS); + StringEntity entity = new StringEntity(QUERY_ARGS); post.setEntity(entity); CloseableHttpResponse runNamedQueryResponse = httpclient.execute(post); assertEquals(200, runNamedQueryResponse.getStatusLine().getStatusCode()); assertNotNull(runNamedQueryResponse.getEntity()); } - } catch ( Exception e ) { + } catch (Exception e) { throw new RuntimeException("unexpected exception", e); } } - - public static void verifyUpdatesInClientCache() { + + public void verifyUpdatesInClientCache() { ClientCache cache = GemFireCacheImpl.getInstance(); assertNotNull(cache); Region region = cache.getRegion(PEOPLE_REGION_NAME); - + { - Person expectedPerson = new Person(3L, "Nishka3", "Nilkanth3", "Patel3", DateTimeUtils.createDate(2009, Calendar.JULY, 31), Gender.FEMALE ); + Person expectedPerson = new Person(3L, "Nishka3", "Nilkanth3", "Patel3", DateTimeUtils.createDate(2009, Calendar.JULY, 31), Gender.FEMALE); Object value = region.get("3"); if (value instanceof PdxInstance) { - PdxInstance pi3 = (PdxInstance) value; + PdxInstance pi3 = (PdxInstance) value; Person actualPerson = (Person) pi3.getObject(); - assertEquals(actualPerson.getId(), expectedPerson.getId()); - assertEquals(actualPerson.getFirstName(), expectedPerson.getFirstName()); - assertEquals(actualPerson.getMiddleName(), expectedPerson.getMiddleName()); - assertEquals(actualPerson.getLastName(), expectedPerson.getLastName()); - assertEquals(actualPerson.getBirthDate(), expectedPerson.getBirthDate()); - assertEquals(actualPerson.getGender(), expectedPerson.getGender()); + comparePersonObject(expectedPerson, actualPerson); } else if (value instanceof Person) { fail("VerifyUpdatesInClientCache, Get on key 3, Expected to get value of type PdxInstance "); } } - - + //TODO: uncomment it once following issue encountered in put?op=CAS is fixed or document the issue // CAS functionality is not working in following test case // step-1: Java client, Region.put("K", A); @@ -404,43 +331,47 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { } } */ - + //verify update on key "2" { - Person expectedPerson = new Person(501L, "Barack", "Hussein", "Obama", DateTimeUtils.createDate(1961, Calendar.APRIL, 8), Gender.MALE ); + Person expectedPerson = new Person(501L, "Barack", "Hussein", "Obama", DateTimeUtils.createDate(1961, Calendar.APRIL, 8), Gender.MALE); Object value = region.get("2"); if (value instanceof PdxInstance) { - PdxInstance pi3 = (PdxInstance) value; + PdxInstance pi3 = (PdxInstance) value; Person actualPerson = (Person) pi3.getObject(); - assertEquals(actualPerson.getId(), expectedPerson.getId()); - assertEquals(actualPerson.getFirstName(), expectedPerson.getFirstName()); - assertEquals(actualPerson.getMiddleName(), expectedPerson.getMiddleName()); - assertEquals(actualPerson.getLastName(), expectedPerson.getLastName()); - assertEquals(actualPerson.getBirthDate(), expectedPerson.getBirthDate()); - assertEquals(actualPerson.getGender(), expectedPerson.getGender()); - }else { + comparePersonObject(expectedPerson, actualPerson); + } else { fail("VerifyUpdatesInClientCache, Get on key 2, Expected to get value of type PdxInstance "); } } - + //verify Deleted key "13" { Object obj = region.get("13"); assertEquals(obj, null); - + obj = region.get("14"); assertEquals(obj, null); - + obj = region.get("15"); assertEquals(obj, null); - + obj = region.get("16"); assertEquals(obj, null); } - + } - - public static void doUpdatesUsingRestApis(String restEndpoint) { + + private void comparePersonObject(Person expectedPerson, Person actualPerson) { + assertEquals(actualPerson.getId(), expectedPerson.getId()); + assertEquals(actualPerson.getFirstName(), expectedPerson.getFirstName()); + assertEquals(actualPerson.getMiddleName(), expectedPerson.getMiddleName()); + assertEquals(actualPerson.getLastName(), expectedPerson.getLastName()); + assertEquals(actualPerson.getBirthDate(), expectedPerson.getBirthDate()); + assertEquals(actualPerson.getGender(), expectedPerson.getGender()); + } + + public void doUpdatesUsingRestApis(String restEndpoint) { //UPdate keys using REST calls { @@ -457,7 +388,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { throw new RuntimeException("unexpected exception", e); } } - + //Delete Single keys { try { @@ -470,7 +401,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { throw new RuntimeException("unexpected exception", e); } } - + //Delete set of keys { try { @@ -483,7 +414,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { throw new RuntimeException("unexpected exception", e); } } - + //REST put?op=CAS for key 1 /* try { @@ -499,15 +430,15 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { }catch (HttpServerErrorException se) { fail("Caught HttpServerErrorException while doing put with op=cas"); } - */ - + */ + //REST put?op=REPLACE for key 2 { /*HttpEntity entity = new HttpEntity(PERSON_AS_JSON_REPLACE, headers); ResponseEntity result = RestTestUtils.getRestTemplate().exchange( restEndpoint + "/People/2?op=replace", HttpMethod.PUT, entity, String.class);*/ - + try { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPut put = new HttpPut(restEndpoint @@ -522,14 +453,14 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { } } } - - public static void fetchRestServerEndpoints(String restEndpoint) { + + public void fetchRestServerEndpoints(String restEndpoint) { HttpGet get = new HttpGet(restEndpoint + "/servers"); get.addHeader("Content-Type", "application/json"); get.addHeader("Accept", "application/json"); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response; - + try { response = httpclient.execute(get); HttpEntity entity = response.getEntity(); @@ -541,18 +472,18 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + //validate the satus code assertEquals(response.getStatusLine().getStatusCode(), 200); - - if(response.getStatusLine().getStatusCode() == 200) { + + if (response.getStatusLine().getStatusCode() == 200) { JSONArray jsonArray = new JSONArray(str.toString()); - + //verify total number of REST service endpoints in DS assertEquals(jsonArray.length(), 2); } - - } catch (ClientProtocolException e) { + + } catch (ClientProtocolException e) { e.printStackTrace(); fail(" Rest Request should not have thrown ClientProtocolException!"); } catch (IOException e) { @@ -562,26 +493,26 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { e.printStackTrace(); fail(" Rest Request should not have thrown JSONException!"); } - + } - - public static void doGetsUsingRestApis(String restEndpoint) { - + + public void doGetsUsingRestApis(String restEndpoint) { + //HttpHeaders headers = setAcceptAndContentTypeHeaders(); String currentOperation = null; JSONObject jObject; JSONArray jArray; - try { + try { //1. Get on key="1" and validate result. { currentOperation = "GET on key 1"; - + HttpGet get = new HttpGet(restEndpoint + "/People/1"); get.addHeader("Content-Type", "application/json"); get.addHeader("Accept", "application/json"); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = httpclient.execute(get); - + HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -591,27 +522,26 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + jObject = new JSONObject(str.toString()); - + assertEquals(jObject.get("id"), 101); assertEquals(jObject.get("firstName"), "Mithali"); assertEquals(jObject.get("middleName"), "Dorai"); assertEquals(jObject.get("lastName"), "Raj"); assertEquals(jObject.get("gender"), Gender.FEMALE.name()); } - + //2. Get on key="16" and validate result. { currentOperation = "GET on key 16"; - HttpGet get = new HttpGet(restEndpoint + "/People/16"); get.addHeader("Content-Type", "application/json"); get.addHeader("Accept", "application/json"); CloseableHttpClient httpclient = HttpClients.createDefault(); CloseableHttpResponse response = httpclient.execute(get); - + HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -621,17 +551,16 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + jObject = new JSONObject(str.toString()); - - + assertEquals(jObject.get("id"), 104); assertEquals(jObject.get("firstName"), "Shila"); assertEquals(jObject.get("middleName"), "kumari"); assertEquals(jObject.get("lastName"), "Dixit"); assertEquals(jObject.get("gender"), Gender.FEMALE.name()); } - + //3. Get all (getAll) entries in Region { @@ -642,7 +571,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse result = httpclient.execute(get); assertEquals(result.getStatusLine().getStatusCode(), 200); assertNotNull(result.getEntity()); - + HttpEntity entity = result.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -653,16 +582,16 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { sb.append(line); } result.close(); - + try { jObject = new JSONObject(sb.toString()); jArray = jObject.getJSONArray("People"); assertEquals(jArray.length(), 16); } catch (JSONException e) { - fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); + fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); } } - + //4. GetAll?limit=10 (10 entries) and verify results { HttpGet get = new HttpGet(restEndpoint + "/People?limit=10"); @@ -672,7 +601,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse response = httpclient.execute(get); assertEquals(response.getStatusLine().getStatusCode(), 200); assertNotNull(response.getEntity()); - + HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -682,19 +611,19 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + try { jObject = new JSONObject(str.toString()); jArray = jObject.getJSONArray("People"); assertEquals(jArray.length(), 10); } catch (JSONException e) { - fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); + fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); } } - + //5. Get keys - List all keys in region - { - + { + HttpGet get = new HttpGet(restEndpoint + "/People/keys"); get.addHeader("Content-Type", "application/json"); get.addHeader("Accept", "application/json"); @@ -702,7 +631,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse response = httpclient.execute(get); assertEquals(response.getStatusLine().getStatusCode(), 200); assertNotNull(response.getEntity()); - + HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -712,19 +641,19 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + try { jObject = new JSONObject(str.toString()); - jArray = jObject.getJSONArray("keys"); + jArray = jObject.getJSONArray("keys"); assertEquals(jArray.length(), 16); } catch (JSONException e) { - fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); + fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); } - } - + } + //6. Get data for specific keys - { - + { + HttpGet get = new HttpGet(restEndpoint + "/People/1,3,5,7,9,11"); get.addHeader("Content-Type", "application/json"); get.addHeader("Accept", "application/json"); @@ -732,7 +661,7 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { CloseableHttpResponse response = httpclient.execute(get); assertEquals(response.getStatusLine().getStatusCode(), 200); assertNotNull(response.getEntity()); - + HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader( @@ -742,53 +671,44 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { while ((line = reader.readLine()) != null) { str.append(line); } - + try { jObject = new JSONObject(str.toString()); jArray = jObject.getJSONArray("People"); assertEquals(jArray.length(), 6); - + } catch (JSONException e) { - fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); + fail(" Rest Request ::" + currentOperation + " :: should not have thrown JSONException "); } - } - }catch ( Exception e ) { - throw new RuntimeException("unexpected exception", e); + } + } catch (Exception e) { + throw new RuntimeException("unexpected exception", e); } } - public static void createRegionInClientCache() { + public void createRegionInClientCache() { ClientCache cache = GemFireCacheImpl.getInstance(); assertNotNull(cache); ClientRegionFactory crf = cache .createClientRegionFactory(ClientRegionShortcut.PROXY); - Region region = crf.create(PEOPLE_REGION_NAME); - - } - - public static void createRegionInManager() { - Cache cache = GemFireCacheImpl.getInstance(); - assertNotNull(cache); - - RegionFactory rf = cache - .createRegionFactory(RegionShortcut.REPLICATE); - Region region = rf.create(PEOPLE_REGION_NAME); + crf.create(PEOPLE_REGION_NAME); } - public static void createRegionInPeerServer() { + public void createRegion() { Cache cache = GemFireCacheImpl.getInstance(); assertNotNull(cache); - RegionFactory rf = cache + RegionFactory regionFactory = cache .createRegionFactory(RegionShortcut.REPLICATE); - Region region = rf.create(PEOPLE_REGION_NAME); + regionFactory.create(PEOPLE_REGION_NAME); } /** - * InterOps Test between REST-client, Peer Cache Client and Client Cache + * InterOps Test between REST-client, Peer Cache Client and Client Cache + * * @throws Exception */ - + public void testInterOpsWithReplicatedRegion() throws Exception { final Host host = Host.getHost(0); @@ -799,47 +719,46 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { // start locator int locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET); - - startLocatorInVM(locator, locatorPort, ""); - + + locator.invoke("Start Locator", () -> startLocator(locator.getHost(), locatorPort, "")); + // find locators String locators = NetworkUtils.getServerHostName(locator.getHost()) + "[" + locatorPort + "]"; // start manager (peer cache) - int managerPort = startManagerInVM(manager,/* groups */null, locators, - new String[] {REGION_NAME}, CacheServer.DEFAULT_LOAD_PROBE); - + manager.invoke("Start manager", () -> startManager(null, locators, + new String[] { REGION_NAME }, CacheServer.DEFAULT_LOAD_PROBE)); + //start startCacheServer With RestService enabled - String restEndpoint = (String)server.invoke(RestAPIsAndInterOpsDUnitTest.class, - "startBridgeServerWithRestServiceOnInVM", new Object[] { server , null, locators, new String[] {REGION_NAME}, CacheServer.DEFAULT_LOAD_PROBE }); - + String restEndpoint = (String) server.invoke(RestAPIsAndInterOpsDUnitTest.class, + "startBridgeServerWithRestServiceOnInVM", new Object[] { server, null, locators, new String[] { REGION_NAME }, CacheServer.DEFAULT_LOAD_PROBE }); + // create a client cache - createClientCacheInVM(client, NetworkUtils.getServerHostName(locator.getHost()), - locatorPort); - + client.invoke("Create Client", () -> createClientCache(NetworkUtils.getServerHostName(locator.getHost()), locatorPort)); + // create region in Manager, peer cache and Client cache nodes - manager.invoke(() -> RestAPIsAndInterOpsDUnitTest.createRegionInManager()); - server.invoke(() -> RestAPIsAndInterOpsDUnitTest.createRegionInPeerServer()); - client.invoke(() -> RestAPIsAndInterOpsDUnitTest.createRegionInClientCache()); - + manager.invoke("create region", () -> createRegion()); + server.invoke("create region", () -> createRegion()); + client.invoke("create region", () -> createRegionInClientCache()); + // do some person puts from clientcache - client.invoke(() -> RestAPIsAndInterOpsDUnitTest.doPutsInClientCache()); + client.invoke("doPutsInClientCache", () -> doPutsInClientCache()); //TEST: fetch all available REST endpoints - RestAPIsAndInterOpsDUnitTest.fetchRestServerEndpoints(restEndpoint); - + fetchRestServerEndpoints(restEndpoint); + // Controller VM - config REST Client and make HTTP calls - RestAPIsAndInterOpsDUnitTest.doGetsUsingRestApis(restEndpoint); - + doGetsUsingRestApis(restEndpoint); + //update Data using REST APIs - RestAPIsAndInterOpsDUnitTest.doUpdatesUsingRestApis(restEndpoint); - - client.invoke(() -> RestAPIsAndInterOpsDUnitTest.verifyUpdatesInClientCache()); + doUpdatesUsingRestApis(restEndpoint); + + client.invoke("verifyUpdatesInClientCache", () -> verifyUpdatesInClientCache()); //Querying - RestAPIsAndInterOpsDUnitTest.doQueryOpsUsingRestApis(restEndpoint); - + doQueryOpsUsingRestApis(restEndpoint); + // stop the client and make sure the bridge server notifies // stopBridgeMemberVM(client); helper.closeCache(locator); @@ -849,66 +768,44 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { } - private void createClientCacheInVM(VM vm, final String host, final int port) throws Exception { - SerializableRunnable connect = new SerializableRunnable( - "Start Cache client") { - public void run() { - // Connect using the GemFire locator and create a Caching_Proxy cache - ClientCache c = new ClientCacheFactory().setPdxReadSerialized(true).addPoolLocator(host, port) - .create(); - - Region r = c.createClientRegionFactory( - ClientRegionShortcut.PROXY).create(REGION_NAME); - } - }; + private void createClientCache(final String host, final int port) throws Exception { + // Connect using the GemFire locator and create a Caching_Proxy cache + ClientCache cache = new ClientCacheFactory().setPdxReadSerialized(true).addPoolLocator(host, port).create(); + cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create(REGION_NAME); + } + + private int startManager(final String[] groups, + final String locators, final String[] regions, final ServerLoadProbe probe) throws IOException { + Properties props = new Properties(); + props.setProperty(DistributionConfig.MCAST_PORT_NAME, String.valueOf(0)); + props.setProperty(DistributionConfig.LOCATORS_NAME, locators); - if (vm == null) { - connect.run(); - } else { - vm.invoke(connect); + props.setProperty("jmx-manager", "true"); + props.setProperty("jmx-manager-start", "true"); + props.setProperty(DistributionConfig.JMX_MANAGER_PORT_NAME, "0"); + + final int httpPort = AvailablePortHelper.getRandomAvailableTCPPort(); + //Set REST service related configuration + props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true"); + props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, "localhost"); + props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(httpPort)); + + DistributedSystem ds = getSystem(props); + Cache cache = CacheFactory.create(ds); + AttributesFactory factory = new AttributesFactory(); + + factory.setEnableBridgeConflation(true); + factory.setDataPolicy(DataPolicy.REPLICATE); + RegionAttributes attrs = factory.create(); + for (int i = 0; i < regions.length; i++) { + cache.createRegion(regions[i], attrs); } - } + CacheServer server = cache.addCacheServer(); + server.setPort(0); + server.setGroups(groups); + server.setLoadProbe(probe); + server.start(); - private int startManagerInVM(VM vm, final String[] groups, - final String locators, final String[] regions, final ServerLoadProbe probe) { - SerializableCallable connect = new SerializableCallable("Start Manager ") { - public Object call() throws IOException { - Properties props = new Properties(); - props - .setProperty(DistributionConfig.MCAST_PORT_NAME, String.valueOf(0)); - props.setProperty(DistributionConfig.LOCATORS_NAME, locators); - - props.setProperty("jmx-manager", "true"); - props.setProperty("jmx-manager-start", "true"); - props.setProperty(DistributionConfig.JMX_MANAGER_PORT_NAME, "0"); - - final int httpPort = AvailablePortHelper.getRandomAvailableTCPPort(); - //Set REST service related configuration - props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true"); - props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, "localhost"); - props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(httpPort)); - - DistributedSystem ds = getSystem(props); - Cache cache = CacheFactory.create(ds); - AttributesFactory factory = new AttributesFactory(); - - factory.setEnableBridgeConflation(true); - factory.setDataPolicy(DataPolicy.REPLICATE); - RegionAttributes attrs = factory.create(); - for (int i = 0; i < regions.length; i++) { - cache.createRegion(regions[i], attrs); - } - CacheServer server = cache.addCacheServer(); - final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort(); - server.setPort(serverPort); - server.setGroups(groups); - server.setLoadProbe(probe); - server.start(); - - return new Integer(serverPort); - } - }; - Integer port = (Integer) vm.invoke(connect); - return port.intValue(); + return new Integer(server.getPort()); } } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c33efb60/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnGroupsFunctionExecutionDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnGroupsFunctionExecutionDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnGroupsFunctionExecutionDUnitTest.java index 61e0925..a567700 100644 --- a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnGroupsFunctionExecutionDUnitTest.java +++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnGroupsFunctionExecutionDUnitTest.java @@ -39,9 +39,9 @@ public class RestAPIsOnGroupsFunctionExecutionDUnitTest extends RestAPITestBase } private void setupCacheWithGroupsAndFunction() { - restURLs.add(vm0.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm0, "g0,gm"))); - restURLs.add(vm1.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm1, "g1"))); - restURLs.add(vm2.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm2, "g0,g1"))); + restURLs.add(vm0.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm0.getHost().getHostName(), "g0,gm"))); + restURLs.add(vm1.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm1.getHost().getHostName(), "g1"))); + restURLs.add(vm2.invoke("createCacheWithGroups", () -> createCacheWithGroups(vm2.getHost().getHostName(), "g0,g1"))); vm0.invoke("registerFunction(new OnGroupsFunction())", () -> FunctionService.registerFunction(new OnGroupsFunction())); vm1.invoke("registerFunction(new OnGroupsFunction())", () -> FunctionService.registerFunction(new OnGroupsFunction())); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c33efb60/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnMembersFunctionExecutionDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnMembersFunctionExecutionDUnitTest.java b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnMembersFunctionExecutionDUnitTest.java index ca01830..fd6b312 100644 --- a/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnMembersFunctionExecutionDUnitTest.java +++ b/geode-assembly/src/test/java/com/gemstone/gemfire/rest/internal/web/controllers/RestAPIsOnMembersFunctionExecutionDUnitTest.java @@ -44,7 +44,7 @@ public class RestAPIsOnMembersFunctionExecutionDUnitTest extends RestAPITestBase @Override public void execute(FunctionContext context) { - LogWriterUtils.getLogWriter().fine("SWAP:1:executing OnMembersFunction:" + invocationCount); + System.out.println("SWAP:1:executing OnMembersFunction:" + invocationCount); invocationCount++; context.getResultSender().lastResult(Boolean.TRUE); @@ -71,15 +71,14 @@ public class RestAPIsOnMembersFunctionExecutionDUnitTest extends RestAPITestBase } } - private String createCacheAndRegisterFunction(VM vm, String memberName) { - final String hostName = vm.getHost().getHostName(); - final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort(); + private String createCacheAndRegisterFunction(String hostName, String memberName) { + final int servicePort = AvailablePortHelper.getRandomAvailableTCPPort(); Properties props = new Properties(); props.setProperty(DistributionConfig.NAME_NAME, memberName); props.setProperty(DistributionConfig.START_DEV_REST_API_NAME, "true"); props.setProperty(DistributionConfig.HTTP_SERVICE_BIND_ADDRESS_NAME, hostName); - props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(serverPort)); + props.setProperty(DistributionConfig.HTTP_SERVICE_PORT_NAME, String.valueOf(servicePort)); Cache c = null; try { @@ -91,7 +90,7 @@ public class RestAPIsOnMembersFunctionExecutionDUnitTest extends RestAPITestBase c = CacheFactory.create(new RestAPIsOnMembersFunctionExecutionDUnitTest("temp").getSystem(props)); FunctionService.registerFunction(new OnMembersFunction()); - String restEndPoint = "http://" + hostName + ":" + serverPort + "/gemfire-api/v1"; + String restEndPoint = "http://" + hostName + ":" + servicePort + "/gemfire-api/v1"; return restEndPoint; } @@ -115,10 +114,10 @@ public class RestAPIsOnMembersFunctionExecutionDUnitTest extends RestAPITestBase } private void createCacheForVMs() { - restURLs.add(vm0.invoke(() -> createCacheAndRegisterFunction(vm0, "m1"))); - restURLs.add(vm1.invoke(() -> createCacheAndRegisterFunction(vm1, "m2"))); - restURLs.add(vm2.invoke(() -> createCacheAndRegisterFunction(vm2, "m3"))); - restURLs.add(vm3.invoke(() -> createCacheAndRegisterFunction(vm3, "m4"))); + restURLs.add(vm0.invoke("createCacheAndRegisterFunction",() -> createCacheAndRegisterFunction(vm0.getHost().getHostName(), "m1"))); + restURLs.add(vm1.invoke("createCacheAndRegisterFunction",() -> createCacheAndRegisterFunction(vm1.getHost().getHostName(), "m2"))); + restURLs.add(vm2.invoke("createCacheAndRegisterFunction",() -> createCacheAndRegisterFunction(vm2.getHost().getHostName(), "m3"))); + restURLs.add(vm3.invoke("createCacheAndRegisterFunction",() -> createCacheAndRegisterFunction(vm3.getHost().getHostName(), "m4"))); } public void testFunctionExecutionEOnSelectedMembers() {