Skip to content

Commit 205aaa5

Browse files
authored
Merge pull request #172 from AlexandreCarlton/fix-publisher-dataloader-with-value-cache
Allow ValueCache to work with Publisher DataLoader
2 parents 04db8d2 + 9a20334 commit 205aaa5

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

src/main/java/org/dataloader/DataLoaderHelper.java

+3
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,9 @@ CompletableFuture<List<V>> invokeLoader(List<K> keys, List<Object> keyContexts,
390390
missedKeyIndexes.add(i);
391391
missedKeys.add(keys.get(i));
392392
missedKeyContexts.add(keyContexts.get(i));
393+
missedQueuedFutures.add(queuedFutures.get(i));
394+
} else {
395+
queuedFutures.get(i).complete(cacheGet.get());
393396
}
394397
}
395398
}

src/test/java/org/dataloader/DataLoaderValueCacheTest.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
public class DataLoaderValueCacheTest {
3434

3535
@ParameterizedTest
36-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
36+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
3737
public void test_by_default_we_have_no_value_caching(TestDataLoaderFactory factory) {
3838
List<Collection<String>> loadCalls = new ArrayList<>();
3939
DataLoaderOptions options = newOptions();
@@ -68,7 +68,7 @@ public void test_by_default_we_have_no_value_caching(TestDataLoaderFactory facto
6868
}
6969

7070
@ParameterizedTest
71-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
71+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
7272
public void should_accept_a_remote_value_store_for_caching(TestDataLoaderFactory factory) {
7373
CustomValueCache customValueCache = new CustomValueCache();
7474
List<Collection<String>> loadCalls = new ArrayList<>();
@@ -113,7 +113,7 @@ public void should_accept_a_remote_value_store_for_caching(TestDataLoaderFactory
113113
}
114114

115115
@ParameterizedTest
116-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
116+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
117117
public void can_use_caffeine_for_caching(TestDataLoaderFactory factory) {
118118
//
119119
// Mostly to prove that some other CACHE library could be used
@@ -154,7 +154,7 @@ public void can_use_caffeine_for_caching(TestDataLoaderFactory factory) {
154154
}
155155

156156
@ParameterizedTest
157-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
157+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
158158
public void will_invoke_loader_if_CACHE_GET_call_throws_exception(TestDataLoaderFactory factory) {
159159
CustomValueCache customValueCache = new CustomValueCache() {
160160

@@ -185,7 +185,7 @@ public CompletableFuture<Object> get(String key) {
185185
}
186186

187187
@ParameterizedTest
188-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
188+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
189189
public void will_still_work_if_CACHE_SET_call_throws_exception(TestDataLoaderFactory factory) {
190190
CustomValueCache customValueCache = new CustomValueCache() {
191191
@Override
@@ -214,7 +214,7 @@ public CompletableFuture<Object> set(String key, Object value) {
214214
}
215215

216216
@ParameterizedTest
217-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
217+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
218218
public void caching_can_take_some_time_complete(TestDataLoaderFactory factory) {
219219
CustomValueCache customValueCache = new CustomValueCache() {
220220

@@ -256,7 +256,7 @@ public CompletableFuture<Object> get(String key) {
256256
}
257257

258258
@ParameterizedTest
259-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
259+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
260260
public void batch_caching_works_as_expected(TestDataLoaderFactory factory) {
261261
CustomValueCache customValueCache = new CustomValueCache() {
262262

@@ -303,7 +303,7 @@ public CompletableFuture<List<Try<Object>>> getValues(List<String> keys) {
303303
}
304304

305305
@ParameterizedTest
306-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
306+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
307307
public void assertions_will_be_thrown_if_the_cache_does_not_follow_contract(TestDataLoaderFactory factory) {
308308
CustomValueCache customValueCache = new CustomValueCache() {
309309

@@ -346,7 +346,7 @@ private boolean isAssertionException(CompletableFuture<String> fA) {
346346

347347

348348
@ParameterizedTest
349-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
349+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
350350
public void if_caching_is_off_its_never_hit(TestDataLoaderFactory factory) {
351351
AtomicInteger getCalls = new AtomicInteger();
352352
CustomValueCache customValueCache = new CustomValueCache() {
@@ -380,7 +380,7 @@ public CompletableFuture<Object> get(String key) {
380380
}
381381

382382
@ParameterizedTest
383-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
383+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
384384
public void if_everything_is_cached_no_batching_happens(TestDataLoaderFactory factory) {
385385
AtomicInteger getCalls = new AtomicInteger();
386386
AtomicInteger setCalls = new AtomicInteger();
@@ -423,7 +423,7 @@ public CompletableFuture<List<Object>> setValues(List<String> keys, List<Object>
423423

424424

425425
@ParameterizedTest
426-
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#getWithoutPublisher")
426+
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")
427427
public void if_batching_is_off_it_still_can_cache(TestDataLoaderFactory factory) {
428428
AtomicInteger getCalls = new AtomicInteger();
429429
AtomicInteger setCalls = new AtomicInteger();

src/test/java/org/dataloader/fixtures/parameterized/TestDataLoaderFactories.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.stream.Stream;
77

88
public class TestDataLoaderFactories {
9+
910
public static Stream<Arguments> get() {
1011
return Stream.of(
1112
Arguments.of(Named.of("List DataLoader", new ListDataLoaderFactory())),
@@ -14,12 +15,4 @@ public static Stream<Arguments> get() {
1415
Arguments.of(Named.of("Mapped Publisher DataLoader", new MappedPublisherDataLoaderFactory()))
1516
);
1617
}
17-
18-
// TODO: Remove in favour of #get when ValueCache supports Publisher Factories.
19-
public static Stream<Arguments> getWithoutPublisher() {
20-
return Stream.of(
21-
Arguments.of(Named.of("List DataLoader", new ListDataLoaderFactory())),
22-
Arguments.of(Named.of("Mapped DataLoader", new MappedDataLoaderFactory()))
23-
);
24-
}
2518
}

0 commit comments

Comments
 (0)