Skip to content

Commit 59b9648

Browse files
steveguryrobertroeser
authored andcommitted
Add unit-test for FairLeaseGovernor (#149)
I had written this test for PR #147, but failed to add it.
1 parent 1cf1e64 commit 59b9648

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.reactivesocket.lease;
2+
3+
import io.reactivesocket.Frame;
4+
import io.reactivesocket.internal.Responder;
5+
import org.junit.Test;
6+
7+
import java.util.concurrent.TimeUnit;
8+
9+
import static org.junit.Assert.*;
10+
import static org.mockito.Mockito.mock;
11+
12+
public class FairLeaseGovernorTest {
13+
14+
@Test(timeout = 10_000L)
15+
public void testAcceptRefuseLease() throws InterruptedException {
16+
int n = 10;
17+
FairLeaseGovernor governor = new FairLeaseGovernor(n, 100, TimeUnit.MILLISECONDS);
18+
Responder responder = mock(Responder.class);
19+
Frame frame = mock(Frame.class);
20+
21+
governor.register(responder);
22+
Thread.sleep(10);
23+
24+
assertTrue("First request is accepted", governor.accept(responder, frame));
25+
for (int i = 1; i < n; i++) {
26+
assertTrue("Subsequent requests are accepted", governor.accept(responder, frame));
27+
}
28+
assertFalse("11th request is refused", governor.accept(responder, frame));
29+
30+
Thread.sleep(100);
31+
assertTrue("After some time, requests are accepted again", governor.accept(responder, frame));
32+
}
33+
34+
@Test(timeout = 1000_000L)
35+
public void testLeaseFairness() throws InterruptedException {
36+
FairLeaseGovernor governor = new FairLeaseGovernor(4, 1000, TimeUnit.MILLISECONDS);
37+
Responder responder1 = mock(Responder.class);
38+
Responder responder2 = mock(Responder.class);
39+
Frame frame = mock(Frame.class);
40+
41+
governor.register(responder1);
42+
governor.register(responder2);
43+
Thread.sleep(10);
44+
45+
assertTrue("First request is accepted on responder 1", governor.accept(responder1, frame));
46+
assertTrue("First request is accepted on responder 2", governor.accept(responder2, frame));
47+
assertTrue("Second request is accepted on responder 1", governor.accept(responder1, frame));
48+
assertFalse("Third request is refused on responder 1", governor.accept(responder1, frame));
49+
assertTrue("Second request is accepted on responder 2", governor.accept(responder2, frame));
50+
}
51+
}

0 commit comments

Comments
 (0)