Skip to content

Commit d3aeb55

Browse files
authored
[fix][test] Fix flaky RateLimiterTest.testDispatchRate (#25846)
1 parent 36d0c1c commit d3aeb55

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

pulsar-common/src/test/java/org/apache/pulsar/common/util/RateLimiterTest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.concurrent.atomic.AtomicInteger;
2727
import java.util.function.Supplier;
2828
import lombok.Cleanup;
29+
import org.awaitility.Awaitility;
2930
import org.testng.annotations.Test;
3031

3132
public class RateLimiterTest {
@@ -201,13 +202,13 @@ public void testDispatchRate() throws Exception {
201202
rate.tryAcquire(100);
202203
assertEquals(rate.getAvailablePermits(), 0);
203204

204-
Thread.sleep(rateTimeMSec * 2);
205-
// check after two rate-time: acquiredPermits is 100
206-
assertEquals(rate.getAvailablePermits(), 0);
207-
208-
Thread.sleep(rateTimeMSec);
209-
// check after three rate-time: acquiredPermits is 0
210-
assertTrue(rate.getAvailablePermits() > 0);
205+
// Each scheduled renew releases `permits` (100) from acquiredPermits (which starts at 300).
206+
// Wait until the renew task has run enough times to make permits available again. Polling
207+
// avoids flakiness caused by scheduler jitter under CI load that delays fixed-rate ticks.
208+
Awaitility.await()
209+
.atMost(rateTimeMSec * 10, TimeUnit.MILLISECONDS)
210+
.pollInterval(100, TimeUnit.MILLISECONDS)
211+
.until(() -> rate.getAvailablePermits() > 0);
211212

212213
rate.close();
213214
}

0 commit comments

Comments
 (0)