diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml index 8cd2e51a36..49f6f5a4df 100644 --- a/curator-recipes/pom.xml +++ b/curator-recipes/pom.xml @@ -86,6 +86,12 @@ commons-math test + + + org.awaitility + awaitility + test + diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderSelector.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderSelector.java index 44e026900c..7ec8aaaac2 100644 --- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderSelector.java +++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderSelector.java @@ -40,6 +40,7 @@ import org.apache.curator.test.Timing; import org.apache.curator.test.compatibility.Timing2; import org.apache.curator.utils.CloseableUtils; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import java.util.Arrays; @@ -721,10 +722,8 @@ public void takeLeadership(CuratorFramework client) throws Exception leaderSelector1.start(); leaderSelector2.start(); - while ( !leaderSelector1.hasLeadership() && !leaderSelector2.hasLeadership() ) - { - Thread.sleep(1000); - } + Awaitility.await() + .until(()-> leaderSelector1.hasLeadership() || leaderSelector2.hasLeadership()); assertNotSame(leaderSelector1.hasLeadership(), leaderSelector2.hasLeadership()); diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessMutexBase.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessMutexBase.java index 3a25e288bc..f2177b59bd 100644 --- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessMutexBase.java +++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/locks/TestInterProcessMutexBase.java @@ -37,6 +37,7 @@ import org.apache.curator.utils.CloseableUtils; import org.apache.curator.utils.ZKPaths; import org.apache.zookeeper.KeeperException; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import java.util.List; @@ -343,10 +344,8 @@ public Object call() throws Exception if ( isFirst.compareAndSet(true, false) ) { semaphore.release(THREAD_QTY - 1); - while ( semaphore.availablePermits() > 0 ) - { - Thread.sleep(100); - } + Awaitility.await() + .until(()-> semaphore.availablePermits() <= 0); } else { @@ -538,11 +537,8 @@ public Object call() throws Exception } ); - while ( !mutexForClient1.isAcquiredInThisProcess() && !mutexForClient2.isAcquiredInThisProcess() ) - { - Thread.sleep(1000); - assertFalse(future1.isDone() && future2.isDone()); - } + Awaitility.await() + .until(()-> mutexForClient1.isAcquiredInThisProcess() || mutexForClient2.isAcquiredInThisProcess()); assertTrue(mutexForClient1.isAcquiredInThisProcess() != mutexForClient2.isAcquiredInThisProcess()); Thread.sleep(1000); diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedIdQueue.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedIdQueue.java index c2a81ab10d..b2f187405a 100644 --- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedIdQueue.java +++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedIdQueue.java @@ -28,6 +28,7 @@ import org.apache.curator.framework.state.ConnectionState; import org.apache.curator.framework.state.ConnectionStateListener; import org.apache.curator.retry.RetryOneTime; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.List; @@ -106,13 +107,8 @@ public void testOrdering() throws Exception queue.put(new TestQueueItem(id), id); } - int iteration = 0; - while ( consumer.size() < ITEM_QTY ) - { - assertTrue(++iteration < ITEM_QTY); - Thread.sleep(1000); - } - + Awaitility.await() + .until(()-> consumer.size() >= ITEM_QTY); int i = 0; for ( TestQueueItem item : consumer.getItems() ) { diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedQueue.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedQueue.java index e9f60140b4..6e6efebc0d 100644 --- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedQueue.java +++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/queue/TestDistributedQueue.java @@ -38,6 +38,7 @@ import org.apache.curator.retry.RetryOneTime; import org.apache.curator.test.Timing; import org.apache.zookeeper.CreateMode; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.ArrayList; @@ -250,19 +251,15 @@ public void putMultiCompleted(MultiItem items) ExecutorService service = Executors.newCachedThreadPool(); service.submit(producer); - int iteration = 0; - while ( consumer.size() < itemQty ) - { - assertTrue(++iteration < 10); - Thread.sleep(1000); - } + Awaitility.await() + .until(()->consumer.size() >= itemQty); int i = 0; for ( TestQueueItem item : consumer.getItems() ) { assertEquals(item.str, Integer.toString(i++)); } - + assertEquals(listenerCalls.get(), itemQty); } finally @@ -271,7 +268,7 @@ public void putMultiCompleted(MultiItem items) CloseableUtils.closeQuietly(client); } } - + @Test public void testErrorMode() throws Exception { @@ -475,7 +472,7 @@ public void consumeMessage(TestQueueItem message) throws Exception throw new Exception("dummy"); // simulate a crash } } - + addToTakenItems(message, takenItems, itemQty); synchronized(takenItemsForConsumer1) { @@ -679,12 +676,8 @@ public void testMultiPutterSingleGetter() throws Exception service.submit(producer1); service.submit(producer2); - int iteration = 0; - while ( consumer.size() < itemQty ) - { - assertTrue(++iteration < 10); - Thread.sleep(1000); - } + Awaitility.await() + .until(()-> consumer.size() >= itemQty); List items = consumer.getItems(); @@ -776,13 +769,8 @@ public void testSimple() throws Exception ExecutorService service = Executors.newCachedThreadPool(); service.submit(producer); - int iteration = 0; - while ( consumer.size() < itemQty ) - { - assertTrue(++iteration < 10); - Thread.sleep(1000); - } - + Awaitility.await() + .until(()->consumer.size() >= itemQty); int i = 0; for ( TestQueueItem item : consumer.getItems() ) {