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