use of com.hazelcast.core.ICountDownLatch in project hazelcast by hazelcast.
the class ScheduledExecutorServiceSlowTest method scheduleRandomPartitions_periodicTask_getAllScheduled_durable.
@Test
public void scheduleRandomPartitions_periodicTask_getAllScheduled_durable() throws ExecutionException, InterruptedException {
HazelcastInstance[] instances = createClusterWithCount(3);
IScheduledExecutorService s = getScheduledExecutor(instances, "s");
String key = generateKeyOwnedBy(instances[1]);
String runsCounterName = "runs";
ICountDownLatch runsLatch = instances[0].getCountDownLatch(runsCounterName);
runsLatch.trySetCount(2);
int expectedTotal = 11;
for (int i = 0; i < expectedTotal; i++) {
s.scheduleOnKeyOwnerAtFixedRate(new ICountdownLatchRunnableTask(runsCounterName), key, 0, 2, SECONDS);
}
runsLatch.await(10, SECONDS);
instances[1].getLifecycleService().shutdown();
assertEquals(expectedTotal, countScheduledTasksOn(s), 0);
}
use of com.hazelcast.core.ICountDownLatch in project hazelcast by hazelcast.
the class ScheduledExecutorServiceSlowTest method schedulePeriodicTask_withMultipleSchedulers_atRandomPartitions_shutdownOrDestroy_thenGetAllScheduled.
@Test
public void schedulePeriodicTask_withMultipleSchedulers_atRandomPartitions_shutdownOrDestroy_thenGetAllScheduled() throws ExecutionException, InterruptedException {
String runsCounterName = "runs";
HazelcastInstance[] instances = createClusterWithCount(3);
ICountDownLatch runsLatch = instances[0].getCountDownLatch(runsCounterName);
int numOfSchedulers = 10;
int numOfTasks = 10;
int expectedTotal = numOfSchedulers * numOfTasks;
runsLatch.trySetCount(expectedTotal);
for (int i = 0; i < numOfSchedulers; i++) {
IScheduledExecutorService s = getScheduledExecutor(instances, "scheduler_" + i);
String key = generateKeyOwnedBy(instances[1]);
for (int k = 0; k < numOfTasks; k++) {
s.scheduleOnKeyOwnerAtFixedRate(new ICountdownLatchRunnableTask(runsCounterName), key, 0, 2, SECONDS);
}
}
runsLatch.await(10, SECONDS);
getScheduledExecutor(instances, "scheduler_" + 0).shutdown();
getScheduledExecutor(instances, "scheduler_" + 1).shutdown();
getScheduledExecutor(instances, "scheduler_" + 3).destroy();
int actualTotal = 0;
for (int i = 0; i < numOfSchedulers; i++) {
actualTotal += countScheduledTasksOn(getScheduledExecutor(instances, "scheduler_" + i));
}
assertEquals(expectedTotal - 3 * /*numOfShutdownOrDestroy*/
numOfTasks, actualTotal, 0);
}
use of com.hazelcast.core.ICountDownLatch in project hazelcast by hazelcast.
the class ScheduledExecutorServiceSlowTest method schedulePeriodicTask_withMultipleSchedulers_atRandomPartitions_killMember_thenGetAllScheduled.
@Test
public void schedulePeriodicTask_withMultipleSchedulers_atRandomPartitions_killMember_thenGetAllScheduled() throws ExecutionException, InterruptedException {
String runsCounterName = "runs";
HazelcastInstance[] instances = createClusterWithCount(10);
ICountDownLatch runsLatch = instances[0].getCountDownLatch(runsCounterName);
int numOfSchedulers = 20;
int numOfTasks = 10;
int expectedTotal = numOfSchedulers * numOfTasks;
runsLatch.trySetCount(expectedTotal);
for (int i = 0; i < numOfSchedulers; i++) {
IScheduledExecutorService s = getScheduledExecutor(instances, "scheduler_" + i);
String key = generateKeyOwnedBy(instances[i % instances.length]);
for (int k = 0; k < numOfTasks; k++) {
s.scheduleOnKeyOwner(new ICountdownLatchRunnableTask(runsCounterName), key, 0, SECONDS);
}
}
runsLatch.await(10, SECONDS);
instances[1].getLifecycleService().terminate();
int actualTotal = 0;
for (int i = 0; i < numOfSchedulers; i++) {
actualTotal += countScheduledTasksOn(getScheduledExecutor(instances, "scheduler_" + i));
}
assertEquals(expectedTotal, actualTotal, 0);
}
use of com.hazelcast.core.ICountDownLatch in project hazelcast by hazelcast.
the class ScheduledExecutorServiceSlowTest method cancelUninterruptedTask_waitUntilRunCompleted_checkStatusIsCancelled.
@Test
public void cancelUninterruptedTask_waitUntilRunCompleted_checkStatusIsCancelled() throws ExecutionException, InterruptedException {
HazelcastInstance[] instances = createClusterWithCount(1);
String runFinishedLatchName = "runFinishedLatch";
ICountDownLatch latch = instances[0].getCountDownLatch(runFinishedLatchName);
latch.trySetCount(1);
IScheduledExecutorService executorService = getScheduledExecutor(instances, "s");
IScheduledFuture future = executorService.scheduleAtFixedRate(new HotLoopBusyTask(runFinishedLatchName), 0, 1, SECONDS);
assertFalse(future.isCancelled());
assertFalse(future.isDone());
future.cancel(false);
assertTrue(future.isCancelled());
assertTrue(future.isDone());
// Even though we cancelled the task is current task is still running.
// Wait till the task is actually done
latch.await(60, SECONDS);
// Make sure SyncState goes through
sleepSeconds(10);
// Check once more that the task status is consistent
assertTrue(future.isCancelled());
assertTrue(future.isDone());
}
use of com.hazelcast.core.ICountDownLatch in project hazelcast by hazelcast.
the class ScheduledExecutorServiceBasicTest method scheduleOnKeyOwner_withNotPeriodicRunableDurable.
@Test
public void scheduleOnKeyOwner_withNotPeriodicRunableDurable() throws ExecutionException, InterruptedException {
HazelcastInstance[] instances = createClusterWithCount(2);
String key = generateKeyOwnedBy(instances[1]);
IScheduledExecutorService s = getScheduledExecutor(instances, "s");
ICountDownLatch latch = instances[0].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());
}
Aggregations