Skip to content

Commit bfeb067

Browse files
committed
테스트 리팩토링
1 parent 893d16f commit bfeb067

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

rate-limiter/src/test/java/io/github/gunkim/ratelimiter/tokenbucket/TokenBucketTest.java

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,47 +23,44 @@ void setUp() {
2323

2424
@Test
2525
void 토큰이_없는_경우_요청이_무시된다() {
26-
var tokenBucket = new TokenBucket(0, 20_000);
27-
tokenBucket.request(request);
28-
Mockito.verify(request, never()).run();
29-
}
30-
31-
@Test
32-
void 토큰이_최대치일_때_모든_요청이_처리된다() {
33-
var tokenBucket = new TokenBucket(10, 20_000);
34-
for (int i = 0; i < 10; i++) {
26+
try (var tokenBucket = new TokenBucket(0, 20_000)) {
3527
tokenBucket.request(request);
28+
Mockito.verify(request, never()).run();
3629
}
37-
Mockito.verify(request, times(10)).run();
3830
}
3931

4032
@Test
41-
void 토큰이_모두_사용된_후_나머지_요청이_무시된다() {
42-
var tokenBucket = new TokenBucket(3, 20_000);
43-
for (int i = 0; i < 6; i++) {
44-
tokenBucket.request(request);
33+
void 토큰이_최대치일_때_모든_요청이_처리된다() {
34+
try (var tokenBucket = new TokenBucket(10, 20_000)) {
35+
for (int i = 0; i < 10; i++) {
36+
tokenBucket.request(request);
37+
}
38+
Mockito.verify(request, times(10)).run();
4539
}
46-
Mockito.verify(request, times(3)).run();
4740
}
4841

4942
@Test
50-
void 단일_스레드_환경에서_정상_작동한다() {
51-
var tokenBucket = new TokenBucket(5, 1000);
52-
for (int i = 0; i < 7; i++) {
53-
tokenBucket.request(request);
43+
void 토큰이_모두_사용된_후_나머지_요청이_무시된다() {
44+
try (var tokenBucket = new TokenBucket(3, 20_000)) {
45+
for (int i = 0; i < 6; i++) {
46+
tokenBucket.request(request);
47+
}
48+
Mockito.verify(request, times(3)).run();
5449
}
55-
Mockito.verify(request, times(5)).run();
5650
}
5751

5852
@Test
59-
void 다중_스레드_환경에서_정상_작동한다() throws InterruptedException {
60-
var tokenBucket = new TokenBucket(100, 5_000);
61-
ExecutorService taskExecutor = Executors.newFixedThreadPool(10);
62-
for (int i = 0; i < 150; i++) {
63-
taskExecutor.execute(() -> tokenBucket.request(request));
53+
void 다중_스레드_환경에서_정상_작동한다() {
54+
try (var tokenBucket = new TokenBucket(100, 5_000)) {
55+
ExecutorService taskExecutor = Executors.newFixedThreadPool(10);
56+
for (int i = 0; i < 150; i++) {
57+
taskExecutor.execute(() -> tokenBucket.request(request));
58+
}
59+
taskExecutor.shutdown();
60+
taskExecutor.awaitTermination(1_000, TimeUnit.MILLISECONDS);
61+
Mockito.verify(request, times(100)).run();
62+
} catch (InterruptedException e) {
63+
throw new RuntimeException(e);
6464
}
65-
taskExecutor.shutdown();
66-
taskExecutor.awaitTermination(1000, TimeUnit.MILLISECONDS);
67-
Mockito.verify(request, times(100)).run();
6865
}
6966
}

0 commit comments

Comments
 (0)