Fix flaky test CurrentLedgerRolloverIfFullTest (#10004)
Fixes #10003
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CurrentLedgerRolloverIfFullTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CurrentLedgerRolloverIfFullTest.java
index 5b7a91d..1bb8dcb 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CurrentLedgerRolloverIfFullTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/CurrentLedgerRolloverIfFullTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.pulsar.broker.service;
+import java.time.Duration;
import java.util.concurrent.TimeUnit;
import lombok.Cleanup;
import org.apache.bookkeeper.mledger.ManagedLedgerConfig;
@@ -26,25 +27,29 @@
import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
+import org.awaitility.Awaitility;
import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = "broker")
public class CurrentLedgerRolloverIfFullTest extends BrokerTestBase {
+ @BeforeClass
@Override
protected void setup() throws Exception {
-
+ baseSetup();
}
+ @AfterClass(alwaysRun = true)
@Override
protected void cleanup() throws Exception {
-
+ internalCleanup();
}
@Test
public void testCurrentLedgerRolloverIfFull() throws Exception {
- super.baseSetup();
final String topicName = "persistent://prop/ns-abc/CurrentLedgerRolloverIfFullTest";
@Cleanup
@@ -85,15 +90,22 @@
// all the messages have been acknowledged
// and all the ledgers have been removed except the the last ledger
- Thread.sleep(500);
- Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1);
- Assert.assertNotEquals(managedLedger.getCurrentLedgerSize(), 0);
+ Awaitility.await()
+ .pollInterval(Duration.ofMillis(500L))
+ .untilAsserted(() -> {
+ Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1);
+ Assert.assertNotEquals(managedLedger.getCurrentLedgerSize(), 0);
+ });
// trigger a ledger rollover
- // the last ledger will be closed and removed and we have one ledger for empty
managedLedger.rollCurrentLedgerIfFull();
- Thread.sleep(1000);
- Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1);
- Assert.assertEquals(managedLedger.getTotalSize(), 0);
+
+ // the last ledger will be closed and removed and we have one ledger for empty
+ Awaitility.await()
+ .pollInterval(Duration.ofMillis(1000L))
+ .untilAsserted(() -> {
+ Assert.assertEquals(managedLedger.getLedgersInfoAsList().size(), 1);
+ Assert.assertEquals(managedLedger.getTotalSize(), 0);
+ });
}
}