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"));
