@Test public void testStarting() { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, STARTING); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); stateMachine = createQueryStateMachine(); stateMachine.transitionToStarting(); assertTrue(stateMachine.transitionToFinishing()); tryGetFutureValue(stateMachine.getStateChange(FINISHING), 2, SECONDS); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToStarting(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED, FAILED_CAUSE); }
private static void assertFinalState(QueryStateMachine stateMachine, QueryState expectedState, Exception expectedException) { assertTrue(expectedState.isDone()); assertState(stateMachine, expectedState, expectedException); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, expectedState, expectedException); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, expectedState, expectedException); assertFalse(stateMachine.transitionToRunning()); assertState(stateMachine, expectedState, expectedException); assertFalse(stateMachine.transitionToFinishing()); assertState(stateMachine, expectedState, expectedException); assertFalse(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, expectedState, expectedException); // attempt to fail with another exception, which will fail assertFalse(stateMachine.transitionToFailed(new IOException("failure after finish"))); assertState(stateMachine, expectedState, expectedException); }
@Test public void testBasicStateChanges() { QueryStateMachine stateMachine = createQueryStateMachine(); assertState(stateMachine, QUEUED); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertTrue(stateMachine.transitionToFinishing()); tryGetFutureValue(stateMachine.getStateChange(FINISHING), 2, SECONDS); assertState(stateMachine, FINISHED); }
@Test public void testStateChangesWithResourceWaiting() { QueryStateMachine stateMachine = createQueryStateMachine(); assertState(stateMachine, QUEUED); assertTrue(stateMachine.transitionToWaitingForResources()); assertState(stateMachine, WAITING_FOR_RESOURCES); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertTrue(stateMachine.transitionToFinishing()); tryGetFutureValue(stateMachine.getStateChange(FINISHING), 2, SECONDS); assertState(stateMachine, FINISHED); }
if (!stateMachine.transitionToStarting()) {
@Test public void testRunning() { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertTrue(stateMachine.transitionToFinishing()); tryGetFutureValue(stateMachine.getStateChange(FINISHING), 2, SECONDS); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToRunning(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED, FAILED_CAUSE); }
@Test public void testPlanning() { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToFinishing()); tryGetFutureValue(stateMachine.getStateChange(FINISHING), 2, SECONDS); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED, FAILED_CAUSE); }
assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING);
@Test public void testStarting() throws InterruptedException { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, STARTING); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); stateMachine = createQueryStateMachine(); stateMachine.transitionToStarting(); assertTrue(stateMachine.transitionToFinishing()); stateMachine.waitForStateChange(FINISHING, new Duration(2, TimeUnit.SECONDS)); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToStarting(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED); }
if (!stateMachine.transitionToStarting()) {
private static void assertFinalState(QueryStateMachine stateMachine, QueryState expectedState) { assertTrue(expectedState.isDone()); assertState(stateMachine, expectedState); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, expectedState); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, expectedState); assertFalse(stateMachine.transitionToRunning()); assertState(stateMachine, expectedState); assertFalse(stateMachine.transitionToFinishing()); assertState(stateMachine, expectedState); assertFalse(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, expectedState); // attempt to fail with another exception, which will fail assertFalse(stateMachine.transitionToFailed(new IOException("failure after finish"))); assertState(stateMachine, expectedState); }
@Test public void testBasicStateChanges() throws InterruptedException { QueryStateMachine stateMachine = createQueryStateMachine(); assertState(stateMachine, QUEUED); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertTrue(stateMachine.transitionToFinishing()); stateMachine.waitForStateChange(FINISHING, new Duration(2, TimeUnit.SECONDS)); assertState(stateMachine, FINISHED); }
@Test public void testRunning() throws InterruptedException { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToStarting()); assertState(stateMachine, RUNNING); assertFalse(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); assertTrue(stateMachine.transitionToFinishing()); stateMachine.waitForStateChange(FINISHING, new Duration(2, TimeUnit.SECONDS)); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToRunning(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED); }
@Test public void testQueued() throws InterruptedException { QueryStateMachine stateMachine = createQueryStateMachine(); assertState(stateMachine, QUEUED); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToFinishing()); stateMachine.waitForStateChange(FINISHING, new Duration(2, TimeUnit.SECONDS)); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED); }
@Test public void testPlanning() throws InterruptedException { QueryStateMachine stateMachine = createQueryStateMachine(); assertTrue(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertFalse(stateMachine.transitionToPlanning()); assertState(stateMachine, PLANNING); assertTrue(stateMachine.transitionToStarting()); assertState(stateMachine, STARTING); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToRunning()); assertState(stateMachine, RUNNING); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToFinishing()); stateMachine.waitForStateChange(FINISHING, new Duration(2, TimeUnit.SECONDS)); assertState(stateMachine, FINISHED); stateMachine = createQueryStateMachine(); stateMachine.transitionToPlanning(); assertTrue(stateMachine.transitionToFailed(FAILED_CAUSE)); assertState(stateMachine, FAILED); }