1717
1818package org .opensearch .security .auth .limiting ;
1919
20- import org .junit .Ignore ;
20+ import java .util .concurrent .atomic .AtomicLong ;
21+ import java .util .function .LongSupplier ;
22+
2123import org .junit .Test ;
2224
2325import org .opensearch .security .util .ratetracking .HeapBasedRateTracker ;
2729
2830public class HeapBasedRateTrackerTest {
2931
32+ private final AtomicLong currentTime = new AtomicLong (1 );
33+ private LongSupplier timeProvider = () -> currentTime .getAndAdd (1 );
34+
3035 @ Test
3136 public void simpleTest () throws Exception {
32- HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 5 , 100_000 );
37+ HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 5 , 100_000 , timeProvider );
3338
3439 assertFalse (tracker .track ("a" ));
3540 assertFalse (tracker .track ("a" ));
@@ -40,9 +45,8 @@ public void simpleTest() throws Exception {
4045 }
4146
4247 @ Test
43- @ Ignore // https://github.com/opensearch-project/security/issues/2193
4448 public void expiryTest () throws Exception {
45- HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 5 , 100_000 );
49+ HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 5 , 100_000 , timeProvider );
4650
4751 assertFalse (tracker .track ("a" ));
4852 assertFalse (tracker .track ("a" ));
@@ -58,42 +62,41 @@ public void expiryTest() throws Exception {
5862
5963 assertFalse (tracker .track ("c" ));
6064
61- Thread . sleep (50 );
65+ currentTime . addAndGet (50 );
6266
6367 assertFalse (tracker .track ("c" ));
6468 assertFalse (tracker .track ("c" ));
6569 assertFalse (tracker .track ("c" ));
6670
67- Thread . sleep (55 );
71+ currentTime . addAndGet (55 );
6872
6973 assertFalse (tracker .track ("c" ));
7074 assertTrue (tracker .track ("c" ));
7175
7276 assertFalse (tracker .track ("a" ));
7377
74- Thread . sleep (55 );
78+ currentTime . addAndGet (55 );
7579 assertFalse (tracker .track ("c" ));
7680 assertFalse (tracker .track ("c" ));
7781 assertTrue (tracker .track ("c" ));
7882
7983 }
8084
8185 @ Test
82- @ Ignore // https://github.com/opensearch-project/security/issues/2193
8386 public void maxTwoTriesTest () throws Exception {
84- HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 2 , 100_000 );
87+ HeapBasedRateTracker <String > tracker = new HeapBasedRateTracker <>(100 , 2 , 100_000 , timeProvider );
8588
8689 assertFalse (tracker .track ("a" ));
8790 assertTrue (tracker .track ("a" ));
8891
8992 assertFalse (tracker .track ("b" ));
90- Thread . sleep (50 );
93+ currentTime . addAndGet (50 );
9194 assertTrue (tracker .track ("b" ));
9295
93- Thread . sleep (55 );
96+ currentTime . addAndGet (55 );
9497 assertTrue (tracker .track ("b" ));
9598
96- Thread . sleep (105 );
99+ currentTime . addAndGet (105 );
97100 assertFalse (tracker .track ("b" ));
98101 assertTrue (tracker .track ("b" ));
99102
0 commit comments