use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method runAfterEither.
// {run|accept|apply}AfterEither* tests. Javadoc of CompletionStage states:
// If a stage is dependent on
// <em>either</em> of two others, and only one of them completes
// exceptionally, no guarantees are made about whether the dependent
// stage completes normally or exceptionally.
@Test
public void runAfterEither() {
CompletableFuture<Void> eitherFuture = future1.runAfterEither(future2, () -> {
assertTrue(future1.isDone() || future2.isDone());
});
boolean exceptionalCompletion = invocation1.throwsException || invocation2.throwsException;
assertTrueEventually(() -> {
assertTrue(eitherFuture.isDone());
});
if (exceptionalCompletion && eitherFuture.isCompletedExceptionally()) {
expected.expect(CompletionException.class);
expected.expectCause(new RootCauseMatcher(ExpectedRuntimeException.class));
eitherFuture.join();
}
// non-exceptional completion
assertNull(eitherFuture.join());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method thenAcceptBothAsync.
@Test
public void thenAcceptBothAsync() {
CompletableFuture<Void> combinedFuture = future1.thenAcceptBothAsync(future2, (v1, v2) -> {
assertTrue(future1.isDone());
assertTrue(future2.isDone());
assertNull(v1);
assertNull(v2);
});
boolean exceptionalCompletion = invocation1.throwsException || invocation2.throwsException;
assertTrueEventually(() -> {
assertTrue(combinedFuture.isDone());
});
if (exceptionalCompletion) {
expected.expect(CompletionException.class);
expected.expectCause(new RootCauseMatcher(ExpectedRuntimeException.class));
combinedFuture.join();
}
// non-exceptional completion
assertNull(combinedFuture.join());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method acceptEither.
@Test
public void acceptEither() {
CompletableFuture<Void> eitherFuture = future1.acceptEither(future2, value -> {
assertTrue(future1.isDone() || future2.isDone());
});
boolean exceptionalCompletion = invocation1.throwsException || invocation2.throwsException;
assertTrueEventually(() -> {
assertTrue(eitherFuture.isDone());
});
if (exceptionalCompletion && eitherFuture.isCompletedExceptionally()) {
expected.expect(CompletionException.class);
expected.expectCause(new RootCauseMatcher(ExpectedRuntimeException.class));
eitherFuture.join();
}
// non-exceptional completion
assertNull(eitherFuture.join());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method thenCombine.
@Test
public void thenCombine() {
CompletableFuture<Integer> combinedFuture = future1.thenCombine(future2, (v1, v2) -> {
assertTrue(future1.isDone());
assertTrue(future2.isDone());
assertNull(v1);
assertNull(v2);
return 1;
});
boolean exceptionalCompletion = invocation1.throwsException || invocation2.throwsException;
assertTrueEventually(() -> {
assertTrue(combinedFuture.isDone());
});
if (exceptionalCompletion) {
expected.expect(CompletionException.class);
expected.expectCause(new RootCauseMatcher(ExpectedRuntimeException.class));
combinedFuture.join();
}
// non-exceptional completion
assertEquals(1, (int) combinedFuture.join());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method applyToEitherAsync_withExecutor.
@Test
public void applyToEitherAsync_withExecutor() {
AtomicInteger executionCounter = new AtomicInteger();
CompletableFuture<Object> eitherFuture = future1.applyToEitherAsync(future2, value -> {
assertTrue(future1.isDone() || future2.isDone());
executionCounter.getAndIncrement();
return expectedResult;
}, countingExecutor);
boolean exceptionalCompletion = invocation1.throwsException || invocation2.throwsException;
assertTrueEventually(() -> {
assertTrue(eitherFuture.isDone());
});
if (exceptionalCompletion && eitherFuture.isCompletedExceptionally()) {
expected.expect(CompletionException.class);
expected.expectCause(new RootCauseMatcher(ExpectedRuntimeException.class));
eitherFuture.join();
}
// non-exceptional completion
assertSame(expectedResult, eitherFuture.join());
assertEquals(1, executionCounter.get());
}
Aggregations