| 28 | |
| 29 | |
| 30 | TEST(LimiterTest, Acquire) |
| 31 | { |
| 32 | int permits = 2; |
| 33 | Duration duration = Milliseconds(5); |
| 34 | |
| 35 | RateLimiter limiter(permits, duration); |
| 36 | Milliseconds interval = duration / permits; |
| 37 | |
| 38 | Clock::pause(); |
| 39 | |
| 40 | Future<Nothing> acquire1 = limiter.acquire(); |
| 41 | Future<Nothing> acquire2 = limiter.acquire(); |
| 42 | Future<Nothing> acquire3 = limiter.acquire(); |
| 43 | |
| 44 | AWAIT_READY(acquire1); |
| 45 | |
| 46 | Clock::advance(interval); |
| 47 | AWAIT_READY(acquire2); |
| 48 | EXPECT_TRUE(acquire3.isPending()); |
| 49 | |
| 50 | Clock::advance(interval); |
| 51 | AWAIT_READY(acquire3); |
| 52 | } |
| 53 | |
| 54 | |
| 55 | // In this test 4 permits are given, but the 2nd permit's acquire |