use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class CacheTypesConfigTest method cacheConfigShouldBeAddedOnJoiningMember_whenExpiryPolicyFactoryNotResolvable.
// tests deferred resolution of expiry policy factory
@Test
public void cacheConfigShouldBeAddedOnJoiningMember_whenExpiryPolicyFactoryNotResolvable() throws InterruptedException {
HazelcastInstance hz1 = factory.newHazelcastInstance(getConfig());
CachingProvider cachingProvider = createServerCachingProvider(hz1);
cachingProvider.getCacheManager().createCache(cacheName, createCacheConfig().setExpiryPolicyFactory(new PersonExpiryPolicyFactory()));
HazelcastInstance hz2 = factory.newHazelcastInstance(getClassFilteringConfig());
assertClusterSize(2, hz1, hz2);
ICache<String, Person> cache = hz2.getCacheManager().getCache(cacheName);
String key = generateKeyOwnedBy(hz2);
expect.expectCause(new RootCauseMatcher(ClassNotFoundException.class, "classloading.domain.PersonExpiryPolicyFactory - " + "Package excluded explicitly"));
cache.invoke(key, new PersonEntryProcessor());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class QueryAdvancedTest method testClassNotFoundErrorDelegatedToCallerOnQuery.
@Test
public void testClassNotFoundErrorDelegatedToCallerOnQuery() {
Config config = getConfig();
HazelcastInstance hazelcastInstance = createHazelcastInstance(config);
IMap<Integer, Integer> map = hazelcastInstance.getMap("map");
map.put(1, 1);
// A remote predicate can throw Error in case of Usercodeployment and missing sub classes
// See the issue for actual problem https://github.com/hazelcast/hazelcast/issues/18052
// We are throwing error to see if the error is delegated to the caller
expected.expect(HazelcastException.class);
expected.expectCause(new RootCauseMatcher(NoClassDefFoundError.class));
map.values(new ErrorThrowingPredicate());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method acceptEitherAsync_withExecutor.
@Test
public void acceptEitherAsync_withExecutor() {
AtomicInteger executionCounter = new AtomicInteger();
CompletableFuture<Void> eitherFuture = future1.acceptEitherAsync(future2, value -> {
assertTrue(future1.isDone() || future2.isDone());
executionCounter.getAndIncrement();
}, 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
assertNull(eitherFuture.join());
assertEquals(1, executionCounter.get());
}
use of com.hazelcast.internal.util.RootCauseMatcher in project hazelcast by hazelcast.
the class BiCompletionStageTest method runAfterBoth.
@Test
public void runAfterBoth() {
CompletableFuture<Void> combinedFuture = future1.runAfterBoth(future2, () -> {
assertTrue(future1.isDone());
assertTrue(future2.isDone());
});
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 runAfterEitherAsync_withExecutor.
@Test
public void runAfterEitherAsync_withExecutor() {
AtomicInteger executionCounter = new AtomicInteger();
CompletableFuture<Void> eitherFuture = future1.runAfterEitherAsync(future2, () -> {
assertTrue(future1.isDone() || future2.isDone());
executionCounter.getAndIncrement();
}, 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
assertNull(eitherFuture.join());
assertEquals(1, executionCounter.get());
}
Aggregations