This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 6f44d5cf3af817a60ac72a2c15378f58fe688d32
Author: Enrico Olivelli <[email protected]>
AuthorDate: Thu Jun 17 20:52:38 2021 +0200

    Make Metadata Tests less Flaky (#10955)
    
    Co-authored-by: Enrico Olivelli <[email protected]>
    (cherry picked from commit 21ea76c15531976326e7319e551646ab698f9bc7)
---
 pulsar-metadata/pom.xml                            |  7 ++++++-
 .../org/apache/pulsar/metadata/ZKSessionTest.java  | 23 ++++++++++++----------
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/pulsar-metadata/pom.xml b/pulsar-metadata/pom.xml
index e18a75e..c61e41e 100644
--- a/pulsar-metadata/pom.xml
+++ b/pulsar-metadata/pom.xml
@@ -31,7 +31,6 @@
 
   <artifactId>pulsar-metadata</artifactId>
   <name>Pulsar Metadata</name>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.pulsar</groupId>
@@ -59,6 +58,12 @@
     </dependency>
 
     <dependency>
+      <groupId>org.awaitility</groupId>
+      <artifactId>awaitility</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
       <groupId>org.apache.bookkeeper</groupId>
       <artifactId>bookkeeper-server</artifactId>
     </dependency>
diff --git 
a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/ZKSessionTest.java 
b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/ZKSessionTest.java
index f565a8f..24c4bd7 100644
--- 
a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/ZKSessionTest.java
+++ 
b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/ZKSessionTest.java
@@ -26,7 +26,6 @@ import static org.testng.Assert.assertTrue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
-import java.util.function.Consumer;
 
 import lombok.Cleanup;
 
@@ -40,6 +39,7 @@ import 
org.apache.pulsar.metadata.api.extended.MetadataStoreExtended;
 import org.apache.pulsar.metadata.api.extended.SessionEvent;
 import org.apache.pulsar.metadata.coordination.impl.CoordinationServiceImpl;
 import org.apache.pulsar.metadata.impl.ZKMetadataStore;
+import org.awaitility.Awaitility;
 import org.testng.annotations.Test;
 
 public class ZKSessionTest extends BaseMetadataStoreTest {
@@ -61,10 +61,10 @@ public class ZKSessionTest extends BaseMetadataStoreTest {
         assertEquals(e, SessionEvent.ConnectionLost);
 
         zks.start();
-        e = sessionEvents.poll(10, TimeUnit.SECONDS);
+        e = sessionEvents.poll(20, TimeUnit.SECONDS);
         assertEquals(e, SessionEvent.Reconnected);
 
-        e = sessionEvents.poll(1, TimeUnit.SECONDS);
+        e = sessionEvents.poll(5, TimeUnit.SECONDS);
         assertNull(e);
     }
 
@@ -130,9 +130,9 @@ public class ZKSessionTest extends BaseMetadataStoreTest {
         e = sessionEvents.poll(10, TimeUnit.SECONDS);
         assertEquals(e, SessionEvent.SessionReestablished);
 
-        Thread.sleep(2_000);
-
-        assertFalse(lock.getLockExpiredFuture().isDone());
+        Awaitility.await().untilAsserted(() -> {
+            assertFalse(lock.getLockExpiredFuture().isDone());
+        });
 
         assertTrue(store.get(path).join().isPresent());
     }
@@ -171,7 +171,10 @@ public class ZKSessionTest extends BaseMetadataStoreTest {
         e = sessionEvents.poll(10, TimeUnit.SECONDS);
         assertEquals(e, SessionEvent.SessionLost);
 
-        assertEquals(le1.getState(), LeaderElectionState.Leading);
+        Awaitility.await().untilAsserted(() -> {
+            assertEquals(le1.getState(), LeaderElectionState.Leading);
+        });
+
         les = leaderElectionEvents.poll();
         assertNull(les);
 
@@ -180,9 +183,9 @@ public class ZKSessionTest extends BaseMetadataStoreTest {
         e = sessionEvents.poll(10, TimeUnit.SECONDS);
         assertEquals(e, SessionEvent.SessionReestablished);
 
-        Thread.sleep(2_000);
-
-        assertEquals(le1.getState(), LeaderElectionState.Leading);
+        Awaitility.await().untilAsserted(() -> {
+                    assertEquals(le1.getState(), LeaderElectionState.Leading);
+        });
         les = leaderElectionEvents.poll();
         assertNull(les);
 

Reply via email to