29
29
import java .util .function .Function ;
30
30
import java .util .function .Supplier ;
31
31
import org .junit .jupiter .api .Test ;
32
- import org .mockito .Mockito ;
33
32
import software .amazon .awssdk .auth .token .credentials .SdkToken ;
34
33
import software .amazon .awssdk .core .exception .SdkClientException ;
35
34
import software .amazon .awssdk .core .exception .SdkException ;
@@ -173,38 +172,38 @@ public void prefetchToken_whenTokenNotStale_and_withinPrefetchTime() throws Inte
173
172
174
173
CachedTokenRefresher cachedTokenRefresher = CachedTokenRefresher .builder ()
175
174
.asyncRefreshEnabled (true )
176
- .staleDuration (Duration .ofMillis (3 ))
175
+ .staleDuration (Duration .ofMillis (1000 ))
177
176
.tokenRetriever (mockCache )
178
177
.prefetchTime (Duration .ofMillis (1500 ))
179
178
.build ();
180
179
181
180
// Sleep is invoked to make sure executor executes refresh in initializeCachedSupplier() in NonBlocking CachedSupplier.PrefetchStrategy
182
- Thread .sleep (2 );
183
- verify (mockCache , times (1 )).get ();
181
+ Thread .sleep (1000 );
182
+ verify (mockCache , times (0 )).get ();
184
183
SdkToken firstRetrieved = cachedTokenRefresher .refreshIfStaleAndFetch ();
185
184
assertThat (firstRetrieved ).isEqualTo (firstToken );
186
185
187
- Thread .sleep (10 );
186
+ Thread .sleep (1000 );
188
187
// Sleep to make sure the Async prefetch thread is picked up
189
- verify (mockCache , times (2 )).get ();
188
+ verify (mockCache , times (1 )).get ();
190
189
SdkToken secondRetrieved = cachedTokenRefresher .refreshIfStaleAndFetch ();
191
190
// Note that since the token has already been prefetched mockCache.get() is not called again thus it is secondToken.
192
191
assertThat (secondRetrieved ).isEqualTo (secondToken );
193
192
194
- Thread .sleep (10 );
193
+ Thread .sleep (1000 );
195
194
// Sleep to make sure the Async prefetch thread is picked up
196
- verify (mockCache , times (3 )).get ();
195
+ verify (mockCache , times (2 )).get ();
197
196
SdkToken thirdRetrievedToken = cachedTokenRefresher .refreshIfStaleAndFetch ();
198
197
assertThat (thirdRetrievedToken ).isEqualTo (thirdToken );
199
198
200
199
// Sleep to make sure the Async prefetch thread is picked up
201
- Thread .sleep (10 );
202
- verify (mockCache , times (4 )).get ();
200
+ Thread .sleep (1000 );
201
+ verify (mockCache , times (3 )).get ();
203
202
SdkToken fourthRetrievedToken = cachedTokenRefresher .refreshIfStaleAndFetch ();
204
203
assertThat (fourthRetrievedToken ).isEqualTo (fourthToken );
205
204
206
205
// Sleep to make sure the Async prefetch thread is picked up
207
- Thread .sleep (10 );
206
+ Thread .sleep (1000 );
208
207
verify (mockCache , times (4 )).get ();
209
208
SdkToken fifthToken = cachedTokenRefresher .refreshIfStaleAndFetch ();
210
209
// Note that since Fourth token's expiry date is too high the prefetch is no longer done and the last fetch token is used.
@@ -221,11 +220,12 @@ public void refreshEveryTime_when_ExpirationDateDoesNotExist() throws Interrupte
221
220
TestToken token2 = TestToken .builder ().token ("token2" ).build ();
222
221
when (supplier .get ()).thenReturn (token1 ).thenReturn (token2 );
223
222
223
+
224
224
CachedTokenRefresher tokenRefresher = tokenRefresherBuilder ().tokenRetriever (supplier ).build ();
225
225
226
226
SdkToken firstRefreshToken = tokenRefresher .refreshIfStaleAndFetch ();
227
227
assertThat (firstRefreshToken ).isEqualTo (token1 );
228
- Thread .sleep (50 );
228
+ Thread .sleep (1000 );
229
229
SdkToken secondRefreshToken = tokenRefresher .refreshIfStaleAndFetch ();
230
230
assertThat (secondRefreshToken ).isEqualTo (token2 );
231
231
}
@@ -243,4 +243,4 @@ private TestToken.Builder getTestTokenBuilder() {
243
243
return TestToken .builder ().token ("sampleToken" )
244
244
.start_url ("start_url" );
245
245
}
246
- }
246
+ }
0 commit comments