use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method scheduleOnMember_testMemberLostEvent.
@Test
public void scheduleOnMember_testMemberLostEvent() {
int delay = 1;
HazelcastInstance[] instances = createClusterWithCount(2);
Member member = instances[1].getCluster().getLocalMember();
IScheduledExecutorService executorService = getScheduledExecutor(instances, ANY_EXECUTOR_NAME);
final IScheduledFuture future = executorService.scheduleOnMember(new PlainCallableTask(), member, delay, SECONDS);
instances[1].getLifecycleService().terminate();
assertTrueEventually(() -> {
try {
future.get(0, SECONDS);
fail();
} catch (IllegalStateException ex) {
System.err.println(ex.getMessage());
assertEquals(format("Member with address: %s, holding this scheduled task is not part of this cluster.", future.getHandler().getUuid()), ex.getMessage());
} catch (TimeoutException ex) {
ignore(ex);
}
});
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method capacity_whenPositiveLimit_perNode_afterDisposing_andReplicaPartitionPromotion.
@Test
public void capacity_whenPositiveLimit_perNode_afterDisposing_andReplicaPartitionPromotion() throws ExecutionException, InterruptedException {
String schedulerName = ANY_EXECUTOR_NAME;
ScheduledExecutorConfig sec = new ScheduledExecutorConfig().setName(schedulerName).setDurability(1).setPoolSize(1).setCapacity(1).setCapacityPolicy(ScheduledExecutorConfig.CapacityPolicy.PER_NODE);
Config config = new Config().addScheduledExecutorConfig(sec);
HazelcastInstance[] instances = createClusterWithCount(2, config);
IScheduledExecutorService service = instances[0].getScheduledExecutorService(schedulerName);
String key = generateKeyOwnedBy(instances[0]);
IScheduledFuture future = service.scheduleOnKeyOwner(new PlainCallableTask(), key, 0, TimeUnit.SECONDS);
future.get();
assertCapacityReached(service, key, "Maximum capacity (1) of tasks reached for this " + "member and scheduled executor (" + schedulerName + ").");
instances[0].getLifecycleService().shutdown();
waitAllForSafeState(instances[1]);
// Re-assign service & future
service = instances[1].getScheduledExecutorService(schedulerName);
future = service.getScheduledFuture(future.getHandler());
assertCapacityReached(service, key, "Maximum capacity (1) of tasks reached for this " + "member and scheduled executor (" + schedulerName + ").");
future.dispose();
service.scheduleOnKeyOwner(new PlainCallableTask(), key, 0, TimeUnit.SECONDS);
assertCapacityReached(service, key, "Maximum capacity (1) of tasks reached for this " + "member and scheduled executor (" + schedulerName + ").");
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method handlerTaskAndSchedulerNames_withRunnable.
@Test
public void handlerTaskAndSchedulerNames_withRunnable() {
int delay = 0;
String schedulerName = ANY_EXECUTOR_NAME;
String taskName = "TestRunnable";
HazelcastInstance[] instances = createClusterWithCount(2);
ICountDownLatch latch = instances[0].getCPSubsystem().getCountDownLatch("latch");
latch.trySetCount(1);
IScheduledExecutorService executorService = instances[0].getScheduledExecutorService(schedulerName);
IScheduledFuture future = executorService.schedule(named(taskName, new ICountdownLatchRunnableTask("latch")), delay, SECONDS);
assertOpenEventually(latch);
ScheduledTaskHandler handler = future.getHandler();
assertEquals(schedulerName, handler.getSchedulerName());
assertEquals(taskName, handler.getTaskName());
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method cancelledAndDone_durable.
@Test
public void cancelledAndDone_durable() {
HazelcastInstance[] instances = createClusterWithCount(3);
Object key = generateKeyOwnedBy(instances[1]);
ICountDownLatch latch = instances[0].getCPSubsystem().getCountDownLatch("latch");
latch.trySetCount(1);
IScheduledExecutorService executorService = getScheduledExecutor(instances, ANY_EXECUTOR_NAME);
IScheduledFuture future = executorService.scheduleOnKeyOwnerAtFixedRate(new ICountdownLatchRunnableTask("latch"), key, 0, 1, SECONDS);
assertOpenEventually(latch);
assertFalse(future.isCancelled());
assertFalse(future.isDone());
future.cancel(false);
assertTrue(future.isCancelled());
assertTrue(future.isDone());
instances[1].getLifecycleService().shutdown();
assertTrue(future.isCancelled());
assertTrue(future.isDone());
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method capacity_whenAutoDisposable_Runnable.
@Test
public void capacity_whenAutoDisposable_Runnable() throws Exception {
String schedulerName = ANY_EXECUTOR_NAME;
int capacity = 10;
ScheduledExecutorConfig sec = new ScheduledExecutorConfig().setName(schedulerName).setDurability(1).setPoolSize(1).setCapacity(capacity);
Config config = new Config().addScheduledExecutorConfig(sec);
HazelcastInstance[] instances = createClusterWithCount(1, config);
IScheduledExecutorService service = instances[0].getScheduledExecutorService(schedulerName);
String keyOwner = "hitSamePartitionToCheckCapacity";
List<IScheduledFuture<Double>> futures = new ArrayList<>();
for (int i = 0; i < capacity; i++) {
Runnable command = autoDisposable(new PlainRunnableTask());
IScheduledFuture<Double> future = service.scheduleOnKeyOwner(command, keyOwner, 0, SECONDS);
futures.add(future);
}
futures.forEach(this::assertTaskHasBeenDestroyedEventually);
for (int i = 0; i < capacity; i++) {
service.scheduleOnKeyOwner(autoDisposable(new PlainRunnableTask()), keyOwner, 0, TimeUnit.SECONDS);
}
// no exceptions thrown
}
Aggregations