use of com.sequenceiq.flow.component.sleep.event.SleepChainTriggerEvent in project cloudbreak by hortonworks.
the class FlowComponentTest method startIdempotentFlowChainWhileTheOtherIsRunningReturnsOriginalFlowChainId.
@Test
public void startIdempotentFlowChainWhileTheOtherIsRunningReturnsOriginalFlowChainId() throws InterruptedException {
long resourceId = RESOURCE_ID_SEC.incrementAndGet();
SleepChainTriggerEvent sleepChainTriggerEvent1 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)));
SleepChainTriggerEvent sleepChainTriggerEvent2 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)));
FlowAcceptResult acceptResult1 = startSleepFlowChain(sleepChainTriggerEvent1);
FlowAcceptResult acceptResult2 = startSleepFlowChain(sleepChainTriggerEvent2);
assertRunningInFlowChain(acceptResult1);
assertRunningInFlowChain(acceptResult2);
waitFlowChainToComplete(SLEEP_TIME.multipliedBy(WAIT_FACTOR), acceptResult2);
}
use of com.sequenceiq.flow.component.sleep.event.SleepChainTriggerEvent in project cloudbreak by hortonworks.
the class FlowComponentTest method startingFlowChainFailsWhenFlowIsAlreadyRunning.
@Test
public void startingFlowChainFailsWhenFlowIsAlreadyRunning() throws InterruptedException {
long resourceId = RESOURCE_ID_SEC.incrementAndGet();
SleepStartEvent sleepStartEvent = SleepStartEvent.neverFail(resourceId, SLEEP_TIME);
SleepChainTriggerEvent sleepChainTriggerEvent = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)));
FlowAcceptResult acceptResult = startSleepFlow(sleepStartEvent);
FlowAcceptResult rejectResult = startSleepFlowChain(sleepChainTriggerEvent);
assertRunningInFlow(acceptResult);
assertRejected(rejectResult);
waitFlowToComplete(SLEEP_TIME.multipliedBy(WAIT_FACTOR), acceptResult);
}
use of com.sequenceiq.flow.component.sleep.event.SleepChainTriggerEvent in project cloudbreak by hortonworks.
the class FlowComponentTest method startNestedFlowChainThenWaitForComplete.
@Test
public void startNestedFlowChainThenWaitForComplete() throws InterruptedException {
long resourceId = RESOURCE_ID_SEC.incrementAndGet();
Promise<AcceptResult> accepted1 = new Promise<>();
SleepChainTriggerEvent sleepChainTriggerEvent1 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)), accepted1);
SleepChainTriggerEvent sleepChainTriggerEvent2 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)), accepted1);
NestedSleepChainTriggerEvent nestedSleepChainTriggerEvent1 = new NestedSleepChainTriggerEvent(resourceId, Lists.newArrayList(sleepChainTriggerEvent1, sleepChainTriggerEvent2), accepted1);
Promise<AcceptResult> accepted2 = new Promise<>();
SleepChainTriggerEvent sleepChainTriggerEvent3 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)), accepted2);
SleepChainTriggerEvent sleepChainTriggerEvent4 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)), accepted2);
NestedSleepChainTriggerEvent nestedSleepChainTriggerEvent2 = new NestedSleepChainTriggerEvent(resourceId, Lists.newArrayList(sleepChainTriggerEvent3, sleepChainTriggerEvent4), accepted2);
FlowAcceptResult acceptResult1 = startNestedSleepFlowChain(nestedSleepChainTriggerEvent1);
FlowAcceptResult acceptResult2 = startNestedSleepFlowChain(nestedSleepChainTriggerEvent2);
assertRunningInFlowChain(acceptResult1);
assertRunningInFlowChain(acceptResult2);
waitFlowChainToComplete(SLEEP_TIME.multipliedBy(WAIT_FACTOR), acceptResult1);
}
use of com.sequenceiq.flow.component.sleep.event.SleepChainTriggerEvent in project cloudbreak by hortonworks.
the class FlowComponentTest method startingDifferentFlowChainFailsBeforeFirstCompletes.
@Test
public void startingDifferentFlowChainFailsBeforeFirstCompletes() throws InterruptedException {
long resourceId = RESOURCE_ID_SEC.incrementAndGet();
SleepChainTriggerEvent sleepChainTriggerEvent1 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)));
SleepChainTriggerEvent sleepChainTriggerEvent2 = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.ALWAYS_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.ALWAYS_FAIL)));
FlowAcceptResult acceptResult = startSleepFlowChain(sleepChainTriggerEvent1);
FlowAcceptResult rejectResult = startSleepFlowChain(sleepChainTriggerEvent2);
assertRunningInFlowChain(acceptResult);
assertRejected(rejectResult);
waitFlowChainToComplete(SLEEP_TIME.multipliedBy(WAIT_FACTOR), acceptResult);
}
use of com.sequenceiq.flow.component.sleep.event.SleepChainTriggerEvent in project cloudbreak by hortonworks.
the class FlowComponentTest method startFlowChainWhenSecondFlowTriggerConditionFailsItShouldFail.
@Test
public void startFlowChainWhenSecondFlowTriggerConditionFailsItShouldFail() throws InterruptedException {
reset(sleepTriggerCondition);
when(sleepTriggerCondition.isFlowTriggerable(anyLong())).thenReturn(FlowTriggerConditionResult.OK).thenReturn(new FlowTriggerConditionResult("Error"));
long resourceId = RESOURCE_ID_SEC.incrementAndGet();
SleepChainTriggerEvent sleepChainTriggerEvent = new SleepChainTriggerEvent(resourceId, Lists.newArrayList(new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL), new SleepConfig(SLEEP_TIME, SleepStartEvent.NEVER_FAIL)));
FlowAcceptResult acceptResult = startSleepFlowChain(sleepChainTriggerEvent);
assertRunningInFlowChain(acceptResult);
waitFlowChainToFail(SLEEP_TIME.multipliedBy(WAIT_FACTOR), acceptResult);
}
Aggregations