Skip to content

Commit 006c0cf

Browse files
committed
Fix up tests due to chaining of whenComplete
1 parent 0164f95 commit 006c0cf

File tree

6 files changed

+26
-18
lines changed

6 files changed

+26
-18
lines changed

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,17 +189,22 @@ CompletableFuture<V> load(K key, Object loadContext) {
189189

190190
ctx.onDispatched();
191191
loaderOptions.getDispatchStrategy().loadCalled(dataLoader, key, loadContext, loadCallFuture);
192-
loadCallFuture = loadCallFuture.whenComplete((result, error) -> loaderOptions.getDispatchStrategy().loadCompleted(dataLoader, result, error));
193-
loadCallFuture.whenComplete(ctx::onCompleted);
192+
loadCallFuture = loadCallFuture.whenComplete((result, error) -> {
193+
loaderOptions.getDispatchStrategy().loadCompleted(dataLoader, result, error);
194+
ctx.onCompleted(result, error);
195+
}
196+
);
194197
return loadCallFuture;
195198
}
196199

197200
private CompletableFuture<V> incrementCacheHitAndReturnCF(DataLoaderInstrumentationContext<Object> ctx, K key, Object loadContext, CompletableFuture<V> cachedFuture) {
198201
stats.incrementCacheHitCount(new IncrementCacheHitCountStatisticsContext<>(key, loadContext));
199202
ctx.onDispatched();
200203
loaderOptions.getDispatchStrategy().loadCalled(dataLoader, key, loadContext, cachedFuture);
201-
cachedFuture = cachedFuture.whenComplete((result, error) -> loaderOptions.getDispatchStrategy().loadCompleted(dataLoader, result, error));
202-
cachedFuture.whenComplete(ctx::onCompleted);
204+
cachedFuture = cachedFuture.whenComplete((result, error) -> {
205+
loaderOptions.getDispatchStrategy().loadCompleted(dataLoader, result, error);
206+
ctx.onCompleted(result, error);
207+
});
203208
return cachedFuture;
204209
}
205210

src/test/java/org/dataloader/DataLoaderCacheMapTest.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,15 @@ private <T> BatchLoader<T, T> keysAsValues() {
2525
public void should_provide_all_futures_from_cache() {
2626
DataLoader<Integer, Integer> dataLoader = newDataLoader(keysAsValues());
2727

28-
CompletableFuture<Integer> cf1 = dataLoader.load(1);
29-
CompletableFuture<Integer> cf2 = dataLoader.load(2);
30-
CompletableFuture<Integer> cf3 = dataLoader.load(3);
28+
dataLoader.load(1);
29+
dataLoader.load(2);
30+
dataLoader.load(3);
3131

3232
CacheMap<Object, Integer> cacheMap = dataLoader.getCacheMap();
3333
Collection<CompletableFuture<Integer>> futures = cacheMap.getAll();
3434
assertThat(futures.size(), equalTo(3));
3535

3636

37-
assertThat(cacheMap.get(1), equalTo(cf1));
38-
assertThat(cacheMap.get(2), equalTo(cf2));
39-
assertThat(cacheMap.get(3), equalTo(cf3));
4037
assertThat(cacheMap.containsKey(1), equalTo(true));
4138
assertThat(cacheMap.containsKey(2), equalTo(true));
4239
assertThat(cacheMap.containsKey(3), equalTo(true));
@@ -65,8 +62,7 @@ public void should_access_to_future_dependants() {
6562
Collection<CompletableFuture<Integer>> futures = dataLoader.getCacheMap().getAll();
6663

6764
List<CompletableFuture<Integer>> futuresList = new ArrayList<>(futures);
68-
// instrumentation is depending on the CF completing + dispatch strategy
69-
assertThat(futuresList.get(0).getNumberOfDependents(), equalTo(6));
70-
assertThat(futuresList.get(1).getNumberOfDependents(), equalTo(3));
65+
assertThat(futuresList.get(0).getNumberOfDependents(), equalTo(2)); // instrumentation is depending on the CF completing
66+
assertThat(futuresList.get(1).getNumberOfDependents(), equalTo(1));
7167
}
7268
}

src/test/java/org/dataloader/DataLoaderIfPresentTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ public void should_detect_if_present_cf() {
3232
cachedPromise = dataLoader.getIfPresent(1);
3333
assertThat(cachedPromise.isPresent(), equalTo(true));
3434

35-
assertThat(cachedPromise.get(), sameInstance(future1));
36-
3735
// but it's not done!
3836
assertThat(cachedPromise.get().isDone(), equalTo(false));
3937
//

src/test/java/org/dataloader/DataLoaderTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,6 @@ public void should_Coalesce_identical_requests(TestDataLoaderFactory factory) th
282282

283283
CompletableFuture<Integer> future1a = identityLoader.load(1);
284284
CompletableFuture<Integer> future1b = identityLoader.load(1);
285-
assertThat(future1a, equalTo(future1b));
286285
identityLoader.dispatch();
287286

288287
await().until(future1a::isDone);

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.util.Collection;
1414
import java.util.List;
1515
import java.util.concurrent.CompletableFuture;
16+
import java.util.concurrent.CompletionException;
17+
import java.util.concurrent.CompletionStage;
1618
import java.util.concurrent.TimeUnit;
1719
import java.util.concurrent.atomic.AtomicInteger;
1820

@@ -340,10 +342,17 @@ public CompletableFuture<List<Try<Object>>> getValues(List<String> keys) {
340342
}
341343

342344
private boolean isAssertionException(CompletableFuture<String> fA) {
343-
Throwable throwable = Try.tryFuture(fA).join().getThrowable();
345+
Throwable throwable = maybeUnwrapCompletionException(Try.tryFuture(fA).join().getThrowable());
344346
return throwable instanceof DataLoaderAssertionException;
345347
}
346348

349+
private Throwable maybeUnwrapCompletionException(Throwable throwable) {
350+
if (throwable instanceof CompletionException) {
351+
return maybeUnwrapCompletionException(throwable.getCause());
352+
}
353+
return throwable;
354+
}
355+
347356

348357
@ParameterizedTest
349358
@MethodSource("org.dataloader.fixtures.parameterized.TestDataLoaderFactories#get")

src/test/java/org/dataloader/strategy/GreedyLevelByLevelChainedDispatchStrategyStressTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.dataloader.DataLoaderFactory;
55
import org.dataloader.DataLoaderRegistry;
66
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.RepeatedTest;
78
import org.junit.jupiter.api.Test;
89

910
import java.time.Duration;
@@ -266,7 +267,7 @@ void verifyExecutionOrder() throws Exception {
266267
List.of("E", "F")
267268
)));
268269

269-
assertThat(completionOrder, equalTo(List.of(
270+
assertThat(flatCompletionOrder, equalTo(List.of(
270271
"H",
271272
"J",
272273
"I",

0 commit comments

Comments
 (0)