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

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

Introduction

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

Prototype

public static Builder builder() 

Source Link

Document

Gets a new instance of a Builder which is used to build an instance of a TasksHandler .

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);//from  w w w. java  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(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 testRunFail() 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  www  .  j  a  va  2 s .  co  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));
    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  va  2s.co 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  www.  j a  v  a2s  .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 ww  w .  jav  a 2s.co  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(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);//  ww  w  .jav  a2 s.  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 .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));

    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 testEvents2() 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);/* ww w  . j a v a  2s  .  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, 0, 0, 1, 0, 0, 1);
    handler.runTasks();

    assertThat(listener.stateChangedLatch.await(8, TimeUnit.SECONDS), is(true));
    assertThat(listener.stateChangedCount, is(11));

    assertThat(tasksListener.onTasksStartedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTasksStarted, is(1));
    assertThat(tasksListener.onTaskSuccessLatch.await(2, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTaskSuccess, is(2));
    assertThat(tasksListener.onTaskFailedLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTaskFailed, is(1));
    assertThat(tasksListener.onTasksErrorLatch.await(1, TimeUnit.SECONDS), is(true));
    assertThat(tasksListener.onTasksError, is(1));
    assertThat(tasksListener.onTasksSuccess, is(0));
}

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);/*  w  ww. jav  a  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);//ww  w .  j a  v  a2s. c om
    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));
        }
    }
}