Example usage for org.springframework.statemachine.recipes.tasks TasksHandler STATE_READY

List of usage examples for org.springframework.statemachine.recipes.tasks TasksHandler STATE_READY

Introduction

In this page you can find the example usage for org.springframework.statemachine.recipes.tasks TasksHandler STATE_READY.

Prototype

String STATE_READY

To view the source code for org.springframework.statemachine.recipes.tasks TasksHandler STATE_READY.

Click Source Link

Usage

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testRunOnceSimpleNoFailures() throws InterruptedException {
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", sleepRunnable()).build();

    TestListener listener = new TestListener();
    listener.reset(9, 0, 0);// w w  w  . j  a  v a  2  s  .  com
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(9));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
    Map<Object, Object> variables = machine.getExtendedState().getVariables();
    assertThat(variables.size(), is(3));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testRunFailAndFixAndContinue() throws InterruptedException {
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", failRunnable()).build();

    TestListener listener = new TestListener();
    listener.reset(11, 0, 0);/*from   w  w w .  j a  v  a2s.c  o m*/
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(11));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_ERROR, TasksHandler.STATE_MANUAL));

    listener.reset(0, 0, 0, 0, 1);
    handler.fixCurrentProblems();
    assertThat(listener.extendedStateChangedLatch.await(1, TimeUnit.SECONDS), is(true));

    listener.reset(1, 0, 0);
    handler.continueFromError();
    assertThat(listener.stateChangedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(1));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testRunFailAndAutomaticFix() throws InterruptedException {
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", failRunnable()).build();

    TestTasksListener tasksListener = new TestTasksListener();
    tasksListener.fix = true;//from   w ww  .  ja  v  a  2 s .  c  o m
    handler.addTasksListener(tasksListener);

    TestListener listener = new TestListener();
    listener.reset(1, 0, 0);
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(1));

    listener.reset(10, 0, 0);

    handler.runTasks();
    assertThat(listener.stateChangedLatch.await(4, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(10));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testDagSingleRoot() throws InterruptedException {
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("1", "12", sleepRunnable())
            .task("1", "13", sleepRunnable()).build();

    TestListener listener = new TestListener();
    listener.reset(9, 0, 0);/*from w w  w. ja v  a 2 s  .  c om*/
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(12, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(9));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
    Map<Object, Object> variables = machine.getExtendedState().getVariables();
    assertThat(variables.size(), is(3));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testDagMultiRoot() throws InterruptedException {
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("1", "12", sleepRunnable())
            .task("1", "13", sleepRunnable()).task("2", sleepRunnable()).task("2", "22", sleepRunnable())
            .task("2", "23", sleepRunnable()).task("3", sleepRunnable()).task("3", "32", sleepRunnable())
            .task("3", "33", sleepRunnable()).build();

    TestListener listener = new TestListener();
    StateMachine<String, String> machine = handler.getStateMachine();

    machine.addStateListener(listener);//from w w  w .  j  a va  2s  . c o m
    listener.reset(1, 0, 0);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(1));

    listener.reset(20, 0, 0);
    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(10, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(20));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
    Map<Object, Object> variables = machine.getExtendedState().getVariables();
    assertThat(variables.size(), is(9));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testEvents1() throws InterruptedException {
    TestTasksListener tasksListener = new TestTasksListener();
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", sleepRunnable()).listener(tasksListener).build();

    TestListener listener = new TestListener();
    listener.reset(9, 0, 0);/* w ww  .j  a  va2 s  . c o m*/
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    tasksListener.reset(1, 0, 3, 3, 0, 3, 1, 0);
    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(9));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));

    assertThat(tasksListener.onTasksStartedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTasksStarted, is(1));
    assertThat(tasksListener.onTaskPreExecuteLatch.await(3, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTaskPreExecute, is(3));
    assertThat(tasksListener.onTaskPostExecuteLatch.await(3, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTaskPostExecute, is(3));
    assertThat(tasksListener.onTaskFailed, is(0));
    assertThat(tasksListener.onTaskSuccessLatch.await(3, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTaskSuccess, is(3));
    assertThat(tasksListener.onTasksSuccessLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTasksSuccess, is(1));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testEvents3() throws InterruptedException {
    TestTasksListener tasksListener = new TestTasksListener();
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", failRunnable()).listener(tasksListener).build();

    TestListener listener = new TestListener();
    listener.reset(11, 0, 0);/*from   ww w .j  a va  2 s . c o  m*/
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    tasksListener.reset(0, 1, 0, 0, 0, 0, 0, 0);
    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(11));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_ERROR, TasksHandler.STATE_MANUAL));

    listener.reset(1, 0, 0);
    handler.fixCurrentProblems();
    handler.continueFromError();
    assertThat(listener.stateChangedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(1));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));

    assertThat(tasksListener.onTasksContinueLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTasksContinue, is(1));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testPersist1() throws InterruptedException {
    TestStateMachinePersist persist = new TestStateMachinePersist();
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", sleepRunnable()).persist(persist).build();

    TestListener listener = new TestListener();
    listener.reset(9, 0, 0);//  w  ww .  j av  a2s.  c o m
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);
    machine.start();
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    persist.reset(5);

    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(9));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
    Map<Object, Object> variables = machine.getExtendedState().getVariables();
    assertThat(variables.size(), is(3));

    assertThat(persist.writeLatch.await(4, TimeUnit.SECONDS), is(true));
    assertThat(persist.contexts.size(), is(5));

    for (StateMachineContext<String, String> context : persist.getContexts()) {
        if (context.getState() == "TASKS") {
            assertThat(context.getChilds().size(), is(3));
        } else {
            assertThat(context.getChilds().size(), is(0));
        }
    }
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

@Test
public void testReset3() throws InterruptedException {
    log.info("testReset3 start");
    List<StateMachineContext<String, String>> childs = new ArrayList<StateMachineContext<String, String>>();
    DefaultStateMachineContext<String, String> context = new DefaultStateMachineContext<String, String>(childs,
            "ERROR", null, null, null);
    TestStateMachinePersist persist = new TestStateMachinePersist(context);
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", sleepRunnable()).persist(persist).build();

    TestListener listener = new TestListener();
    listener.reset(2, 0, 0);/*from ww  w  . j av a2s . c  om*/
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);

    handler.resetFromPersistStore();

    log.info("testReset3 wait stateMachineStartedLatch");
    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    log.info("testReset3 wait stateChangedLatch");
    assertThat(listener.stateChangedLatch.await(4, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(2));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
}

From source file:org.springframework.statemachine.recipes.TasksHandlerTests.java

public void testReset4() throws InterruptedException {
    // TODO: automaticAction() is not executed when state is reset
    DefaultStateMachineContext<String, String> child = new DefaultStateMachineContext<String, String>(
            "AUTOMATIC", null, null, null);
    List<StateMachineContext<String, String>> childs = new ArrayList<StateMachineContext<String, String>>();
    childs.add(child);/*from  w  w w  .  j a  v  a  2 s. c o  m*/
    DefaultStateMachineContext<String, String> context = new DefaultStateMachineContext<String, String>(childs,
            "ERROR", null, null, null);
    TestStateMachinePersist persist = new TestStateMachinePersist(context);
    TasksHandler handler = TasksHandler.builder().task("1", sleepRunnable()).task("2", sleepRunnable())
            .task("3", sleepRunnable()).persist(persist).build();

    TestListener listener = new TestListener();
    listener.reset(2, 0, 0);
    StateMachine<String, String> machine = handler.getStateMachine();
    machine.addStateListener(listener);

    handler.resetFromPersistStore();

    assertThat(listener.stateMachineStartedLatch.await(1, TimeUnit.SECONDS), is(true));

    assertThat(listener.stateChangedLatch.await(4, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(2));
    assertThat(machine.getState().getIds(), contains(TasksHandler.STATE_READY));
}