use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method capacity_whenPositiveLimit_completedTask_andFirstPromotionFails.
@Test
public void capacity_whenPositiveLimit_completedTask_andFirstPromotionFails() throws ExecutionException, InterruptedException {
String schedulerName = ANY_EXECUTOR_NAME;
ScheduledExecutorConfig sec = new ScheduledExecutorConfig().setName(schedulerName).setDurability(1).setPoolSize(1).setCapacity(1).setCapacityPolicy(ScheduledExecutorConfig.CapacityPolicy.PER_PARTITION);
Config config = new Config().addScheduledExecutorConfig(sec);
config.setProperty(PARTITION_COUNT.getName(), "3");
TestHazelcastInstanceFactory hazelcastInstanceFactory = createHazelcastInstanceFactory();
HazelcastInstance[] instances = hazelcastInstanceFactory.newInstances(config, 3);
IScheduledExecutorService service = instances[0].getScheduledExecutorService(schedulerName);
String key = generateKeyOwnedBy(instances[0]);
int keyOwner = getNodeEngineImpl(instances[0]).getPartitionService().getPartitionId(key);
IScheduledFuture future = service.scheduleOnKeyOwner(new PlainCallableTask(), key, 0, TimeUnit.SECONDS);
future.get();
assertCapacityReached(service, key, "Maximum capacity (1) of tasks reached " + "for partition (" + keyOwner + ") and scheduled executor (" + schedulerName + ").");
// Fail promotion
DistributedScheduledExecutorService.FAIL_MIGRATIONS.set(true);
instances[0].getLifecycleService().terminate();
waitAllForSafeState(instances);
service = instances[1].getScheduledExecutorService(schedulerName);
assertCapacityReached(service, key, "Maximum capacity (1) of tasks reached " + "for partition (" + keyOwner + ") and scheduled executor (" + schedulerName + ").");
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method exception_suppressesFutureExecutions.
@Test
public void exception_suppressesFutureExecutions() throws ExecutionException, InterruptedException {
HazelcastInstance[] instances = createClusterWithCount(2);
IScheduledExecutorService service = instances[0].getScheduledExecutorService(ANY_EXECUTOR_NAME);
final IScheduledFuture f = service.scheduleAtFixedRate(new ErroneousRunnableTask(), 1, 1, TimeUnit.SECONDS);
assertTrueEventually(() -> assertTrue(f.isDone()));
assertEquals(1L, f.getStats().getTotalRuns());
expected.expect(ExecutionException.class);
expected.expectCause(new RootCauseMatcher(IllegalStateException.class, "Erroneous task"));
f.get();
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method scheduleOnKeyOwner_withNotPeriodicRunnableDurable.
@Test
public void scheduleOnKeyOwner_withNotPeriodicRunnableDurable() throws Exception {
HazelcastInstance[] instances = createClusterWithCount(2);
String key = generateKeyOwnedBy(instances[1]);
IScheduledExecutorService s = getScheduledExecutor(instances, ANY_EXECUTOR_NAME);
ICountDownLatch latch = instances[0].getCPSubsystem().getCountDownLatch("latch");
latch.trySetCount(1);
IScheduledFuture future = s.scheduleOnKeyOwner(new ICountdownLatchRunnableTask("latch"), key, 2, SECONDS);
instances[1].getLifecycleService().shutdown();
future.get();
assertEquals(0, latch.getCount());
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method scheduled_executor_does_not_collect_statistics_when_stats_disabled.
@Test
public void scheduled_executor_does_not_collect_statistics_when_stats_disabled() throws Exception {
// run task
Config config = smallInstanceConfig();
config.getScheduledExecutorConfig(ANY_EXECUTOR_NAME).setStatisticsEnabled(false);
HazelcastInstance[] instances = createClusterWithCount(2, config);
IScheduledExecutorService s = getScheduledExecutor(instances, ANY_EXECUTOR_NAME);
Map<Member, IScheduledFuture<Double>> futureMap = s.scheduleOnAllMembers(new OneSecondSleepingTask(), 0, SECONDS);
Set<Map.Entry<Member, IScheduledFuture<Double>>> entries = futureMap.entrySet();
for (Map.Entry<Member, IScheduledFuture<Double>> entry : entries) {
entry.getValue().get();
}
assertTrueAllTheTime(() -> {
// collect metrics
Map<String, List<Long>> metrics = collectMetrics(SCHEDULED_EXECUTOR_PREFIX, instances);
// check results
assertTrue("No metrics collection expected but " + metrics, metrics.isEmpty());
}, 5);
}
use of com.hazelcast.scheduledexecutor.IScheduledFuture in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method scheduleOnMemberWithRepetition.
@Test
public void scheduleOnMemberWithRepetition() {
HazelcastInstance[] instances = createClusterWithCount(4);
IScheduledExecutorService s = getScheduledExecutor(instances, ANY_EXECUTOR_NAME);
ICountDownLatch latch = instances[0].getCPSubsystem().getCountDownLatch("latch");
latch.trySetCount(4);
Map<Member, IScheduledFuture<Object>> futures = s.scheduleOnAllMembersAtFixedRate(new ICountdownLatchRunnableTask("latch"), 0, 3, SECONDS);
assertOpenEventually(latch);
assertEquals(0, latch.getCount());
assertEquals(4, futures.size());
}
Aggregations