You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/03/25 05:48:54 UTC
[pulsar] 04/14: [fix][test] Fix wrong retry behavior in MetadataCacheTest (#14778)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 973eadd084b4d99a5098f02596bc762b947a2c00
Author: Kai Wang <kw...@streamnative.io>
AuthorDate: Tue Mar 22 00:13:54 2022 +0800
[fix][test] Fix wrong retry behavior in MetadataCacheTest (#14778)
(cherry picked from commit f89001743b43ade0d1c0fa0440e2d03676e9b3ed)
---
.../apache/pulsar/metadata/MetadataCacheTest.java | 32 ++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
index 70ed621..322c9bb 100644
--- a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
+++ b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/MetadataCacheTest.java
@@ -36,6 +36,7 @@ import java.util.TreeMap;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Predicate;
import java.util.function.Supplier;
import lombok.AllArgsConstructor;
import lombok.Cleanup;
@@ -555,4 +556,35 @@ public class MetadataCacheTest extends BaseMetadataStoreTest {
assertEquals(res.getValue().b, 2);
assertEquals(res.getValue().path, key1);
}
+
+ public static void assertEqualsAndRetry(Supplier<Object> actual,
+ Object expected,
+ Object expectedAndRetry) throws Exception {
+ assertEqualsAndRetry(actual, expected, expectedAndRetry, 5, 100);
+ }
+
+ public static void assertEqualsAndRetry(Supplier<Object> actual,
+ Object expected,
+ Object expectedAndRetry,
+ int retryCount,
+ long intSleepTimeInMillis) throws Exception {
+ assertTrue(retryStrategically((__) -> {
+ if (actual.get().equals(expectedAndRetry)) {
+ return false;
+ }
+ assertEquals(actual.get(), expected);
+ return true;
+ }, retryCount, intSleepTimeInMillis));
+ }
+
+ public static boolean retryStrategically(Predicate<Void> predicate, int retryCount, long intSleepTimeInMillis)
+ throws Exception {
+ for (int i = 0; i < retryCount; i++) {
+ if (predicate.test(null)) {
+ return true;
+ }
+ Thread.sleep(intSleepTimeInMillis + (intSleepTimeInMillis * i));
+ }
+ return false;
+ }
}