GEODE-688: Changing 1 second pause to a wait in AsyncEventListenerDUnit

This test was pausing for 1 second, and hoping that redundancy recovery
happened in the mean time. I changed the code to actually wait for
redundancy recovery to finish.


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

Branch: refs/heads/feature/GEODE-2420
Commit: 0deb9576206e32fadd116fdce74cfbbdf3f49194
Parents: 33e65ba
Author: Dan Smith <[email protected]>
Authored: Mon Mar 20 13:37:39 2017 -0700
Committer: Ken Howe <[email protected]>
Committed: Mon Mar 27 14:00:41 2017 -0700

----------------------------------------------------------------------
 .../cache/wan/AsyncEventQueueTestBase.java        | 18 +++++++++++++++++-
 .../asyncqueue/AsyncEventListenerDUnitTest.java   |  9 +++------
 2 files changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/0deb9576/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
index 8b0c719..1595e99 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/AsyncEventQueueTestBase.java
@@ -35,8 +35,11 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.geode.internal.cache.control.InternalResourceManager;
+import 
org.apache.geode.internal.cache.control.InternalResourceManager.ResourceObserver;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.DataSerializable;
@@ -664,10 +667,22 @@ public class AsyncEventQueueTestBase extends 
JUnit4DistributedTestCase {
    * Create PartitionedRegion with 1 redundant copy
    */
   public static void createPRWithRedundantCopyWithAsyncEventQueue(String 
regionName,
-      String asyncEventQueueId, Boolean offHeap) {
+      String asyncEventQueueId, Boolean offHeap) throws InterruptedException {
     IgnoredException exp =
         
IgnoredException.addIgnoredException(ForceReattemptException.class.getName());
 
+
+    CountDownLatch recoveryDone = new CountDownLatch(2);
+
+    ResourceObserver observer = new 
InternalResourceManager.ResourceObserverAdapter() {
+      @Override
+      public void recoveryFinished(Region region) {
+        recoveryDone.countDown();
+      }
+    };
+    InternalResourceManager.setResourceObserver(observer);
+
+
     try {
       AttributesFactory fact = new AttributesFactory();
 
@@ -679,6 +694,7 @@ public class AsyncEventQueueTestBase extends 
JUnit4DistributedTestCase {
       Region r = 
cache.createRegionFactory(fact.create()).addAsyncEventQueueId(asyncEventQueueId)
           .create(regionName);
       assertNotNull(r);
+      recoveryDone.await();
     } finally {
       exp.remove();
     }

http://git-wip-us.apache.org/repos/asf/geode/blob/0deb9576/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
index 69c2caa..b7adff0 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
@@ -1466,7 +1466,6 @@ public class AsyncEventListenerDUnitTest extends 
AsyncEventQueueTestBase {
    * Test case to test possibleDuplicates. vm1 & vm2 are hosting the PR. vm2 
is killed and
    * subsequently vm3 is brought up. Buckets are now rebalanced between vm1 & 
vm3.
    */
-  @Category(FlakyTest.class) // GEODE-688: random ports, thread sleeps, async 
actions
   @Test
   public void testParallelAsyncEventQueueHA_Scenario2() {
     Integer lnPort =
@@ -1493,8 +1492,6 @@ public class AsyncEventListenerDUnitTest extends 
AsyncEventQueueTestBase {
 
     vm1.invoke(pauseAsyncEventQueueRunnable());
     vm2.invoke(pauseAsyncEventQueueRunnable());
-    Wait.pause(1000);// pause for the batchTimeInterval to make sure the 
AsyncQueue
-    // is paused
 
     LogWriterUtils.getLogWriter().info("Paused the AsyncEventQueue");
 
@@ -1519,9 +1516,9 @@ public class AsyncEventListenerDUnitTest extends 
AsyncEventQueueTestBase {
 
     // ------------------------------------------------------------------
 
-    Wait.pause(1000);// give some time for rebalancing to happen
-    Set<Integer> primaryBucketsvm3 = (Set<Integer>) vm3.invoke(
-        () -> 
AsyncEventQueueTestBase.getAllPrimaryBucketsOnTheNode(getTestMethodName() + 
"_PR"));
+    String regionName = getTestMethodName() + "_PR";
+    Set<Integer> primaryBucketsvm3 = (Set<Integer>) vm3
+        .invoke(() -> 
AsyncEventQueueTestBase.getAllPrimaryBucketsOnTheNode(regionName));
 
     vm1.invoke(() -> AsyncEventQueueTestBase.resumeAsyncEventQueue("ln"));
 

Reply via email to