Skip to content

Commit 2d93fc5

Browse files
committed
Add three test to check the removing of the buckets
1 parent 6583833 commit 2d93fc5

1 file changed

Lines changed: 64 additions & 5 deletions

File tree

src/test/java/org/example/filter/RateLimitingFilterTest.java

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import org.junit.jupiter.api.extension.ExtendWith;
88
import org.mockito.Mock;
99
import org.mockito.junit.jupiter.MockitoExtension;
10-
11-
import java.net.http.HttpResponse;
1210
import java.util.HashMap;
1311

1412
import static org.example.http.HttpResponseBuilder.SC_OK;
@@ -32,11 +30,11 @@ void setUp(){
3230
request = new HttpRequest("GET", "/", "HTTP/1.1", new HashMap<>(), "");
3331
request.setAttribute("clientIp", "127.0.0.1");
3432
response = new HttpResponseBuilder();
35-
filter.clearBuckets();
33+
filter.destroy();
3634
}
3735

3836
@Test
39-
void shouldAllowRequestWhenTokensAreAvailable(){
37+
void shouldAllowRequest_WhenTokensAreAvailable(){
4038

4139
filter.doFilter(request, response, filterChain);
4240

@@ -45,7 +43,7 @@ void shouldAllowRequestWhenTokensAreAvailable(){
4543
}
4644

4745
@Test
48-
void shouldNotAllowRequestWhenTokensAreNotAvailable(){
46+
void shouldNotAllowRequest_WhenTokensAreNotAvailable(){
4947

5048
//capacity of the bucket is 10
5149
for(int i = 0; i < 11; i++ )
@@ -75,5 +73,66 @@ void shouldHaveSeparateBucketsPerIp(){
7573
assertEquals(SC_OK, response2.getStatusCode());
7674
}
7775

76+
@Test
77+
void shouldDeleteOldBuckets_WhenSizeIsMoreThanThreshold(){
78+
79+
filter.init();
80+
81+
for(int i = 0; i < 1001; i++ ){
82+
String fakeIp = "192.168.1." + i;
83+
request.setAttribute("clientIp", fakeIp);
84+
filter.doFilter(request, response, filterChain);
85+
}
86+
87+
assertEquals(1001, filter.getBucketsCount());
88+
89+
filter.ageBucketsForTesting(3600000);
90+
filter.cleanupIdleBuckets();
91+
92+
assertEquals(0, filter.getBucketsCount());
93+
}
94+
95+
@Test
96+
void shouldNotDeleteOldBuckets_WhenSizeIsLessThanThreshold(){
97+
filter.init();
98+
99+
for(int i = 0; i < 1000; i++ ){
100+
String fakeIp = "192.168.1." + i;
101+
request.setAttribute("clientIp", fakeIp);
102+
filter.doFilter(request, response, filterChain);
103+
}
104+
105+
assertEquals(1000, filter.getBucketsCount());
106+
107+
filter.ageBucketsForTesting(3600000);
108+
filter.cleanupIdleBuckets();
109+
110+
assertEquals(1000, filter.getBucketsCount());
111+
112+
}
113+
114+
@Test
115+
void shouldDeleteOnlyExpiredBuckets_WhenAreOld(){
116+
filter.init();
117+
118+
for(int i = 0; i < 1001; i++ ){
119+
String fakeIp = "192.168.1." + i;
120+
request.setAttribute("clientIp", fakeIp);
121+
filter.doFilter(request, response, filterChain);
122+
}
123+
124+
assertEquals(1001, filter.getBucketsCount());
78125

126+
filter.ageBucketsForTesting(3600000);
127+
128+
for(int i = 0; i < 500; i++ ){
129+
String fakeIp = "192.168.1." + i;
130+
request.setAttribute("clientIp", fakeIp);
131+
filter.doFilter(request, response, filterChain);
132+
}
133+
134+
filter.cleanupIdleBuckets();
135+
136+
assertEquals(500, filter.getBucketsCount());
137+
}
79138
}

0 commit comments

Comments
 (0)