use of org.apache.helix.task.ScheduleConfig in project helix by apache.
the class TestUpdateWorkflow method testUpdateStoppedQueue.
@Test
public void testUpdateStoppedQueue() throws InterruptedException {
String queueName = TestHelper.getTestMethodName();
// Create a queue
LOG.info("Starting job-queue: " + queueName);
JobQueue queue = createDefaultRecurrentJobQueue(queueName, 2);
_driver.start(queue);
WorkflowContext wCtx = TaskTestUtil.pollForWorkflowContext(_driver, queueName);
// ensure current schedule is started
String scheduledQueue = wCtx.getLastScheduledSingleWorkflow();
_driver.pollForWorkflowState(scheduledQueue, TaskState.IN_PROGRESS);
_driver.stop(queueName);
WorkflowConfig workflowConfig = _driver.getWorkflowConfig(queueName);
Assert.assertEquals(workflowConfig.getTargetState(), TargetState.STOP);
WorkflowConfig.Builder configBuilder = new WorkflowConfig.Builder(workflowConfig);
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.SECOND, startTime.get(Calendar.SECOND) + 1);
ScheduleConfig scheduleConfig = ScheduleConfig.recurringFromDate(startTime.getTime(), TimeUnit.MINUTES, 2);
configBuilder.setScheduleConfig(scheduleConfig);
_driver.updateWorkflow(queueName, configBuilder.build());
workflowConfig = _driver.getWorkflowConfig(queueName);
Assert.assertEquals(workflowConfig.getTargetState(), TargetState.STOP);
_driver.resume(queueName);
// ensure current schedule is completed
_driver.pollForWorkflowState(scheduledQueue, TaskState.COMPLETED);
Thread.sleep(1000);
wCtx = TaskTestUtil.pollForWorkflowContext(_driver, queueName);
scheduledQueue = wCtx.getLastScheduledSingleWorkflow();
WorkflowConfig wCfg = _driver.getWorkflowConfig(scheduledQueue);
Calendar configStartTime = Calendar.getInstance();
configStartTime.setTime(wCfg.getStartTime());
Assert.assertTrue((startTime.get(Calendar.HOUR_OF_DAY) == configStartTime.get(Calendar.HOUR_OF_DAY) && startTime.get(Calendar.MINUTE) == configStartTime.get(Calendar.MINUTE) && startTime.get(Calendar.SECOND) == configStartTime.get(Calendar.SECOND)));
}
use of org.apache.helix.task.ScheduleConfig in project helix by apache.
the class TaskTestUtil method buildRecurrentJobQueue.
public static JobQueue.Builder buildRecurrentJobQueue(String jobQueueName, int delayStart, int recurrenInSeconds, TargetState targetState) {
WorkflowConfig.Builder workflowCfgBuilder = new WorkflowConfig.Builder(jobQueueName);
workflowCfgBuilder.setExpiry(120000);
if (targetState != null) {
workflowCfgBuilder.setTargetState(TargetState.STOP);
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE) + delayStart / 60);
cal.set(Calendar.SECOND, cal.get(Calendar.SECOND) + delayStart % 60);
cal.set(Calendar.MILLISECOND, 0);
ScheduleConfig scheduleConfig = ScheduleConfig.recurringFromDate(cal.getTime(), TimeUnit.SECONDS, recurrenInSeconds);
workflowCfgBuilder.setScheduleConfig(scheduleConfig);
return new JobQueue.Builder(jobQueueName).setWorkflowConfig(workflowCfgBuilder.build());
}
use of org.apache.helix.task.ScheduleConfig in project helix by apache.
the class TestUpdateWorkflow method testUpdateRunningQueue.
@Test
public void testUpdateRunningQueue() throws InterruptedException {
String queueName = TestHelper.getTestMethodName();
// Create a queue
LOG.info("Starting job-queue: " + queueName);
JobQueue queue = createDefaultRecurrentJobQueue(queueName, 2);
_driver.start(queue);
WorkflowContext wCtx = TaskTestUtil.pollForWorkflowContext(_driver, queueName);
WorkflowConfig workflowConfig = _driver.getWorkflowConfig(queueName);
WorkflowConfig.Builder configBuilder = new WorkflowConfig.Builder(workflowConfig);
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.SECOND, startTime.get(Calendar.SECOND) + 1);
ScheduleConfig scheduleConfig = ScheduleConfig.recurringFromDate(startTime.getTime(), TimeUnit.MINUTES, 2);
configBuilder.setScheduleConfig(scheduleConfig);
// ensure current schedule is started
String scheduledQueue = wCtx.getLastScheduledSingleWorkflow();
_driver.pollForWorkflowState(scheduledQueue, TaskState.IN_PROGRESS);
_driver.updateWorkflow(queueName, configBuilder.build());
// ensure current schedule is completed
_driver.pollForWorkflowState(scheduledQueue, TaskState.COMPLETED);
Thread.sleep(1000);
wCtx = TaskTestUtil.pollForWorkflowContext(_driver, queueName);
scheduledQueue = wCtx.getLastScheduledSingleWorkflow();
WorkflowConfig wCfg = _driver.getWorkflowConfig(scheduledQueue);
Calendar configStartTime = Calendar.getInstance();
configStartTime.setTime(wCfg.getStartTime());
Assert.assertTrue((startTime.get(Calendar.HOUR_OF_DAY) == configStartTime.get(Calendar.HOUR_OF_DAY) && startTime.get(Calendar.MINUTE) == configStartTime.get(Calendar.MINUTE) && startTime.get(Calendar.SECOND) == configStartTime.get(Calendar.SECOND)));
}
Aggregations