Repository: incubator-geode
Updated Branches:
  refs/heads/develop 59e4c447e -> 0620b059e


GEODE-933: Refactored test code to stabilize it

        * Made sure the senders are running before the puts are started.
        * Correct order of creation of cache, region and senders/receivers.
        * Code assumed to be stabilized from refactoring of WANTestBase
        * Removing the FlakyTest tag.
        * Test assumed to be stable until it fails again.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/0620b059
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/0620b059
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/0620b059

Branch: refs/heads/develop
Commit: 0620b059e99c15f0b472523992b0263bac81dbfa
Parents: 59e4c44
Author: nabarun <n...@pivotal.io>
Authored: Mon Aug 1 16:10:52 2016 -0700
Committer: nabarun <n...@pivotal.io>
Committed: Mon Aug 1 16:15:42 2016 -0700

----------------------------------------------------------------------
 ...arallelGatewaySenderOperationsDUnitTest.java | 59 +++++++++++++++-----
 1 file changed, 44 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0620b059/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
 
b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
index a1036f4..4981c97 100644
--- 
a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
+++ 
b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
@@ -249,50 +249,79 @@ public class ParallelGatewaySenderOperationsDUnitTest 
extends WANTestBase {
   /**
    * Normal scenario in which a sender is stopped and then started again.
    */
-  @Category(FlakyTest.class) // GEODE-933: thread sleeps, random ports, async 
actions, time sensitive
   @Test
   public void testParallelPropagationSenderStartAfterStop() throws Exception {
     IgnoredException.addIgnoredException("Broken pipe");
     Integer[] locatorPorts = createLNAndNYLocators();
     Integer lnPort = locatorPorts[0];
     Integer nyPort = locatorPorts[1];
+    String regionName = getTestMethodName() + "_PR";
 
-    createSendersReceiversAndPartitionedRegion(lnPort, nyPort, false, true);
+
+    createCacheInVMs(nyPort, vm2, vm3);
+    createCacheInVMs(lnPort, vm4, vm5, vm6, vm7);
+
+    vm2.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+    vm3.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+
+    createReceiverInVMs(vm2, vm3);
+
+    vm4.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+    vm5.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+    vm6.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+    vm7.invoke(() -> createPartitionedRegion(regionName, "ln", 1, 100, 
isOffHeap()));
+
+    vm4.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, 
true));
+    vm5.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, 
true));
+    vm6.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, 
true));
+    vm7.invoke(() -> createSender("ln", 2, true, 100, 10, false, false, null, 
true));
+
+    startSenderInVMs("ln", vm4, vm5, vm6, vm7);
 
     //make sure all the senders are running before doing any puts
-    waitForSendersRunning();
+    vm4.invoke(() -> waitForSenderRunningState("ln"));
+    vm5.invoke(() -> waitForSenderRunningState("ln"));
+    vm6.invoke(() -> waitForSenderRunningState("ln"));
+    vm7.invoke(() -> waitForSenderRunningState("ln"));
     
     //FIRST RUN: now, the senders are started. So, do some of the puts
-    vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", 200 ));
+    vm4.invoke(() -> WANTestBase.doPuts( regionName, 200 ));
     
     //now, stop all of the senders
-    stopSenders();
-    
-    Wait.pause(2000);
-    
+    vm4.invoke(() -> stopSender("ln"));
+    vm5.invoke(() -> stopSender("ln"));
+    vm6.invoke(() -> stopSender("ln"));
+    vm7.invoke(() -> stopSender("ln"));
+
+    //Region size on remote site should remain same and below the number of 
puts done in the FIRST RUN
+    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200 
));
+
     //SECOND RUN: do some of the puts after the senders are stopped
-    vm4.invoke(() -> WANTestBase.doPuts( getTestMethodName() + "_PR", 1000 ));
+    vm4.invoke(() -> WANTestBase.doPuts( regionName, 1000 ));
     
     //Region size on remote site should remain same and below the number of 
puts done in the FIRST RUN
-    vm2.invoke(() -> 
WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200 ));
+    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200 
));
     
     //start the senders again
     startSenderInVMs("ln", vm4, vm5, vm6, vm7);
 
+    vm4.invoke(() -> waitForSenderRunningState("ln"));
+    vm5.invoke(() -> waitForSenderRunningState("ln"));
+    vm6.invoke(() -> waitForSenderRunningState("ln"));
+    vm7.invoke(() -> waitForSenderRunningState("ln"));
+
     //Region size on remote site should remain same and below the number of 
puts done in the FIRST RUN
-    vm2.invoke(() -> 
WANTestBase.validateRegionSizeRemainsSame(getTestMethodName() + "_PR", 200 ));
+    vm2.invoke(() -> WANTestBase.validateRegionSizeRemainsSame(regionName, 200 
));
 
     //SECOND RUN: do some more puts
-    AsyncInvocation async = vm4.invokeAsync(() -> WANTestBase.doPuts( 
getTestMethodName() + "_PR", 1000 ));
+    AsyncInvocation async = vm4.invokeAsync(() -> WANTestBase.doPuts( 
regionName, 1000 ));
     async.join();
     
-    Wait.pause(2000);
-    
     //verify all the buckets on all the sender nodes are drained
     validateParallelSenderQueueAllBucketsDrained();
     
     //verify the events propagate to remote site
-    vm2.invoke(() -> WANTestBase.validateRegionSize(getTestMethodName() + 
"_PR", 1000 ));
+    vm2.invoke(() -> WANTestBase.validateRegionSize(regionName, 1000 ));
     
     vm4.invoke(() -> WANTestBase.validateQueueSizeStat( "ln", 0 ));
     vm5.invoke(() -> WANTestBase.validateQueueSizeStat( "ln", 0 ));

Reply via email to