44import com .github .benmanes .caffeine .cache .Caffeine ;
55import org .dataloader .fixtures .CaffeineValueCache ;
66import org .dataloader .fixtures .CustomValueCache ;
7+ import org .dataloader .fixtures .parameterized .TestDataLoaderFactory ;
78import org .dataloader .impl .DataLoaderAssertionException ;
8- import org .junit .jupiter .api .Test ;
9+ import org .junit .jupiter .params .ParameterizedTest ;
10+ import org .junit .jupiter .params .provider .MethodSource ;
911
1012import java .util .ArrayList ;
13+ import java .util .Collection ;
1114import java .util .List ;
1215import java .util .concurrent .CompletableFuture ;
1316import java .util .concurrent .TimeUnit ;
1821import static java .util .Collections .singletonList ;
1922import static org .awaitility .Awaitility .await ;
2023import static org .dataloader .DataLoaderOptions .newOptions ;
21- import static org .dataloader .fixtures .TestKit .idLoader ;
2224import static org .dataloader .fixtures .TestKit .snooze ;
2325import static org .dataloader .fixtures .TestKit .sort ;
2426import static org .dataloader .impl .CompletableFutureKit .failedFuture ;
3032
3133public class DataLoaderValueCacheTest {
3234
33- @ Test
34- public void test_by_default_we_have_no_value_caching () {
35- List <List <String >> loadCalls = new ArrayList <>();
35+ @ ParameterizedTest
36+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
37+ public void test_by_default_we_have_no_value_caching (TestDataLoaderFactory factory ) {
38+ List <Collection <String >> loadCalls = new ArrayList <>();
3639 DataLoaderOptions options = newOptions ();
37- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
40+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
3841
3942 CompletableFuture <String > fA = identityLoader .load ("a" );
4043 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -64,12 +67,13 @@ public void test_by_default_we_have_no_value_caching() {
6467 assertThat (loadCalls , equalTo (emptyList ()));
6568 }
6669
67- @ Test
68- public void should_accept_a_remote_value_store_for_caching () {
70+ @ ParameterizedTest
71+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
72+ public void should_accept_a_remote_value_store_for_caching (TestDataLoaderFactory factory ) {
6973 CustomValueCache customValueCache = new CustomValueCache ();
70- List <List <String >> loadCalls = new ArrayList <>();
74+ List <Collection <String >> loadCalls = new ArrayList <>();
7175 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
72- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
76+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
7377
7478 // Fetches as expected
7579
@@ -108,8 +112,9 @@ public void should_accept_a_remote_value_store_for_caching() {
108112 assertArrayEquals (customValueCache .store .keySet ().toArray (), emptyList ().toArray ());
109113 }
110114
111- @ Test
112- public void can_use_caffeine_for_caching () {
115+ @ ParameterizedTest
116+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
117+ public void can_use_caffeine_for_caching (TestDataLoaderFactory factory ) {
113118 //
114119 // Mostly to prove that some other CACHE library could be used
115120 // as the backing value cache. Not really Caffeine specific.
@@ -121,9 +126,9 @@ public void can_use_caffeine_for_caching() {
121126
122127 ValueCache <String , Object > caffeineValueCache = new CaffeineValueCache (caffeineCache );
123128
124- List <List <String >> loadCalls = new ArrayList <>();
129+ List <Collection <String >> loadCalls = new ArrayList <>();
125130 DataLoaderOptions options = newOptions ().setValueCache (caffeineValueCache );
126- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
131+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
127132
128133 // Fetches as expected
129134
@@ -148,8 +153,9 @@ public void can_use_caffeine_for_caching() {
148153 assertArrayEquals (caffeineCache .asMap ().keySet ().toArray (), asList ("a" , "b" , "c" ).toArray ());
149154 }
150155
151- @ Test
152- public void will_invoke_loader_if_CACHE_GET_call_throws_exception () {
156+ @ ParameterizedTest
157+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
158+ public void will_invoke_loader_if_CACHE_GET_call_throws_exception (TestDataLoaderFactory factory ) {
153159 CustomValueCache customValueCache = new CustomValueCache () {
154160
155161 @ Override
@@ -163,9 +169,9 @@ public CompletableFuture<Object> get(String key) {
163169 customValueCache .set ("a" , "Not From Cache" );
164170 customValueCache .set ("b" , "From Cache" );
165171
166- List <List <String >> loadCalls = new ArrayList <>();
172+ List <Collection <String >> loadCalls = new ArrayList <>();
167173 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
168- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
174+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
169175
170176 CompletableFuture <String > fA = identityLoader .load ("a" );
171177 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -178,8 +184,9 @@ public CompletableFuture<Object> get(String key) {
178184 assertThat (loadCalls , equalTo (singletonList (singletonList ("a" ))));
179185 }
180186
181- @ Test
182- public void will_still_work_if_CACHE_SET_call_throws_exception () {
187+ @ ParameterizedTest
188+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
189+ public void will_still_work_if_CACHE_SET_call_throws_exception (TestDataLoaderFactory factory ) {
183190 CustomValueCache customValueCache = new CustomValueCache () {
184191 @ Override
185192 public CompletableFuture <Object > set (String key , Object value ) {
@@ -190,9 +197,9 @@ public CompletableFuture<Object> set(String key, Object value) {
190197 }
191198 };
192199
193- List <List <String >> loadCalls = new ArrayList <>();
200+ List <Collection <String >> loadCalls = new ArrayList <>();
194201 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
195- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
202+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
196203
197204 CompletableFuture <String > fA = identityLoader .load ("a" );
198205 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -206,8 +213,9 @@ public CompletableFuture<Object> set(String key, Object value) {
206213 assertArrayEquals (customValueCache .store .keySet ().toArray (), singletonList ("b" ).toArray ());
207214 }
208215
209- @ Test
210- public void caching_can_take_some_time_complete () {
216+ @ ParameterizedTest
217+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
218+ public void caching_can_take_some_time_complete (TestDataLoaderFactory factory ) {
211219 CustomValueCache customValueCache = new CustomValueCache () {
212220
213221 @ Override
@@ -228,9 +236,9 @@ public CompletableFuture<Object> get(String key) {
228236 };
229237
230238
231- List <List <String >> loadCalls = new ArrayList <>();
239+ List <Collection <String >> loadCalls = new ArrayList <>();
232240 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
233- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
241+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
234242
235243 CompletableFuture <String > fA = identityLoader .load ("a" );
236244 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -247,8 +255,9 @@ public CompletableFuture<Object> get(String key) {
247255 assertThat (loadCalls , equalTo (singletonList (asList ("missC" , "missD" ))));
248256 }
249257
250- @ Test
251- public void batch_caching_works_as_expected () {
258+ @ ParameterizedTest
259+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
260+ public void batch_caching_works_as_expected (TestDataLoaderFactory factory ) {
252261 CustomValueCache customValueCache = new CustomValueCache () {
253262
254263 @ Override
@@ -269,9 +278,9 @@ public CompletableFuture<List<Try<Object>>> getValues(List<String> keys) {
269278 };
270279
271280
272- List <List <String >> loadCalls = new ArrayList <>();
281+ List <Collection <String >> loadCalls = new ArrayList <>();
273282 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
274- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
283+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
275284
276285 CompletableFuture <String > fA = identityLoader .load ("a" );
277286 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -293,8 +302,9 @@ public CompletableFuture<List<Try<Object>>> getValues(List<String> keys) {
293302 assertThat (values , equalTo (asList ("missC" , "missD" )));
294303 }
295304
296- @ Test
297- public void assertions_will_be_thrown_if_the_cache_does_not_follow_contract () {
305+ @ ParameterizedTest
306+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
307+ public void assertions_will_be_thrown_if_the_cache_does_not_follow_contract (TestDataLoaderFactory factory ) {
298308 CustomValueCache customValueCache = new CustomValueCache () {
299309
300310 @ Override
@@ -312,9 +322,9 @@ public CompletableFuture<List<Try<Object>>> getValues(List<String> keys) {
312322 }
313323 };
314324
315- List <List <String >> loadCalls = new ArrayList <>();
325+ List <Collection <String >> loadCalls = new ArrayList <>();
316326 DataLoaderOptions options = newOptions ().setValueCache (customValueCache );
317- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
327+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
318328
319329 CompletableFuture <String > fA = identityLoader .load ("a" );
320330 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -335,8 +345,9 @@ private boolean isAssertionException(CompletableFuture<String> fA) {
335345 }
336346
337347
338- @ Test
339- public void if_caching_is_off_its_never_hit () {
348+ @ ParameterizedTest
349+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
350+ public void if_caching_is_off_its_never_hit (TestDataLoaderFactory factory ) {
340351 AtomicInteger getCalls = new AtomicInteger ();
341352 CustomValueCache customValueCache = new CustomValueCache () {
342353
@@ -347,9 +358,9 @@ public CompletableFuture<Object> get(String key) {
347358 }
348359 };
349360
350- List <List <String >> loadCalls = new ArrayList <>();
361+ List <Collection <String >> loadCalls = new ArrayList <>();
351362 DataLoaderOptions options = newOptions ().setValueCache (customValueCache ).setCachingEnabled (false );
352- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
363+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
353364
354365 CompletableFuture <String > fA = identityLoader .load ("a" );
355366 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -368,8 +379,9 @@ public CompletableFuture<Object> get(String key) {
368379 assertTrue (customValueCache .asMap ().isEmpty ());
369380 }
370381
371- @ Test
372- public void if_everything_is_cached_no_batching_happens () {
382+ @ ParameterizedTest
383+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
384+ public void if_everything_is_cached_no_batching_happens (TestDataLoaderFactory factory ) {
373385 AtomicInteger getCalls = new AtomicInteger ();
374386 AtomicInteger setCalls = new AtomicInteger ();
375387 CustomValueCache customValueCache = new CustomValueCache () {
@@ -390,9 +402,9 @@ public CompletableFuture<List<Object>> setValues(List<String> keys, List<Object>
390402 customValueCache .asMap ().put ("b" , "cachedB" );
391403 customValueCache .asMap ().put ("c" , "cachedC" );
392404
393- List <List <String >> loadCalls = new ArrayList <>();
405+ List <Collection <String >> loadCalls = new ArrayList <>();
394406 DataLoaderOptions options = newOptions ().setValueCache (customValueCache ).setCachingEnabled (true );
395- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
407+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
396408
397409 CompletableFuture <String > fA = identityLoader .load ("a" );
398410 CompletableFuture <String > fB = identityLoader .load ("b" );
@@ -410,8 +422,9 @@ public CompletableFuture<List<Object>> setValues(List<String> keys, List<Object>
410422 }
411423
412424
413- @ Test
414- public void if_batching_is_off_it_still_can_cache () {
425+ @ ParameterizedTest
426+ @ MethodSource ("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher" )
427+ public void if_batching_is_off_it_still_can_cache (TestDataLoaderFactory factory ) {
415428 AtomicInteger getCalls = new AtomicInteger ();
416429 AtomicInteger setCalls = new AtomicInteger ();
417430 CustomValueCache customValueCache = new CustomValueCache () {
@@ -430,9 +443,9 @@ public CompletableFuture<List<Object>> setValues(List<String> keys, List<Object>
430443 };
431444 customValueCache .asMap ().put ("a" , "cachedA" );
432445
433- List <List <String >> loadCalls = new ArrayList <>();
446+ List <Collection <String >> loadCalls = new ArrayList <>();
434447 DataLoaderOptions options = newOptions ().setValueCache (customValueCache ).setCachingEnabled (true ).setBatchingEnabled (false );
435- DataLoader <String , String > identityLoader = idLoader (options , loadCalls );
448+ DataLoader <String , String > identityLoader = factory . idLoader (options , loadCalls );
436449
437450 CompletableFuture <String > fA = identityLoader .load ("a" );
438451 CompletableFuture <String > fB = identityLoader .load ("b" );
0 commit comments