You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2016/01/28 19:13:16 UTC
[14/70] [partial] incubator-geode git commit: WAN and CQ code drop
under the Pivotal SGA
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6df75241/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANConfigurationJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANConfigurationJUnitTest.java b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANConfigurationJUnitTest.java
new file mode 100644
index 0000000..6566152
--- /dev/null
+++ b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANConfigurationJUnitTest.java
@@ -0,0 +1,608 @@
+/*=========================================================================
+ * Copyright (c) 2010-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
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.gemstone.gemfire.internal.cache.wan.misc;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+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.Scope;
+import com.gemstone.gemfire.cache.asyncqueue.AsyncEventListener;
+import com.gemstone.gemfire.cache.wan.GatewayEventFilter;
+import com.gemstone.gemfire.cache.wan.GatewayReceiver;
+import com.gemstone.gemfire.cache.wan.GatewayReceiverFactory;
+import com.gemstone.gemfire.cache.wan.GatewaySender;
+import com.gemstone.gemfire.cache.wan.GatewaySenderFactory;
+import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
+import com.gemstone.gemfire.cache30.MyGatewayEventFilter1;
+import com.gemstone.gemfire.cache30.MyGatewayTransportFilter1;
+import com.gemstone.gemfire.cache30.MyGatewayTransportFilter2;
+import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.internal.cache.LocalRegion;
+import com.gemstone.gemfire.internal.cache.wan.GatewayReceiverException;
+import com.gemstone.gemfire.internal.cache.wan.GatewaySenderException;
+import com.gemstone.gemfire.internal.cache.wan.InternalGatewaySenderFactory;
+import com.gemstone.gemfire.internal.cache.wan.MyGatewaySenderEventListener;
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+
+@Category(IntegrationTest.class)
+public class WANConfigurationJUnitTest {
+
+ private Cache cache;
+
+ /**
+ * Test to validate that the sender can not be started without configuring
+ * locator
+ * @throws IOException
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test_GatewaySender_without_Locator() throws IOException {
+ try {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ GatewaySender sender1 = fact.create("NYSender", 2);
+ sender1.start();
+ fail("Expectd IllegalStateException but not thrown");
+ }
+ catch (Exception e) {
+ if ((e instanceof IllegalStateException && e
+ .getMessage()
+ .startsWith(
+ LocalizedStrings.AbstractGatewaySender_LOCATOR_SHOULD_BE_CONFIGURED_BEFORE_STARTING_GATEWAY_SENDER
+ .toLocalizedString()))) {
+ }
+ else {
+ fail("Expectd IllegalStateException but received :" + e);
+ }
+ }
+ }
+
+ /**
+ * Test to validate that sender with same Id can not be added to cache.
+ */
+ @Test
+ public void test_SameGatewaySenderCreatedTwice() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ try {
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ fact.setManualStart(true);
+ fact.create("NYSender", 2);
+ fact.create("NYSender", 2);
+ fail("Expectd IllegalStateException but not thrown");
+ }
+ catch (Exception e) {
+ if (e instanceof IllegalStateException
+ && e.getMessage().contains("A GatewaySender with id")) {
+
+ }
+ else {
+ fail("Expectd IllegalStateException but received :" + e);
+ }
+ }
+ }
+
+ /**
+ * Test to validate that same gatewaySender Id can not be added to the region attributes.
+ */
+ @Test
+ public void test_SameGatewaySenderIdAddedTwice() {
+ try {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ fact.setManualStart(true);
+ GatewaySender sender1 = fact.create("NYSender", 2);
+ AttributesFactory factory = new AttributesFactory();
+ factory.addGatewaySenderId(sender1.getId());
+ factory.addGatewaySenderId(sender1.getId());
+ fail("Expectd IllegalArgumentException but not thrown");
+ }
+ catch (Exception e) {
+ if (e instanceof IllegalArgumentException
+ && e.getMessage().contains("is already added")) {
+
+ }
+ else {
+ fail("Expectd IllegalStateException but received :" + e);
+ }
+ }
+ }
+
+ @Test
+ public void test_GatewaySenderIdAndAsyncEventId() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ AttributesFactory factory = new AttributesFactory();
+ factory.addGatewaySenderId("ln");
+ factory.addGatewaySenderId("ny");
+ factory.addAsyncEventQueueId("Async_LN");
+ RegionAttributes attrs = factory.create();
+
+ Set<String> senderIds = new HashSet<String>();
+ senderIds.add("ln");
+ senderIds.add("ny");
+ Set<String> attrsSenderIds = attrs.getGatewaySenderIds();
+ assertEquals(senderIds, attrsSenderIds);
+ Region r = cache.createRegion("Customer", attrs);
+ assertEquals(senderIds, ((LocalRegion)r).getGatewaySenderIds());
+ }
+
+ /**
+ * Test to validate that distributed region can not have the gateway sender
+ * with parallel distribution policy
+ *
+ */
+ public void DIABLEB_DUE_TO_BUG51491_test_GatewaySender_Parallel_DistributedRegion() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ fact.setManualStart(true);
+ GatewaySender sender1 = fact.create("NYSender", 2);
+ AttributesFactory factory = new AttributesFactory();
+ factory.addGatewaySenderId(sender1.getId());
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+ try {
+ RegionFactory regionFactory = cache.createRegionFactory(factory.create());
+ Region region = regionFactory
+ .create("test_GatewaySender_Parallel_DistributedRegion");
+ }
+ catch (Exception e) {
+ fail("Unexpectd Exception :" + e);
+ }
+ }
+
+ @Test
+ public void test_GatewaySender_Parallel_MultipleDispatherThread() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ fact.setManualStart(true);
+ fact.setDispatcherThreads(4);
+ try {
+ GatewaySender sender1 = fact.create("NYSender", 2);
+ }
+ catch (GatewaySenderException e) {
+ fail("UnExpectd Exception " + e);
+ }
+ }
+
+ @Test
+ public void test_GatewaySender_Serial_ZERO_DispatherThread() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setManualStart(true);
+ fact.setDispatcherThreads(0);
+ try {
+ GatewaySender sender1 = fact.create("NYSender", 2);
+ fail("Expectd GatewaySenderException but not thrown");
+ }
+ catch (GatewaySenderException e) {
+ if (e.getMessage().contains("can not be created with dispatcher threads less than 1")) {
+ }
+ else {
+ fail("Expectd IllegalStateException but received :" + e);
+ }
+ }
+ }
+
+ /**
+ * Test to validate the gateway receiver attributes are correctly set
+ */
+ @Test
+ public void test_ValidateGatewayReceiverAttributes() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ int port1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+ int port2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ if(port1 < port2){
+ fact.setStartPort(port1);
+ fact.setEndPort(port2);
+ }else{
+ fact.setStartPort(port2);
+ fact.setEndPort(port1);
+ }
+
+ fact.setMaximumTimeBetweenPings(2000);
+ fact.setSocketBufferSize(200);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ GatewayTransportFilter myStreamfilter2 = new MyGatewayTransportFilter2();
+ fact.addGatewayTransportFilter(myStreamfilter2);
+ fact.addGatewayTransportFilter(myStreamfilter1);
+ GatewayReceiver receiver1 = fact.create();
+
+
+ Region region = cache.createRegionFactory().create(
+ "test_ValidateGatewayReceiverAttributes");
+ Set<GatewayReceiver> receivers = cache.getGatewayReceivers();
+ GatewayReceiver rec = receivers.iterator().next();
+ assertEquals(receiver1.getHost(), rec.getHost());
+ assertEquals(receiver1.getStartPort(), rec.getStartPort());
+ assertEquals(receiver1.getEndPort(), rec.getEndPort());
+ assertEquals(receiver1.getBindAddress(), rec.getBindAddress());
+ assertEquals(receiver1.getMaximumTimeBetweenPings(), rec
+ .getMaximumTimeBetweenPings());
+ assertEquals(receiver1.getSocketBufferSize(), rec
+ .getSocketBufferSize());
+ assertEquals(receiver1.getGatewayTransportFilters().size(), rec
+ .getGatewayTransportFilters().size());
+
+ }
+
+ @Test
+ public void test_ValidateGatewayReceiverStatus() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ int port1 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+ int port2 = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ if(port1 < port2){
+ fact.setStartPort(port1);
+ fact.setEndPort(port2);
+ }else{
+ fact.setStartPort(port2);
+ fact.setEndPort(port1);
+ }
+
+ fact.setMaximumTimeBetweenPings(2000);
+ fact.setSocketBufferSize(200);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ GatewayTransportFilter myStreamfilter2 = new MyGatewayTransportFilter2();
+ fact.addGatewayTransportFilter(myStreamfilter2);
+ fact.addGatewayTransportFilter(myStreamfilter1);
+ GatewayReceiver receiver1 = fact.create();
+ assertTrue(receiver1.isRunning());
+ }
+
+ /**
+ * Test to validate that serial gateway sender attributes are correctly set
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test_ValidateSerialGatewaySenderAttributes() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setManualStart(true);
+ fact.setBatchConflationEnabled(true);
+ fact.setBatchSize(200);
+ fact.setBatchTimeInterval(300);
+ fact.setPersistenceEnabled(false);
+ fact.setDiskStoreName("FORNY");
+ fact.setMaximumQueueMemory(200);
+ fact.setAlertThreshold(1200);
+ GatewayEventFilter myeventfilter1 = new MyGatewayEventFilter1();
+ fact.addGatewayEventFilter(myeventfilter1);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+ GatewayTransportFilter myStreamfilter2 = new MyGatewayTransportFilter2();
+ fact.addGatewayTransportFilter(myStreamfilter2);
+ GatewaySender sender1 = fact.create("TKSender", 2);
+
+
+ AttributesFactory factory = new AttributesFactory();
+ factory.addGatewaySenderId(sender1.getId());
+ factory.setDataPolicy(DataPolicy.PARTITION);
+ Region region = cache.createRegionFactory(factory.create()).create(
+ "test_ValidateGatewaySenderAttributes");
+ Set<GatewaySender> senders = cache.getGatewaySenders();
+ assertEquals(senders.size(), 1);
+ GatewaySender gatewaySender = senders.iterator().next();
+ assertEquals(sender1.getRemoteDSId(), gatewaySender
+ .getRemoteDSId());
+ assertEquals(sender1.isManualStart(), gatewaySender.isManualStart());
+ assertEquals(sender1.isBatchConflationEnabled(), gatewaySender
+ .isBatchConflationEnabled());
+ assertEquals(sender1.getBatchSize(), gatewaySender.getBatchSize());
+ assertEquals(sender1.getBatchTimeInterval(), gatewaySender
+ .getBatchTimeInterval());
+ assertEquals(sender1.isPersistenceEnabled(), gatewaySender
+ .isPersistenceEnabled());
+ assertEquals(sender1.getDiskStoreName(), gatewaySender.getDiskStoreName());
+ assertEquals(sender1.getMaximumQueueMemory(), gatewaySender
+ .getMaximumQueueMemory());
+ assertEquals(sender1.getAlertThreshold(), gatewaySender
+ .getAlertThreshold());
+ assertEquals(sender1.getGatewayEventFilters().size(), gatewaySender
+ .getGatewayEventFilters().size());
+ assertEquals(sender1.getGatewayTransportFilters().size(), gatewaySender
+ .getGatewayTransportFilters().size());
+
+ }
+
+ /**
+ * Test to validate that parallel gateway sender attributes are correctly set
+ *
+ * @throws IOException
+ */
+ @Test
+ public void test_ValidateParallelGatewaySenderAttributes() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ fact.setParallel(true);
+ fact.setManualStart(true);
+ fact.setBatchConflationEnabled(true);
+ fact.setBatchSize(200);
+ fact.setBatchTimeInterval(300);
+ fact.setPersistenceEnabled(false);
+ fact.setDiskStoreName("FORNY");
+ fact.setMaximumQueueMemory(200);
+ fact.setAlertThreshold(1200);
+ GatewayEventFilter myeventfilter1 = new MyGatewayEventFilter1();
+ fact.addGatewayEventFilter(myeventfilter1);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+ GatewayTransportFilter myStreamfilter2 = new MyGatewayTransportFilter2();
+ fact.addGatewayTransportFilter(myStreamfilter2);
+ GatewaySender sender1 = fact.create("TKSender", 2);
+
+
+ AttributesFactory factory = new AttributesFactory();
+ factory.addGatewaySenderId(sender1.getId());
+ factory.setDataPolicy(DataPolicy.PARTITION);
+ Region region = cache.createRegionFactory(factory.create()).create(
+ "test_ValidateGatewaySenderAttributes");
+ Set<GatewaySender> senders = cache.getGatewaySenders();
+ assertEquals(1, senders.size());
+ GatewaySender gatewaySender = senders.iterator().next();
+ assertEquals(sender1.getRemoteDSId(), gatewaySender
+ .getRemoteDSId());
+ assertEquals(sender1.isManualStart(), gatewaySender.isManualStart());
+ assertEquals(sender1.isBatchConflationEnabled(), gatewaySender
+ .isBatchConflationEnabled());
+ assertEquals(sender1.getBatchSize(), gatewaySender.getBatchSize());
+ assertEquals(sender1.getBatchTimeInterval(), gatewaySender
+ .getBatchTimeInterval());
+ assertEquals(sender1.isPersistenceEnabled(), gatewaySender
+ .isPersistenceEnabled());
+ assertEquals(sender1.getDiskStoreName(), gatewaySender.getDiskStoreName());
+ assertEquals(sender1.getMaximumQueueMemory(), gatewaySender
+ .getMaximumQueueMemory());
+ assertEquals(sender1.getAlertThreshold(), gatewaySender
+ .getAlertThreshold());
+ assertEquals(sender1.getGatewayEventFilters().size(), gatewaySender
+ .getGatewayEventFilters().size());
+ assertEquals(sender1.getGatewayTransportFilters().size(), gatewaySender
+ .getGatewayTransportFilters().size());
+
+ }
+
+ @Test
+ public void test_GatewaySenderWithGatewaySenderEventListener1() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ InternalGatewaySenderFactory fact = (InternalGatewaySenderFactory)cache.createGatewaySenderFactory();
+ AsyncEventListener listener = new MyGatewaySenderEventListener();
+ ((InternalGatewaySenderFactory)fact).addAsyncEventListener(listener);
+ try {
+ fact.create("ln", 2);
+ fail("Expected GatewaySenderException. When a sender is added , remoteDSId should not be provided.");
+ } catch (Exception e) {
+ if (e instanceof GatewaySenderException
+ && e.getMessage()
+ .contains(
+ "cannot define a remote site because at least AsyncEventListener is already added.")) {
+
+ } else {
+ fail("Expected GatewaySenderException but received :" + e);
+ }
+ }
+ }
+
+ @Test
+ public void test_GatewaySenderWithGatewaySenderEventListener2() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewaySenderFactory fact = cache.createGatewaySenderFactory();
+ AsyncEventListener listener = new MyGatewaySenderEventListener();
+ ((InternalGatewaySenderFactory)fact).addAsyncEventListener(listener);
+ try {
+ ((InternalGatewaySenderFactory)fact).create("ln");
+ } catch (Exception e) {
+ fail("Received Exception :" + e);
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverAttributes() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setStartPort(50504);
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setEndPort(70707);
+ fact.setManualStart(true);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ }
+ catch (IOException e) {
+ fail("The test failed with IOException");
+ }
+
+ assertEquals(50504, receiver.getStartPort());
+ assertEquals(1000, receiver.getMaximumTimeBetweenPings());
+ assertEquals(4000,receiver.getSocketBufferSize());
+ assertEquals(70707, receiver.getEndPort());
+ }
+
+ /**
+ * This test takes a minimum of 120s to execute. It is known to hang on Mac OS
+ * X Yosemite do to changes in the the message string checked in
+ * GatewayRecieverImpl around line 167. Expects
+ * "Cannot assign requested address" but gets
+ * "Can't assign requested address". Timout after 150s to safeguard against
+ * hanging on other platforms that may differ.
+ *
+ * @see <a
+ * href="https://svn.gemstone.com/trac/gemfire/ticket/51536">https://svn
+ * .gemstone.com/trac/gemfire/ticket/51536<a>
+ */
+ @Test(timeout = 150000)
+ public void test_ValidateGatwayReceiverAttributes_WrongBindAddress() {
+ if (System.getProperty("os.name").equals("Mac OS X")) {
+ fail("Failing to avoid known hang on Mac OS X.");
+ }
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setStartPort(50504);
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setEndPort(70707);
+ fact.setManualStart(true);
+ fact.setBindAddress("200.112.204.10");
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ fail("Expected GAtewayReceiverException");
+ }
+ catch (GatewayReceiverException gRE){
+ assertTrue(gRE.getMessage().contains("Failed to create server socket on"));
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ fail("The test failed with IOException");
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverDefaultStartPortAndDefaultEndPort() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setManualStart(true);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ }
+ catch (IOException e) {
+ fail("The test failed with IOException");
+ }
+ int port = receiver.getPort();
+ System.out.println("SKSKSK The port of receiver is " + port);
+ if((port < 5000) || (port > 5500)) {
+ fail("GatewayReceiver started on out of range port");
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverDefaultStartPortAndEndPortProvided() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setEndPort(50707);
+ fact.setManualStart(true);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ }
+ catch (IOException e) {
+ fail("The test failed with IOException");
+ }
+ int port = receiver.getPort();
+ if((port < GatewayReceiver.DEFAULT_START_PORT) || (port > 50707)) {
+ fail("GatewayReceiver started on out of range port");
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverWithManualStartFALSE() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setStartPort(5303);
+ fact.setManualStart(false);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+ GatewayReceiver receiver = fact.create();
+ int port = receiver.getPort();
+ if ((port < 5303) || (port > GatewayReceiver.DEFAULT_END_PORT)) {
+ fail("GatewayReceiver started on out of range port");
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverWithStartPortAndDefaultEndPort() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setStartPort(5303);
+ fact.setManualStart(true);
+ GatewayTransportFilter myStreamfilter1 = new MyGatewayTransportFilter1();
+ fact.addGatewayTransportFilter(myStreamfilter1);
+
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ }
+ catch (IOException e) {
+ fail("The test failed with IOException");
+ }
+ int port = receiver.getPort();
+ if ((port < 5303) || (port > GatewayReceiver.DEFAULT_END_PORT)) {
+ fail("GatewayReceiver started on out of range port");
+ }
+ }
+
+ @Test
+ public void test_ValidateGatwayReceiverWithWrongEndPortProvided() {
+ cache = new CacheFactory().set("mcast-port", "0").create();
+ try {
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ fact.setMaximumTimeBetweenPings(1000);
+ fact.setSocketBufferSize(4000);
+ fact.setEndPort(4999);
+ GatewayReceiver receiver = fact.create();
+ fail("wrong end port set in the GatewayReceiver");
+ } catch (IllegalStateException expected) {
+ if(!expected.getMessage().contains("Please specify either start port a value which is less than end port.")){
+ fail("Caught IllegalStateException");
+ expected.printStackTrace();
+ }
+ }
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (this.cache != null) {
+ this.cache.close();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6df75241/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANLocatorServerDUnitTest.java b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
new file mode 100644
index 0000000..365559f
--- /dev/null
+++ b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANLocatorServerDUnitTest.java
@@ -0,0 +1,185 @@
+/*=========================================================================
+ * Copyright (c) 2010-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
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.gemstone.gemfire.internal.cache.wan.misc;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.ClientCacheFactory;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.client.internal.Connection;
+import com.gemstone.gemfire.cache.client.internal.PoolImpl;
+import com.gemstone.gemfire.cache.server.CacheServer;
+import com.gemstone.gemfire.cache.wan.GatewayReceiver;
+import com.gemstone.gemfire.cache.wan.GatewayReceiverFactory;
+import com.gemstone.gemfire.cache.wan.GatewaySender;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.PoolFactoryImpl;
+import com.gemstone.gemfire.internal.cache.wan.WANTestBase;
+
+import dunit.Host;
+
+public class WANLocatorServerDUnitTest extends WANTestBase {
+
+ static PoolImpl proxy;
+
+ public WANLocatorServerDUnitTest(String name) {
+ super(name);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ final Host host = Host.getHost(0);
+
+ }
+
+ public void test_3Locators_2Servers() {
+
+ int port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+
+ int port2 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+
+ int port3 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+
+ vm0.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port1 });
+
+ vm1.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port2 });
+
+ vm2.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port3 });
+
+ vm3.invoke(WANLocatorServerDUnitTest.class, "createReceiver", new Object[] {
+ port1, port2, port3 });
+ vm5.invoke(WANLocatorServerDUnitTest.class, "createClient", new Object[] {
+ port1, port2, port3 });
+
+ vm0.invoke(WANLocatorServerDUnitTest.class, "disconnect");
+ vm1.invoke(WANLocatorServerDUnitTest.class, "disconnect");
+ vm2.invoke(WANLocatorServerDUnitTest.class, "disconnect");
+
+ vm0.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port1 });
+
+ vm1.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port2 });
+
+ vm2.invoke(WANLocatorServerDUnitTest.class, "createLocator", new Object[] {
+ port1, port2, port3, port3 });
+
+ vm5.invoke(WANLocatorServerDUnitTest.class, "tryNewConnection");
+
+ }
+
+ public static void createLocator(Integer port1, Integer port2, Integer port3,
+ Integer startingPort) {
+ WANTestBase test = new WANTestBase(testName);
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.DISTRIBUTED_SYSTEM_ID_NAME, "" + 1);
+ props.setProperty(DistributionConfig.LOCATORS_NAME, "localhost[" + port1
+ + "],localhost[" + port2 + "],localhost[" + port3 + "]");
+ props.setProperty(DistributionConfig.START_LOCATOR_NAME, "localhost["
+ + startingPort
+ + "],server=true,peer=true,hostname-for-clients=localhost");
+ test.getSystem(props);
+ }
+
+ public static void createReceiver(Integer port1, Integer port2, Integer port3) {
+ WANTestBase test = new WANTestBase(testName);
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, "localhost[" + port1
+ + "],localhost[" + port2 + "],localhost[" + port3 + "]");
+
+ InternalDistributedSystem ds = test.getSystem(props);
+ cache = CacheFactory.create(ds);
+ GatewayReceiverFactory fact = cache.createGatewayReceiverFactory();
+ int port = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ fact.setStartPort(port);
+ fact.setEndPort(port);
+ fact.setManualStart(true);
+ GatewayReceiver receiver = fact.create();
+ try {
+ receiver.start();
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ fail("Test " + test.getName()
+ + " failed to start GatewayRecevier on port " + port);
+ }
+ }
+
+ public static void createServer(Integer port1, Integer port2, Integer port3) {
+ WANTestBase test = new WANTestBase(testName);
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, "localhost[" + port1
+ + "],localhost[" + port2 + "],localhost[" + port3 + "]");
+
+ InternalDistributedSystem ds = test.getSystem(props);
+ cache = CacheFactory.create(ds);
+ CacheServer server = cache.addCacheServer();
+ int port = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ server.setPort(port);
+ try {
+ server.start();
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ fail("Test " + test.getName() + " failed to start CacheServer on port "
+ + port);
+ }
+ getLogWriter().info(
+ "Server Started on port : " + port + " : server : " + server);
+ }
+
+ public static void disconnect() {
+ WANTestBase test = new WANTestBase(testName);
+ test.getSystem().disconnect();
+ }
+
+ public static void createClient(Integer port1, Integer port2, Integer port3) {
+ ClientCacheFactory cf = new ClientCacheFactory();
+ cache = (Cache)cf.create();
+ PoolFactoryImpl pf = (PoolFactoryImpl)PoolManager.createFactory();
+ pf.setReadTimeout(0);
+ pf.setIdleTimeout(-1);
+ pf.setMinConnections(4);
+ pf.setServerGroup(GatewayReceiver.RECEIVER_GROUP);
+ pf.addLocator("localhost", port1);
+ pf.addLocator("localhost", port2);
+ pf.addLocator("localhost", port3);
+ pf.init((GatewaySender)null);
+ proxy = ((PoolImpl)pf.create("KISHOR_POOL"));
+ Connection con1 = proxy.acquireConnection();
+ try {
+ con1.close(true);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void tryNewConnection() {
+ Connection con1 = null;
+ try {
+ con1 = proxy.acquireConnection();
+ }
+ catch (Exception e) {
+ fail("No Exception expected", e);
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6df75241/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
new file mode 100644
index 0000000..d242ab9
--- /dev/null
+++ b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
@@ -0,0 +1,136 @@
+package com.gemstone.gemfire.internal.cache.wan.misc;
+
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.internal.cache.wan.WANTestBase;
+
+import dunit.DistributedTestCase;
+
+public class WANSSLDUnitTest extends WANTestBase{
+
+ public WANSSLDUnitTest(String name) {
+ super(name);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ public void testSenderSSLReceiverSSL(){
+ Integer lnPort = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ Integer nyPort = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnPort });
+
+ vm2.invoke(WANTestBase.class, "createReceiverWithSSL", new Object[] { nyPort });
+
+ vm4.invoke(WANTestBase.class, "createCacheWithSSL", new Object[] { lnPort });
+
+ vm4.invoke(WANTestBase.class, "createSender", new Object[] { "ln", 2,
+ false, 100, 10, false, false, null, true });
+
+ vm2.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", null, isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "startSender", new Object[] { "ln" });
+
+ vm4.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", "ln", isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "doPuts", new Object[] { testName + "_RR",
+ 1000 });
+
+ vm2.invoke(WANTestBase.class, "validateRegionSize", new Object[] {
+ testName + "_RR", 1000 });
+ }
+
+ public void testSenderNoSSLReceiverSSL() {
+ addExpectedException("Unexpected IOException");
+ addExpectedException("SSL Error");
+ addExpectedException("Unrecognized SSL message");
+ try {
+ Integer lnPort = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ Integer nyPort = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnPort });
+
+ vm2.invoke(WANTestBase.class, "createReceiverWithSSL",
+ new Object[] { nyPort });
+
+ vm4.invoke(WANTestBase.class, "createCache", new Object[] { lnPort });
+
+ vm4.invoke(WANTestBase.class, "createSender", new Object[] { "ln", 2,
+ false, 100, 10, false, false, null, true });
+
+ vm2.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", null, isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "startSender", new Object[] { "ln" });
+
+ vm4.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", "ln", isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "doPuts", new Object[] { testName + "_RR",
+ 1000 });
+
+ vm2.invoke(WANTestBase.class, "validateRegionSize", new Object[] {
+ testName + "_RR", 1000 });
+ fail("Expected exception as only Receiver is SSL enabled. Not Sender");
+ }
+ catch (Exception e) {
+ assertTrue(e.getCause().getMessage().contains("Server expecting SSL connection"));
+ }
+ }
+
+ public void testSenderSSLReceiverNoSSL(){
+ addExpectedException("Acceptor received unknown");
+ addExpectedException("failed accepting client");
+ Integer lnPort = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ Integer nyPort = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnPort });
+
+ vm2.invoke(WANTestBase.class, "createReceiver", new Object[] { nyPort });
+
+ vm4.invoke(WANTestBase.class, "createCacheWithSSL",
+ new Object[] { lnPort });
+
+ vm4.invoke(WANTestBase.class, "createSender", new Object[] { "ln", 2,
+ false, 100, 10, false, false, null, true });
+
+ vm2.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", null, isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "startSender", new Object[] { "ln" });
+
+ vm4.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", "ln", isOffHeap() });
+
+ vm4.invoke(WANTestBase.class, "doPuts", new Object[] { testName + "_RR",
+ 1 });
+
+ Boolean doesSizeMatch = (Boolean)vm2.invoke(WANSSLDUnitTest.class, "ValidateSSLRegionSize", new Object[] {
+ testName + "_RR", 1 });
+
+ assertFalse(doesSizeMatch);
+ }
+
+ public static boolean ValidateSSLRegionSize (String regionName, final int regionSize) {
+ final Region r = cache.getRegion(Region.SEPARATOR + regionName);
+ assertNotNull(r);
+ WaitCriterion wc = new WaitCriterion() {
+ public boolean done() {
+ return false;
+ }
+
+ public String description() {
+ return null;
+ }
+ };
+ DistributedTestCase.waitForCriterion(wc, 2000, 500, false);
+
+ if(r.size() == regionSize){
+ return true;
+ }
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/6df75241/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
new file mode 100644
index 0000000..82cfd62
--- /dev/null
+++ b/gemfire-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanAutoDiscoveryDUnitTest.java
@@ -0,0 +1,549 @@
+/*=========================================================================
+ * Copyright (c) 2010-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
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.gemstone.gemfire.internal.cache.wan.misc;
+
+import java.net.InetSocketAddress;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import com.gemstone.gemfire.GemFireConfigException;
+import com.gemstone.gemfire.IncompatibleSystemException;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.wan.WANTestBase;
+
+import dunit.AsyncInvocation;
+import dunit.Host;
+
+public class WanAutoDiscoveryDUnitTest extends WANTestBase {
+
+
+ public WanAutoDiscoveryDUnitTest(String name) {
+ super(name);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ final Host host = Host.getHost(0);
+
+ }
+
+ /**
+ * Test to validate that sender can not be started without locator started.
+ * else GemFireConfigException will be thrown.
+ */
+ public void test_GatewaySender_Started_Before_Locator() {
+ try {
+ int port = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ vm0.invoke(WANTestBase.class, "createCache", new Object[]{port});
+ vm0.invoke(WANTestBase.class, "createSender", new Object[]{"ln",2,false,100,10,false,false, null, false});
+ fail("Expected GemFireConfigException but not thrown");
+ }
+ catch (Exception e) {
+ if (!(e.getCause() instanceof GemFireConfigException)) {
+ fail("Expected GemFireConfigException but received :", e);
+ }
+ }
+ }
+
+ /**
+ * Test to validate that all locators in one DS should have same name. Though
+ * this test passes, it causes other below tests to fail. In this test, VM1 is
+ * throwing IncompatibleSystemException after startInitLocator. I think, after
+ * throwing this exception, locator is not stopped properly and hence other
+ * tests are failing.
+ *
+ * @throws Exception
+ */
+ public void __test_AllLocatorsinDSShouldHaveDistributedSystemId() throws Exception {
+ try {
+ Integer lnLocPort1 = (Integer)vm0.invoke(
+ WANTestBase.class, "createFirstLocatorWithDSId",
+ new Object[] {1});
+
+ Integer lnLocPort2 = (Integer)vm1.invoke(
+ WANTestBase.class, "createSecondLocator", new Object[] { 2,
+ lnLocPort1 });
+ fail("Expected IncompatibleSystemException but not thrown");
+ }
+ catch (Exception e) {
+ if (!(e.getCause()instanceof IncompatibleSystemException)) {
+ fail("Expected IncompatibleSystemException but received :", e);
+ }
+ }
+ }
+
+ /**
+ * Test to validate that multiple locators added on LN site and multiple
+ * locators on Ny site recognizes each other
+ * @throws Exception
+ */
+ public void test_NY_Recognises_ALL_LN_Locators() throws Exception {
+ ArrayList<Integer> locatorPorts = new ArrayList<Integer>();
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+ dsVsPort.put(1, locatorPorts);
+
+ Integer lnLocPort1 = (Integer)vm0.invoke(
+ WANTestBase.class, "createFirstLocatorWithDSId",
+ new Object[] {1});
+ locatorPorts.add(lnLocPort1);
+
+ Integer lnLocPort2 = (Integer)vm1.invoke(WANTestBase.class,
+ "createSecondLocator", new Object[] { 1, lnLocPort1 });
+ locatorPorts.add(lnLocPort2);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(2, locatorPorts);
+ Integer nyLocPort1 = (Integer)vm2.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnLocPort1 });
+ locatorPorts.add(nyLocPort1);
+
+ Integer nyLocPort2 = (Integer)vm3.invoke(
+ WANTestBase.class, "createSecondRemoteLocator", new Object[] {
+ 2, nyLocPort1, lnLocPort1});
+ locatorPorts.add(nyLocPort2);
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ }
+
+ /**
+ * Test to validate that TK site's locator is recognized by LN and NY. Test to
+ * validate that HK site's locator is recognized by LN , NY, TK.
+ */
+ public void test_NY_Recognises_TK_AND_HK_Through_LN_Locator() {
+
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+
+ ArrayList<Integer> locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(1, locatorPorts);
+
+ Integer lnLocPort1 = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ locatorPorts.add(lnLocPort1);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(2, locatorPorts);
+ Integer nyLocPort1 = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnLocPort1 });
+ locatorPorts.add(nyLocPort1);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(3, locatorPorts);
+ Integer tkLocPort = (Integer)vm2.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 3, lnLocPort1 });
+ locatorPorts.add(tkLocPort);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(4, locatorPorts);
+ Integer hkLocPort = (Integer)vm3.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 4, lnLocPort1 });
+ locatorPorts.add(hkLocPort);
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ }
+
+ public void test_TK_Recognises_LN_AND_NY() {
+
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+
+ ArrayList<Integer> locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(1, locatorPorts);
+
+ Integer lnLocPort1 = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ locatorPorts.add(lnLocPort1);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(2, locatorPorts);
+ Integer nyLocPort1 = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnLocPort1 });
+ locatorPorts.add(nyLocPort1);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(3, locatorPorts);
+ Integer tkLocPort = (Integer)vm2.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 3, nyLocPort1 });
+ locatorPorts.add(tkLocPort);
+
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ }
+
+ public void test_NY_Recognises_TK_AND_HK_Simeltenously() {
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+
+ ArrayList<Integer> locatorPortsln = new ArrayList<Integer>();
+ dsVsPort.put(1, locatorPortsln);
+ Integer lnLocPort1 = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+ locatorPortsln.add(lnLocPort1);
+
+ ArrayList<Integer> locatorPortsny = new ArrayList<Integer>();
+ dsVsPort.put(2, locatorPortsny);
+ Integer nyLocPort1 = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnLocPort1 });
+ locatorPortsny.add(nyLocPort1);
+
+ int AsyncInvocationArrSize = 4;
+ AsyncInvocation[] async = new AsyncInvocation[AsyncInvocationArrSize];
+
+ ArrayList<Integer> locatorPortstk = new ArrayList<Integer>();
+ dsVsPort.put(3, locatorPortstk);
+ async[0] = vm2.invokeAsync(WANTestBase.class, "createFirstRemoteLocator",
+ new Object[] { 3, lnLocPort1 });
+
+ ArrayList<Integer> locatorPortshk = new ArrayList<Integer>();
+ dsVsPort.put(4, locatorPortshk);
+ async[1] = vm3.invokeAsync(
+ WANTestBase.class, "createFirstRemoteLocator", new Object[] {4, nyLocPort1});
+
+ ArrayList<Integer> locatorPortsln2 = new ArrayList<Integer>();
+ async[2] = vm4.invokeAsync(WANTestBase.class,
+ "createSecondLocator", new Object[] { 1, lnLocPort1 });
+
+ ArrayList<Integer> locatorPortsny2 = new ArrayList<Integer>();
+ async[3] = vm5.invokeAsync(WANTestBase.class,
+ "createSecondLocator", new Object[] { 2, nyLocPort1 });
+
+
+ try {
+ async[0].join();
+ async[1].join();
+ async[2].join();
+ async[3].join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ locatorPortstk.add((Integer)async[0].getReturnValue());
+ locatorPortshk.add((Integer)async[1].getReturnValue());
+ locatorPortsln.add((Integer)async[2].getReturnValue());
+ locatorPortsny.add((Integer)async[3].getReturnValue());
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ }
+
+
+ public void test_LN_Sender_recogises_ALL_NY_Locators() {
+
+ Integer lnLocPort1 = (Integer)vm0.invoke(WANTestBase.class,
+ "createFirstLocatorWithDSId", new Object[] { 1 });
+
+ Integer lnLocPort2 = (Integer)vm5.invoke(WANTestBase.class,
+ "createSecondLocator", new Object[] { 1, lnLocPort1 });
+
+ vm2.invoke(WANTestBase.class, "createCache", new Object[]{lnLocPort1, lnLocPort2});
+
+ vm2.invoke(WANTestBase.class, "createSender",
+ new Object[] {"ln",2,false,100,10,false,false, null, true});
+
+ Integer nyLocPort1 = (Integer)vm1.invoke(WANTestBase.class,
+ "createFirstRemoteLocator", new Object[] { 2, lnLocPort1 });
+
+ vm2.invoke(WANTestBase.class, "startSender",new Object[]{"ln"});
+
+ //Since to fix Bug#46289, we have moved call to initProxy in getConnection which will be called only when batch is getting dispatched.
+ //So for locator discovery callback to work, its now expected that atleast try to send a batch so that proxy will be initialized
+ vm2.invoke(WANTestBase.class, "createReplicatedRegion", new Object[] {
+ testName + "_RR", "ln", isOffHeap() });
+
+ vm2.invoke(WANTestBase.class, "doPuts",
+ new Object[] { testName + "_RR", 10});
+
+ Integer nyLocPort2 = (Integer)vm3
+ .invoke(WANTestBase.class, "createSecondRemoteLocator", new Object[] {
+ 2, nyLocPort1, lnLocPort1 });
+
+ InetSocketAddress locatorToWaitFor = new InetSocketAddress("localhost",
+ nyLocPort2);
+
+ vm2.invoke(WANTestBase.class, "checkLocatorsinSender",
+ new Object[] {"ln", locatorToWaitFor });
+
+ Integer nyLocPort3 = (Integer)vm4
+ .invoke(WANTestBase.class, "createSecondRemoteLocator", new Object[] {
+ 2, nyLocPort1, lnLocPort1 });
+
+ locatorToWaitFor = new InetSocketAddress("localhost", nyLocPort3);
+
+ vm2.invoke(WANTestBase.class, "checkLocatorsinSender",
+ new Object[] {"ln", locatorToWaitFor });
+
+ }
+
+
+ public void test_RingTopology() {
+
+ final Set<String> site1LocatorsPort = new HashSet<String>();
+ int site1Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site1LocatorsPort.add("localhost["+site1Port1+"]");
+
+ final Set<String> site2LocatorsPort = new HashSet<String>();
+ int site2Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site2LocatorsPort.add("localhost["+site2Port1+"]");
+
+ final Set<String> site3LocatorsPort = new HashSet<String>();
+ int site3Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site3LocatorsPort.add("localhost["+site3Port1+"]");
+
+ final Set<String> site4LocatorsPort = new HashSet<String>();
+ int site4Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site4LocatorsPort.add("localhost["+site4Port1+"]");
+
+ Map<Integer, Set<String>> dsVsPort = new HashMap<Integer, Set<String>>();
+ dsVsPort.put(1, site1LocatorsPort);
+ dsVsPort.put(2, site2LocatorsPort);
+ dsVsPort.put(3, site3LocatorsPort);
+ dsVsPort.put(4, site4LocatorsPort);
+
+ int AsyncInvocationArrSize = 9;
+ AsyncInvocation[] async = new AsyncInvocation[AsyncInvocationArrSize];
+
+ async[0] = vm0.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 1, site1Port1, site1LocatorsPort, site2LocatorsPort});
+
+ async[1] = vm1.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 2, site2Port1, site2LocatorsPort, site3LocatorsPort});
+
+ async[2] = vm2.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 3, site3Port1, site3LocatorsPort, site4LocatorsPort});
+
+ async[3] = vm3.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 4, site4Port1, site4LocatorsPort, site1LocatorsPort});
+
+ // pause(5000);
+ try {
+ async[0].join();
+ async[1].join();
+ async[2].join();
+ async[3].join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ fail("Could not join async operations");
+ }
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ }
+
+ public void ___test_3Sites3Locators() {
+ final Set<String> site1LocatorsPort = new HashSet<String>();
+ int site1Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site1LocatorsPort.add("localhost["+site1Port1+"]");
+ int site1Port2 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site1LocatorsPort.add("localhost["+site1Port2+"]");
+ int site1Port3 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site1LocatorsPort.add("localhost["+site1Port3+"]");
+
+ final Set<String> site2LocatorsPort = new HashSet<String>();
+ int site2Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site2LocatorsPort.add("localhost["+site2Port1+"]");
+ int site2Port2 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site2LocatorsPort.add("localhost["+site2Port2+"]");
+ int site2Port3 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site2LocatorsPort.add("localhost["+site2Port3+"]");
+
+ final Set<String> site3LocatorsPort = new HashSet<String>();
+ int site3Port1 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site3LocatorsPort.add("localhost["+site3Port1+"]");
+ final int site3Port2 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site3LocatorsPort.add("localhost["+site3Port2+"]");
+ int site3Port3 = AvailablePortHelper.getRandomAvailablePortForDUnitSite();
+ site3LocatorsPort.add("localhost["+site3Port3+"]");
+
+ Map<Integer, Set<String>> dsVsPort = new HashMap<Integer, Set<String>>();
+ dsVsPort.put(1, site1LocatorsPort);
+ dsVsPort.put(2, site2LocatorsPort);
+ dsVsPort.put(3, site3LocatorsPort);
+
+ int AsyncInvocationArrSize = 9;
+ AsyncInvocation[] async = new AsyncInvocation[AsyncInvocationArrSize];
+
+ async[0] = vm0.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 1, site1Port1, site1LocatorsPort, site2LocatorsPort});
+
+ async[8] = vm0.invokeAsync(WANTestBase.class,
+ "checkAllSiteMetaDataFor3Sites", new Object[] {dsVsPort});
+
+ async[1] = vm1.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 1, site1Port2, site1LocatorsPort, site2LocatorsPort});
+ async[2] = vm2.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 1, site1Port3, site1LocatorsPort, site2LocatorsPort});
+
+ async[3] = vm3.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 2, site2Port1, site2LocatorsPort, site3LocatorsPort});
+ async[4] = vm4.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 2, site2Port2, site2LocatorsPort, site3LocatorsPort});
+ async[5] = vm5.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 2, site2Port3, site2LocatorsPort, site3LocatorsPort});
+
+ async[6] = vm6.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 3, site3Port1, site3LocatorsPort, site1LocatorsPort});
+ async[7] = vm7.invokeAsync(WANTestBase.class,
+ "createLocator", new Object[] { 3, site3Port2, site3LocatorsPort, site1LocatorsPort});
+
+ WANTestBase.createLocator(3, site3Port3, site3LocatorsPort, site1LocatorsPort);
+ long startTime = System.currentTimeMillis();
+
+ try {
+ async[0].join();
+ async[1].join();
+ async[2].join();
+ async[3].join();
+ async[4].join();
+ async[5].join();
+ async[6].join();
+ async[7].join();
+ async[8].join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ fail("Could not join async operations");
+ }
+ Long endTime = null;
+ try {
+ endTime = (Long)async[8].getResult();
+ }
+ catch (Throwable e) {
+ e.printStackTrace();
+ fail("Could not get end time", e);
+ }
+
+ getLogWriter().info("Time taken for all 9 locators discovery in 3 sites: " + (endTime.longValue() - startTime));
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm4.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm5.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm6.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ vm7.invoke(WANTestBase.class, "checkAllSiteMetaDataFor3Sites",
+ new Object[] { dsVsPort });
+ WANTestBase.checkAllSiteMetaDataFor3Sites(dsVsPort);
+ }
+
+
+ public void test_LN_Peer_Locators_Exchange_Information() {
+ ArrayList<Integer> locatorPorts = new ArrayList<Integer>();
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+ dsVsPort.put(1, locatorPorts);
+
+ Integer lnLocPort1 = (Integer)vm0.invoke(
+ WANTestBase.class, "createFirstPeerLocator",
+ new Object[] {1});
+ locatorPorts.add(lnLocPort1);
+
+ Integer lnLocPort2 = (Integer)vm1.invoke(WANTestBase.class,
+ "createSecondPeerLocator", new Object[] { 1, lnLocPort1 });
+ locatorPorts.add(lnLocPort2);
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ }
+
+ public void test_LN_NY_TK_5_PeerLocators_1_ServerLocator() {
+ Map<Integer, ArrayList<Integer>> dsVsPort = new HashMap<Integer, ArrayList<Integer>>();
+
+
+ ArrayList<Integer> locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(1, locatorPorts);
+ Integer lnLocPort1 = (Integer)vm0.invoke(
+ WANTestBase.class, "createFirstPeerLocator",
+ new Object[] {1});
+ locatorPorts.add(lnLocPort1);
+ Integer lnLocPort2 = (Integer)vm1.invoke(WANTestBase.class,
+ "createSecondPeerLocator", new Object[] { 1, lnLocPort1 });
+ locatorPorts.add(lnLocPort2);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(2, locatorPorts);
+ Integer nyLocPort1 = (Integer)vm2.invoke(
+ WANTestBase.class, "createFirstRemotePeerLocator",
+ new Object[] {2, lnLocPort1});
+ locatorPorts.add(nyLocPort1);
+ Integer nyLocPort2 = (Integer)vm3.invoke(WANTestBase.class,
+ "createSecondRemotePeerLocator", new Object[] { 2, nyLocPort1, lnLocPort2});
+ locatorPorts.add(nyLocPort2);
+
+ locatorPorts = new ArrayList<Integer>();
+ dsVsPort.put(3, locatorPorts);
+ Integer tkLocPort1 = (Integer)vm4.invoke(
+ WANTestBase.class, "createFirstRemotePeerLocator",
+ new Object[] {3, nyLocPort1});
+ locatorPorts.add(tkLocPort1);
+ Integer tkLocPort2 = (Integer)vm5.invoke(WANTestBase.class,
+ "createSecondRemotePeerLocator", new Object[] { 3, tkLocPort1, nyLocPort1});
+ locatorPorts.add(tkLocPort2);
+ Integer tkLocPort3 = (Integer)vm6.invoke(WANTestBase.class,
+ "createSecondRemoteLocator", new Object[] { 3, tkLocPort1, nyLocPort2});
+ locatorPorts.add(tkLocPort3);
+
+ // pause(5000);
+
+ vm0.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm1.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm2.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm3.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm4.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm5.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+ vm6.invoke(WANTestBase.class, "checkAllSiteMetaData",
+ new Object[] { dsVsPort });
+
+ }
+
+}