@@ -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