http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanValidationsDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanValidationsDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanValidationsDUnitTest.java new file mode 100644 index 0000000..073056f --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/WanValidationsDUnitTest.java @@ -0,0 +1,1507 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.misc; + +import org.junit.Ignore; +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import java.util.ArrayList; +import java.util.Map; + +import org.junit.experimental.categories.Category; + +import com.gemstone.gemfire.cache.wan.GatewayEventFilter; +import com.gemstone.gemfire.cache.wan.GatewaySender.OrderPolicy; +import com.gemstone.gemfire.cache.wan.GatewayTransportFilter; +import com.gemstone.gemfire.cache30.MyGatewayTransportFilter1; +import com.gemstone.gemfire.cache30.MyGatewayTransportFilter2; +import com.gemstone.gemfire.internal.cache.wan.Filter70; +import com.gemstone.gemfire.internal.cache.wan.GatewaySenderConfigurationException; +import com.gemstone.gemfire.internal.cache.wan.GatewaySenderException; +import com.gemstone.gemfire.internal.cache.wan.MyGatewayTransportFilter3; +import com.gemstone.gemfire.internal.cache.wan.MyGatewayTransportFilter4; +import com.gemstone.gemfire.internal.cache.wan.WANTestBase; +import com.gemstone.gemfire.test.dunit.Assert; +import com.gemstone.gemfire.test.dunit.IgnoredException; +import com.gemstone.gemfire.test.dunit.SerializableRunnableIF; +import com.gemstone.gemfire.test.junit.categories.FlakyTest; + +@Category(DistributedTest.class) +public class WanValidationsDUnitTest extends WANTestBase { + + public WanValidationsDUnitTest() { + super(); + } + + /** + * Test to make sure that serial sender Ids configured in Distributed Region + * is same across all DR nodes TODO : Should this validation hold tru now. + * Discuss. If I have 2 members on Which DR is defined. But sender is defined + * on only one member. How can I add the instance on the sender in Region + * which does not have a sender. I can bypass the existing validation for the + * DR with SerialGatewaySender. But for PR with SerialGatewaySender, we need + * to send the adjunct message. Find out the way to send the adjunct message + * to the member on which serialGatewaySender is available. + */ + + @Test + public void testSameSerialGatewaySenderIdAcrossSameDistributedRegion() + throws Exception { + IgnoredException.addIgnoredException("another cache has the same region defined"); + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1)); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator(2, lnPort)); + + createCacheInVMs(lnPort, vm4, vm5); + + vm4.invoke(() -> WANTestBase.createSender("ln1", 2, false, 10, 100, false, false, null, true)); + vm4.invoke(() -> WANTestBase.createSender("ln2", 2, false, 10, 100, false, false, null, true)); + + vm5.invoke(() -> WANTestBase.createSender("ln2", 2, false, 10, 100, false, false, null, true)); + vm5.invoke(() -> WANTestBase.createSender("ln3", 2, false, 10, 100, false, false, null, true)); + + vm4.invoke(() -> WANTestBase.createReplicatedRegion( + getTestMethodName() + "_RR", "ln1,ln2", isOffHeap() )); + + vm5.invoke(() -> WANTestBase.createReplicatedRegion( + getTestMethodName() + "_RR", "ln2,ln3", isOffHeap() )); + fail("Expected IllegalStateException with incompatible gateway sender ids message"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("Cannot create Region"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids message", + e); + } + } + } + + + /** + * Validate that ParallelGatewaySender can be added to Distributed region + * + * @throws Exception + * + * + * Below test is disabled intentionally Replicated region with Parallel Async + * Event queue is not supported. Test is added for the same + * ReplicatedRegion_ParallelWANPropagationDUnitTest#test_DR_PGS_1Nodes_Put_Receiver + * + * We are gone support this configuration in upcoming releases + */ + + @Ignore("Bug51491") + @Test + public void testParallelGatewaySenderForDistributedRegion() throws Exception { + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(lnPort, vm4, vm5); + + vm4.invoke(() -> WANTestBase.createSender( "ln1", 2, + true, 10, 100, false, false, null, false )); + + vm5.invoke(() -> WANTestBase.createSender( "ln2", 2, + true, 10, 100, false, false, null, false )); + + vm4.invoke(() -> WANTestBase.createReplicatedRegion( + getTestMethodName() + "_RR", "ln1", isOffHeap() )); + + vm5.invoke(() -> WANTestBase.createReplicatedRegion( + getTestMethodName() + "_RR", "ln1", isOffHeap() )); + + } + catch (Exception e) { + Assert.fail("Caught Exception", e); + } + } + + /** + * Test to make sure that serial sender Ids configured in partitioned regions + * should be same across all PR members + */ + @Test + public void testSameSerialGatewaySenderIdAcrossSamePartitionedRegion() + throws Exception { + IgnoredException.addIgnoredException("another cache has the same region defined"); + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1)); + + createCacheInVMs(lnPort, vm4, vm5); + + vm4.invoke(() -> WANTestBase.createSender("ln1", 2, false, 10, 100, false, false, null, true)); + vm4.invoke(() -> WANTestBase.createSender("ln2", 2, false, 10, 100, false, false, null, true)); + + vm5.invoke(() -> WANTestBase.createSender("ln2", 2, false, 10, 100, false, false, null, true)); + vm5.invoke(() -> WANTestBase.createSender("ln3", 2, false, 10, 100, false, false, null, true)); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", "ln1,ln2", 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", "ln2,ln3", 1, 100, isOffHeap() )); + fail("Expected IllegalStateException with incompatible gateway sender ids message"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("Cannot create Region"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids message", + e); + } + } + } + + + @Test + public void testReplicatedSerialAsyncEventQueueWithPersistenceEnabled() { + IgnoredException.addIgnoredException("another cache has the same region defined"); + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5); + + + vm4.invoke(() -> WANTestBase.createReplicatedRegionWithAsyncEventQueue( + getTestMethodName() + "_RR", "ln1", isOffHeap() )); + vm5.invoke(() -> WANTestBase.createReplicatedRegionWithAsyncEventQueue( + getTestMethodName() + "_RR", "ln2", isOffHeap() )); + fail("Expected IllegalStateException with incompatible gateway sender ids message"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("Cannot create Region"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids message", + e); + } + } + } + + /** + * Test to make sure that parallel sender Ids configured in partitioned + * regions should be same across all PR members + */ + @Test + public void testSameParallelGatewaySenderIdAcrossSamePartitionedRegion() + throws Exception { + IgnoredException.addIgnoredException("another cache has the same region defined"); + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1)); + + createCacheInVMs(lnPort, vm4, vm5); + + vm4.invoke(() -> WANTestBase.createSender("ln1", 2, true, 10, 100, false, false, null, true)); + vm4.invoke(() -> WANTestBase.createSender("ln2", 2, true, 10, 100, false, false, null, true)); + + vm5.invoke(() -> WANTestBase.createSender("ln2", 2, true, 10, 100, false, false, null, true)); + vm5.invoke(() -> WANTestBase.createSender("ln3", 2, true, 10, 100, false, false, null, true)); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", "ln1,ln2", 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", "ln2,ln3", 1, 100, isOffHeap() )); + + fail("Expected IllegalStateException with incompatible gateway sender ids message"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("Cannot create Region"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids message", + e); + } + } + } + + /** + * Test to make sure that same parallel gateway sender id can be used by 2 + * different PRs + * + * @throws Exception + */ + @Ignore + @Test + public void testSameParallelGatewaySenderIdAcrossDifferentPartitionedRegion() + throws Exception { + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSender("ln1_Parallel", 2, true, 10, 100, false, false, null, true)); + vm1.invoke(() -> WANTestBase.createSender("ln2_Parallel", 2, true, 10, 100, false, false, null, true)); + + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR1", null, "ln1_Parallel,ln2_Parallel", null, isOffHeap() )); + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR2", null, "ln1_Parallel,ln2_Parallel", null, isOffHeap() )); + + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("cannot have the same parallel gateway sender id"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testSameParallelGatewaySenderIdAcrossColocatedPartitionedRegion() + throws Exception { + IgnoredException.addIgnoredException("another cache has the same region defined"); + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSender("ln1_Parallel", 2, true, 10, 100, false, false, null, true)); + vm1.invoke(() -> WANTestBase.createSender("ln2_Parallel", 2, true, 10, 100, false, false, null, true)); + + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR1", null, "ln1_Parallel", null, isOffHeap() )); + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR2", null, "ln1_Parallel,ln2_Parallel", getTestMethodName() + "_PR1", isOffHeap() )); + //now we support this + //fail("Expected IllegalStateException with incompatible gateway sender ids in colocated regions"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("should have same parallel gateway sender ids"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids in colocated regions", + e); + } + } + } + + /** + * Validate that if Colocated partitioned region doesn't want to add a PGS even if its + * parent has one then it is fine + * @throws Exception + */ + + @Test + public void testSameParallelGatewaySenderIdAcrossColocatedPartitionedRegion2() + throws Exception { + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSender("ln1_Parallel", 2, true, 10, 100, false, false, null, true)); + vm1.invoke(() -> WANTestBase.createSender("ln2_Parallel", 2, true, 10, 100, false, false, null, true)); + + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR1", null, "ln1_Parallel", null, isOffHeap() )); + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR2", null, null, getTestMethodName() + "_PR1", isOffHeap() )); + + } + catch (Exception e) { + Assert.fail("The tests caught Exception.", e); + } + } + + /** + * Validate that if Colocated partitioned region has a subset of PGS + * then it is fine. + * @throws Exception + */ + + @Test + public void testSameParallelGatewaySenderIdAcrossColocatedPartitionedRegion3() + throws Exception { + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSender( + "ln1_Parallel", 2, true, 10, 100, false, false, null, true )); + vm1.invoke(() -> WANTestBase.createSender( + "ln2_Parallel", 2, true, 10, 100, false, false, null, true )); + + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR1", null, "ln1_Parallel,ln2_Parallel", null, isOffHeap() )); + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR2", null, "ln1_Parallel", getTestMethodName() + "_PR1", isOffHeap() )); + + } catch (Exception e) { + Assert.fail("The tests caught Exception.", e); + } + } + + /** + * Validate that if Colocated partitioned region has a superset of PGS + * then Exception is thrown. + * @throws Exception + */ + + @Test + public void testSameParallelGatewaySenderIdAcrossColocatedPartitionedRegion4() + throws Exception { + try { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSender("ln1_Parallel", 2, true, 10, 100, false, false, null, true)); + vm1.invoke(() -> WANTestBase.createSender("ln2_Parallel", 2, true, 10, 100, false, false, null, true)); + vm1.invoke(() -> WANTestBase.createSender("ln3_Parallel", 2, true, 10, 100, false, false, null, true)); + + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR1", null, "ln1_Parallel,ln2_Parallel", null, isOffHeap() )); + vm1.invoke(() -> WANTestBase.createPartitionedRegionWithSerialParallelSenderIds( + getTestMethodName() + "_PR2", null, "ln1_Parallel,ln2_Parallel,ln3_Parallel", getTestMethodName() + "_PR1", isOffHeap() )); + //now we support this + //fail("Expected IllegalStateException with incompatible gateway sender ids in colocated regions"); + } catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("should have same parallel gateway sender ids"))) { + Assert.fail( + "Expected IllegalStateException with incompatible gateway sender ids in colocated regions", + e); + } + } + } + + /** + * SerialGatewaySender and ParallelGatewaySender with same name is allowed + */ + @Test + public void testSerialGatewaySenderAndParallelGatewaySenderWithSameName() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, null, true, false )); + try { + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, true, 100, false, false, null, null, true, false )); + fail("Expected IllegalStateException : Sender names should be different."); + } catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("is already defined in this cache"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + //remote ds ids should be same + @Test + public void testSameRemoteDSAcrossSameSender() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, null, + true, false )); + + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 3, false, 100, false, false, null, null, + true, false )); + fail("Expected IllegalStateException : Remote Ds Ids should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with remote ds id"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + // sender with same name should be either serial or parallel but not both. + @Test + public void testSerialSenderOnBothCache() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, null, + true, false )); + + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, true, 100, false, false, null, null, true, false )); + fail("Expected IllegalStateException : is not serial Gateway Sender"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same sender as serial gateway sender"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + // sender with same name should be either serial or parallel but not both. + @Test + public void testParallelSenderOnBothCache(){ + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId(1)); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + true, 100,false, false, + null, null, true, false )); + + try { + vm2 + .invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false,null, null, + true, false )); + fail("Expected IllegalStateException : is not parallel Gateway Sender"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same sender as parallel gateway sender"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + // isBatchConflation should be same across the same sender + @Test + public void testBatchConflation() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false, + null, null, true, false )); + + // isBatchConflation + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100,true, false, + null, null, true, false )); + fail("Expected IllegalStateException : isBatchConflation Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("another cache has the same Gateway Sender defined with isBatchConflationEnabled"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + //isPersistentEnabled should be same across the same sender + @Test + public void testisPersistentEnabled() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false, + null, null, true, false )); + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100,false, true, null, null, true, false )); + fail("Expected IllegalStateException : isPersistentEnabled Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same Gateway Sender defined with isPersistentEnabled"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testAlertThreshold() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false, + null, null, true, false )); + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 50, false, false, null, null, true, false )); + fail("Expected IllegalStateException : alertThreshold Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same Gateway Sender defined with alertThreshold"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testManualStart() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false, + null, null, true, false )); + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( "ln", 2, + false, 100, false, false, null, null, false, false )); + fail("Expected IllegalStateException : manualStart Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same Gateway Sender defined with manual start"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testGatewayEventFilters() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + ArrayList<GatewayEventFilter> eventFilters = new ArrayList<GatewayEventFilter>(); + eventFilters.add(new MyGatewayEventFilter()); + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, eventFilters, + null, true, false )); + try { + eventFilters.clear(); + eventFilters.add(new Filter70()); + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, + eventFilters, null, true, false )); + fail("Expected IllegalStateException : GatewayEventFilters Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with GatewayEventFilters"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testGatewayEventFilters2() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + ArrayList<GatewayEventFilter> eventFilters = new ArrayList<GatewayEventFilter>(); + eventFilters.add(new MyGatewayEventFilter()); + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, eventFilters, + null, true, false )); + try { + eventFilters.clear(); + eventFilters.add(new MyGatewayEventFilter()); + eventFilters.add(new Filter70()); + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, + eventFilters, null, true, false )); + fail("Expected IllegalStateException : GatewayEventFilters Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with GatewayEventFilters"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testGatewayTransportFilters() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + ArrayList<GatewayTransportFilter> transportFilters = new ArrayList<GatewayTransportFilter>(); + transportFilters.add(new MyGatewayTransportFilter1()); + transportFilters.add(new MyGatewayTransportFilter2()); + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, + transportFilters, true, false )); + try { + transportFilters.clear(); + transportFilters.add(new MyGatewayTransportFilter3()); + transportFilters.add(new MyGatewayTransportFilter4()); + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, + null, transportFilters, true, false )); + fail("Expected IllegalStateException : GatewayEventFilters Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with GatewayTransportFilters"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testGatewayTransportFiltersOrder() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + ArrayList<GatewayTransportFilter> transportFilters = new ArrayList<GatewayTransportFilter>(); + transportFilters.add(new MyGatewayTransportFilter1()); + transportFilters.add(new MyGatewayTransportFilter2()); + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, + transportFilters, true, false )); + try { + transportFilters.clear(); + transportFilters.add(new MyGatewayTransportFilter2()); + transportFilters.add(new MyGatewayTransportFilter1()); + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, + null, transportFilters, true, false )); + fail("Expected IllegalStateException : GatewayEventFilters Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with GatewayTransportFilters"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + + @Test + public void testIsDiskSynchronous() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, + null, true, false )); + + try { + vm2.invoke(() -> WANTestBase.createSenderForValidations( + "ln", 2, false, 100, false, false, null, + null, true, true )); + fail("Expected IllegalStateException : isDiskSynchronous Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage() + .contains("because another cache has the same Gateway Sender defined with isDiskSynchronous"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + /** + * This test has been added for the defect # 44372. + * A single VM hosts a bridge server as well as a Receiver. + * Expected: Cache.getCacheServer should return only the Bridge server and not the Receiver + */ + @Test + public void test_GetCacheServersDoesNotReturnReceivers() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4); + vm4.invoke(() -> WANTestBase.createReceiver()); + + vm4.invoke(() -> WANTestBase.createCacheServer( )); + + Map cacheServers = (Map) vm4.invoke(() -> WANTestBase.getCacheServers( )); + + assertEquals("Cache.getCacheServers returned incorrect BridgeServers: ", 1, cacheServers.get("BridgeServer")); + assertEquals("Cache.getCacheServers returned incorrect ReceiverServers: ", 0, cacheServers.get("ReceiverServer")); + } + + /** + * Added for the defect # 44372. + * Two VMs are part of the DS. + * One VM hosts a Bridge server while the other hosts a Receiver. + * Expected: Cache.getCacheServers should only return the bridge server and not the Receiver. + */ + @Test + public void test_GetCacheServersDoesNotReturnReceivers_Scenario2() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + createCacheInVMs(lnPort, vm4); + vm4.invoke(() -> WANTestBase.createReceiver()); + createCacheInVMs(lnPort, vm5); + + vm5.invoke(() -> WANTestBase.createCacheServer( )); + + Map cacheServers_vm4 = (Map) vm4.invoke(() -> WANTestBase.getCacheServers( )); + Map cacheServers_vm5 = (Map) vm5.invoke(() -> WANTestBase.getCacheServers( )); + + assertEquals("Cache.getCacheServers on vm4 returned incorrect BridgeServers: ", 0, cacheServers_vm4.get("BridgeServer")); + assertEquals("Cache.getCacheServers on vm4 returned incorrect ReceiverServers: ", 0, cacheServers_vm4.get("ReceiverServer")); + + assertEquals("Cache.getCacheServers on vm5 returned incorrect BridgeServers: ", 1, cacheServers_vm5.get("BridgeServer")); + assertEquals("Cache.getCacheServers on vm5 returned incorrect ReceiverServers: ", 0, cacheServers_vm5.get("ReceiverServer")); + + } + + + // dispatcher threads are same across all the nodes for ParallelGatewaySender + /* + * We are allowing number of dispatcher threads for parallel sender to differ + * on number of machines + */ + @Ignore + @Test + public void testDispatcherThreadsForParallelGatewaySender() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createConcurrentSender( "ln", 2, + true, 100, 10, false, false, null, true, 5, OrderPolicy.KEY )); + + // dispatcher threads + try { + vm2.invoke(() -> WANTestBase.createConcurrentSender( "ln", 2, + true, 100, 10, false, false, null, true, 4, OrderPolicy.KEY )); + fail("Expected IllegalStateException : dispatcher threads Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same Gateway Sender defined with dispatcherThread"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + + // dispatcher threads are same across all the nodes for ParallelGatewaySender + /* + * For Parallel sender, thread policy is not supported which is checked at the + * time of sender creation. policy KEY and Partition are same for PGS. Hence + * disabling the tests + */ + @Ignore + @Test + public void testOrderPolicyForParallelGatewaySender() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm1, vm2); + + vm1.invoke(() -> WANTestBase.createConcurrentSender( "ln", 2, + true, 100, 10, false, false, null, true, 5, OrderPolicy.KEY )); + + // dispatcher threads + try { + vm2.invoke(() -> WANTestBase.createConcurrentSender( "ln", 2, + true, 100, 10, false, false, null, true, 5, OrderPolicy.PARTITION )); + fail("Expected IllegalStateException : order policy Should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof IllegalStateException) + || !(e.getCause().getMessage().contains("because another cache has the same Gateway Sender defined with orderPolicy"))) { + Assert.fail("Expected IllegalStateException", e); + } + } + } + + @Test + public void testBug50434_RR_Serial() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(createReceiverReplicatedRegion()); + vm2.invoke(() -> WANTestBase.createReceiver()); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + + vm4.invoke(() -> WANTestBase.startSender( "ln" )); + + vm4.invoke(createReceiverReplicatedRegion()); + vm5.invoke(createReceiverReplicatedRegion()); + vm6.invoke(createReceiverReplicatedRegion()); + vm7.invoke(createReceiverReplicatedRegion()); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_RR", + 10 )); + fail("Expected GatewaySenderConfigurationException : Sender Ids should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, gateway sender ids should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + @Test + public void testBug50434_RR_SerialAsyncEventQueue() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + + vm4.invoke(createReceiverReplicatedRegion()); + vm5.invoke(createReceiverReplicatedRegion()); + vm6.invoke(createReceiverReplicatedRegion()); + vm7.invoke(createReceiverReplicatedRegion()); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_RR", + 1000 )); + fail("Expected GatewaySenderConfigurationException : AsyncEvent queue IDs should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, AsyncEvent queue IDs should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + protected SerializableRunnableIF createReceiverReplicatedRegion() { + return () -> WANTestBase.createReplicatedRegion( + getTestMethodName() + "_RR", null, isOffHeap() ); + } + + @Test + public void testBug50434_RR_Serial_Pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(createReceiverReplicatedRegion()); + vm2.invoke(() -> WANTestBase.createReceiver()); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + + vm4.invoke(() -> WANTestBase.startSender( "ln" )); + + vm4.invoke(createReceiverReplicatedRegion()); + vm5.invoke(createReceiverReplicatedRegion()); + vm6.invoke(createReceiverReplicatedRegion()); + vm7.invoke(createReceiverReplicatedRegion()); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + vm6.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + vm7.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_RR", "ln")); + + vm4.invoke(() -> WANTestBase.waitForSenderRunningState( "ln" )); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_RR", + 10)); + + vm2.invoke(() -> WANTestBase.validateRegionSize( + getTestMethodName() + "_RR", 10)); + } + + @Test + public void testBug50434_RR_SerialAsyncEventQueue_Pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + + vm4.invoke(createReceiverReplicatedRegion()); + vm5.invoke(createReceiverReplicatedRegion()); + vm6.invoke(createReceiverReplicatedRegion()); + vm7.invoke(createReceiverReplicatedRegion()); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + vm6.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + vm7.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_RR", "ln" )); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_RR", + 1000 )); + + vm4.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 1000 ));// primary sender + vm5.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + vm6.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + vm7.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + } + + @Test + public void testBug50434_PR_Serial() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(() -> WANTestBase.createReceiver()); + vm2.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_RR", null, 1, 100, isOffHeap() )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm5.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm6.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm7.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + + startSenderInVMs("ln", vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + + vm4.invoke(() -> WANTestBase.waitForSenderRunningState( "ln" )); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 10)); + fail("Expected GatewaySenderConfigurationException : Sender Ids should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, gateway sender ids should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + @Test + public void testBug50434_PR_SerialAsyncEventQueue() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 1000 )); + fail("Expected GatewaySenderConfigurationException : AsyncEvent queue IDs should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, AsyncEvent queue IDs should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + @Test + public void testBug50434_PR_Serial_Pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(() -> WANTestBase.createReceiver()); + vm2.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm5.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm6.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm7.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + + startSenderInVMs("ln", vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm6.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm7.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + + vm4.invoke(() -> WANTestBase.waitForSenderRunningState( "ln" )); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 10)); + + vm4.invoke(() -> WANTestBase.validateQueueContents( "ln", + 0)); + + vm2.invoke(() -> WANTestBase.validateRegionSize( + getTestMethodName() + "_PR", 10)); + } + + @Test + public void testBug50434_PR_SerialAsyncEventQueue_Pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + false, 100, 100, false, false, null, false )); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 100, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm6.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm7.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 1000 )); + + vm4.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 1000 ));// primary sender + vm5.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + vm6.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + vm7.invoke(() -> WANTestBase.validateAsyncEventListener( + "ln", 0 ));// secondary + } + + @Test + public void testBug50434_PR_Parallel() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm2.invoke(() -> WANTestBase.createReceiver()); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + vm5.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + startSenderInVMs("ln", vm4, vm5); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + + vm4.invoke(() -> WANTestBase.waitForSenderRunningState( "ln" )); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 10)); + fail("Expected GatewaySenderConfigurationException : Sender Ids should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, gateway sender ids should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + @Test + public void testBug50434_PR_ParallelAsyncEventQueue() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + + try { + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 10)); + fail("Expected GatewaySenderConfigurationException : AsyncEvent queue IDs should match"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderConfigurationException) + || !(e.getCause().getMessage() + .contains("For region across all members, AsyncEvent queue IDs should be same."))) { + Assert.fail("Expected GatewaySenderConfigurationException", e); + } + } + } + + @Category(FlakyTest.class) // GEODE-1019: random ports, time sensitive, waitForCriterion, suspect string: loss of quorum + @Test + public void testBug50434_PR_Parallel_pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + createCacheInVMs(nyPort, vm2); + vm2.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm2.invoke(() -> WANTestBase.createReceiver()); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + vm5.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + vm6.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + vm7.invoke(() -> WANTestBase.createSender( "ln", 2, + true, 100, 10, false, false, null, true )); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap())); + + startSenderInVMs("ln", vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm5.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm6.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + vm7.invoke(() -> WANTestBase.addSenderThroughAttributesMutator( + getTestMethodName() + "_PR", "ln")); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 10)); + + vm2.invoke(() -> WANTestBase.validateRegionSize( + getTestMethodName() + "_PR", 10)); + } + + @Test + public void testBug50434_PR_ParallelAsyncEventQueue_Pass() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( "ln", + true, 100, 100, false, false, null, false )); + + vm4.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm5.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm6.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + vm7.invoke(() -> WANTestBase.createPartitionedRegion( + getTestMethodName() + "_PR", null, 1, 10, isOffHeap() )); + + vm4.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm5.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm6.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + vm7.invoke(() -> WANTestBase.addAsyncEventQueueThroughAttributesMutator( getTestMethodName() + "_PR", "ln" )); + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", + 256 )); + + vm4.invoke(() -> WANTestBase.waitForAsyncQueueToGetEmpty( "ln" )); + vm5.invoke(() -> WANTestBase.waitForAsyncQueueToGetEmpty( "ln" )); + vm6.invoke(() -> WANTestBase.waitForAsyncQueueToGetEmpty( "ln" )); + vm7.invoke(() -> WANTestBase.waitForAsyncQueueToGetEmpty( "ln" )); + + int vm4size = (Integer)vm4.invoke(() -> WANTestBase.getAsyncEventListenerMapSize( "ln")); + int vm5size = (Integer)vm5.invoke(() -> WANTestBase.getAsyncEventListenerMapSize( "ln")); + int vm6size = (Integer)vm6.invoke(() -> WANTestBase.getAsyncEventListenerMapSize( "ln")); + int vm7size = (Integer)vm7.invoke(() -> WANTestBase.getAsyncEventListenerMapSize( "ln")); + + assertEquals(vm4size + vm5size + vm6size + vm7size, 256); + } + + @Test + public void testBug51367_WrongBindAddressOnGatewayReceiver() throws Exception { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + vm2.invoke(() -> WANTestBase.createReceiverWithBindAddress( lnPort )); + } + + + @Test + public void testBug50247_NonPersistentSenderWithPersistentRegion() + throws Exception { + IgnoredException.addIgnoredException("could not get remote locator information"); + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + + createCacheInVMs(lnPort, vm4, vm5); + + try { + vm4.invoke(() -> WANTestBase.createSender( "ln1", 2, + true, 10, 100, false, false, null, false )); + vm4.invoke(() -> WANTestBase.createPartitionedRegionWithPersistence( getTestMethodName() + "_PR", "ln1", 1, 100 )); + fail("Expected GatewaySenderException with incompatible gateway sender ids and region"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderException) + || !(e.getCause().getMessage() + .contains("can not be attached to persistent region "))) { + Assert.fail( + "Expected GatewaySenderException with incompatible gateway sender ids and region", + e); + } + } + + try { + vm5.invoke(() -> WANTestBase.createPartitionedRegionWithPersistence( getTestMethodName() + "_PR", "ln1", 1, 100 )); + vm5.invoke(() -> WANTestBase.createSender( "ln1", 2, + true, 10, 100, false, false, null, false )); + fail("Expected GatewaySenderException with incompatible gateway sender ids and region"); + } + catch (Exception e) { + if (!(e.getCause() instanceof GatewaySenderException) + || !(e.getCause().getMessage() + .contains("can not be attached to persistent region "))) { + Assert.fail( + "Expected GatewaySenderException with incompatible gateway sender ids and region", + e); + } + } + } + + /** + * Test configuration:: + * + * Region: Replicated WAN: Serial Number of WAN sites: 2 Region persistence + * enabled: false Async channel persistence enabled: false + */ + @Test + public void testReplicatedSerialAsyncEventQueueWith2WANSites() { + Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 )); + Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort )); + + // ------------ START - CREATE CACHE, REGION ON LOCAL SITE ------------// + createCacheInVMs(lnPort, vm4, vm5, vm6, vm7); + + vm4.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + vm5.invoke(() -> WANTestBase.createSender( "ln", 2, + false, 100, 10, false, false, null, true )); + + vm4.invoke(() -> WANTestBase.createAsyncEventQueue( + "lnAsync", false, 100, 100, false, false, null, false )); + vm5.invoke(() -> WANTestBase.createAsyncEventQueue( + "lnAsync", false, 100, 100, false, false, null, false )); + vm6.invoke(() -> WANTestBase.createAsyncEventQueue( + "lnAsync", false, 100, 100, false, false, null, false )); + vm7.invoke(() -> WANTestBase.createAsyncEventQueue( + "lnAsync", false, 100, 100, false, false, null, false )); + + startSenderInVMs("ln", vm4, vm5); + + vm4.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ln", "lnAsync", isOffHeap() )); + vm5.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ln", "lnAsync", isOffHeap() )); + vm6.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ln", "lnAsync", isOffHeap() )); + vm7.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ln", "lnAsync", isOffHeap() )); + // ------------- END - CREATE CACHE, REGION ON LOCAL SITE -------------// + + // ------------- START - CREATE CACHE ON REMOTE SITE ---------------// + createCacheInVMs(nyPort, vm2, vm3); + createReceiverInVMs(vm2, vm3); + + vm2.invoke(() -> WANTestBase.createSender( "ny", 1, + false, 100, 10, false, false, null, true )); + vm3.invoke(() -> WANTestBase.createSender( "ny", 1, + false, 100, 10, false, false, null, true )); + + vm2.invoke(() -> WANTestBase.createAsyncEventQueue( + "nyAsync", false, 100, 100, false, false, null, false )); + vm3.invoke(() -> WANTestBase.createAsyncEventQueue( + "nyAsync", false, 100, 100, false, false, null, false )); + + startSenderInVMs("ny", vm2, vm3); + + vm2.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ny", "nyAsync", isOffHeap() )); + vm3.invoke(() -> WANTestBase.createReplicatedRegionWithSenderAndAsyncEventQueue( + getTestMethodName() + "_RR", "ny", "nyAsync", isOffHeap() )); + + // ------------- END - CREATE CACHE, REGION ON REMOTE SITE -------------// + + vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_RR", + 1000 )); + + // validate AsyncEventListener on local site + vm4.invoke(() -> WANTestBase.validateAsyncEventListener( "lnAsync", 1000 ));// primary sender + vm5.invoke(() -> WANTestBase.validateAsyncEventListener( "lnAsync", 0 ));// secondary + vm6.invoke(() -> WANTestBase.validateAsyncEventListener( "lnAsync", 0 ));// secondary + vm7.invoke(() -> WANTestBase.validateAsyncEventListener( "lnAsync", 0 ));// secondary + + // validate region size on remote site + vm2.invoke(() -> WANTestBase.validateRegionSize( + getTestMethodName() + "_RR", 1000 )); + vm3.invoke(() -> WANTestBase.validateRegionSize( + getTestMethodName() + "_RR", 1000 )); + + // validate AsyncEventListener on remote site + vm2.invoke(() -> WANTestBase.validateAsyncEventListener( "nyAsync", 1000 ));// primary sender + vm3.invoke(() -> WANTestBase.validateAsyncEventListener( "nyAsync", 0 ));// secondary + + } +}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest.java new file mode 100644 index 0000000..1b8d2e7 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.concurrent.ConcurrentParallelGatewaySenderOperation_2_DUnitTest; + +@Category(DistributedTest.class) +public class ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest + extends ConcurrentParallelGatewaySenderOperation_2_DUnitTest { + + public ConcurrentParallelGatewaySenderOperation_2_OffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperation_2_OffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperation_2_OffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperation_2_OffHeapDUnitTest.java new file mode 100644 index 0000000..37631a8 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperation_2_OffHeapDUnitTest.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderOperation_2_DUnitTest; + +@Category(DistributedTest.class) +public class ParallelGatewaySenderOperation_2_OffHeapDUnitTest + extends ParallelGatewaySenderOperation_2_DUnitTest{ + + public ParallelGatewaySenderOperation_2_OffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java new file mode 100644 index 0000000..b735a18 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderOperationsOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderOperationsDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelGatewaySenderOperationsOffHeapDUnitTest extends + ParallelGatewaySenderOperationsDUnitTest { + + public ParallelGatewaySenderOperationsOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderQueueOverflowOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderQueueOverflowOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderQueueOverflowOffHeapDUnitTest.java new file mode 100644 index 0000000..de87b09 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelGatewaySenderQueueOverflowOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelGatewaySenderQueueOverflowDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelGatewaySenderQueueOverflowOffHeapDUnitTest extends + ParallelGatewaySenderQueueOverflowDUnitTest { + + public ParallelGatewaySenderQueueOverflowOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANConflationOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANConflationOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANConflationOffHeapDUnitTest.java new file mode 100644 index 0000000..44ebefd --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANConflationOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelWANConflationDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelWANConflationOffHeapDUnitTest extends + ParallelWANConflationDUnitTest { + + public ParallelWANConflationOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest.java new file mode 100644 index 0000000..31fe21b --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelWANPersistenceEnabledGatewaySenderDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest extends + ParallelWANPersistenceEnabledGatewaySenderDUnitTest { + + public ParallelWANPersistenceEnabledGatewaySenderOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationConcurrentOpsOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationConcurrentOpsOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationConcurrentOpsOffHeapDUnitTest.java new file mode 100644 index 0000000..1dca0c9 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationConcurrentOpsOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelWANPropagationConcurrentOpsDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelWANPropagationConcurrentOpsOffHeapDUnitTest extends + ParallelWANPropagationConcurrentOpsDUnitTest { + + public ParallelWANPropagationConcurrentOpsOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationOffHeapDUnitTest.java new file mode 100644 index 0000000..b08b5c2 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/ParallelWANPropagationOffHeapDUnitTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelWANPropagationDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class ParallelWANPropagationOffHeapDUnitTest extends ParallelWANPropagationDUnitTest { + + public ParallelWANPropagationOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f39e2394/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/SerialGatewaySenderQueueOffHeapDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/SerialGatewaySenderQueueOffHeapDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/SerialGatewaySenderQueueOffHeapDUnitTest.java new file mode 100644 index 0000000..b75faf0 --- /dev/null +++ b/geode-wan/src/test/java/org/apache/geode/internal/cache/wan/offheap/SerialGatewaySenderQueueOffHeapDUnitTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.internal.cache.wan.offheap; + +import org.junit.experimental.categories.Category; +import org.junit.Test; + +import static org.junit.Assert.*; + +import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase; +import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase; +import com.gemstone.gemfire.test.junit.categories.DistributedTest; + +import com.gemstone.gemfire.internal.cache.wan.serial.SerialGatewaySenderQueueDUnitTest; + +@SuppressWarnings("serial") +@Category(DistributedTest.class) +public class SerialGatewaySenderQueueOffHeapDUnitTest extends + SerialGatewaySenderQueueDUnitTest { + + public SerialGatewaySenderQueueOffHeapDUnitTest() { + super(); + } + + @Override + public boolean isOffHeap() { + return true; + } + +}
