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() )
{