Polish tests and executor
- Remove extra logging - Polish tests, remove thread sleeps - Relates #466
This commit is contained in:
@@ -234,7 +234,6 @@ public class DefaultStateMachineExecutor<S, E> extends LifecycleObjectSupport im
|
||||
continue;
|
||||
}
|
||||
else if (!StateMachineUtils.isSubstate(source, completion)) {
|
||||
log.info("TTTTTT6 " + source.getId() + " " + completion.getId());
|
||||
continue;
|
||||
|
||||
}
|
||||
@@ -449,10 +448,10 @@ public class DefaultStateMachineExecutor<S, E> extends LifecycleObjectSupport im
|
||||
handleTriggerTrans(trans, queuedMessage);
|
||||
}
|
||||
|
||||
List<Transition<S, E>> ttt = new ArrayList<>();
|
||||
for (Transition<S, E> tt : triggerlessTransitions) {
|
||||
if (((AbstractTransition<S, E>)tt).getGuard() != null) {
|
||||
ttt.add(tt);
|
||||
List<Transition<S, E>> transWithGuards = new ArrayList<>();
|
||||
for (Transition<S, E> t : triggerlessTransitions) {
|
||||
if (((AbstractTransition<S, E>)t).getGuard() != null) {
|
||||
transWithGuards.add(t);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,7 +460,7 @@ public class DefaultStateMachineExecutor<S, E> extends LifecycleObjectSupport im
|
||||
// all "chained" transitions will get queue message
|
||||
boolean transit = false;
|
||||
do {
|
||||
transit = handleTriggerTrans(ttt, queuedMessage);
|
||||
transit = handleTriggerTrans(transWithGuards, queuedMessage);
|
||||
} while (transit);
|
||||
}
|
||||
|
||||
|
||||
@@ -278,4 +278,25 @@ public abstract class AbstractStateMachineTests {
|
||||
|
||||
}
|
||||
|
||||
public static class TestStateMachineListener4 extends StateMachineListenerAdapter<TestStates4, TestEvents> {
|
||||
|
||||
public volatile CountDownLatch stateChangedLatch = new CountDownLatch(6);
|
||||
public volatile CountDownLatch stateMachineStartedLatch = new CountDownLatch(1);
|
||||
|
||||
@Override
|
||||
public void stateChanged(State<TestStates4, TestEvents> from, State<TestStates4, TestEvents> to) {
|
||||
stateChangedLatch.countDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateMachineStarted(StateMachine<TestStates4, TestEvents> stateMachine) {
|
||||
stateMachineStartedLatch.countDown();
|
||||
}
|
||||
|
||||
public void reset(int c1, int c2) {
|
||||
stateChangedLatch = new CountDownLatch(c1);
|
||||
stateMachineStartedLatch = new CountDownLatch(c2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
@@ -174,10 +175,12 @@ public class EndStateTests extends AbstractStateMachineTests {
|
||||
@SuppressWarnings("unchecked")
|
||||
ObjectStateMachine<TestStates4,TestEvents> machine =
|
||||
context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, ObjectStateMachine.class);
|
||||
TestStateMachineListener4 listener = new TestStateMachineListener4();
|
||||
machine.addStateListener(listener);
|
||||
machine.start();
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateMachineStartedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
machine.sendEvent(TestEvents.E1);
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), contains(TestStates4.DONE));
|
||||
}
|
||||
|
||||
@@ -189,10 +192,12 @@ public class EndStateTests extends AbstractStateMachineTests {
|
||||
@SuppressWarnings("unchecked")
|
||||
ObjectStateMachine<TestStates4,TestEvents> machine =
|
||||
context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, ObjectStateMachine.class);
|
||||
TestStateMachineListener4 listener = new TestStateMachineListener4();
|
||||
machine.addStateListener(listener);
|
||||
machine.start();
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateMachineStartedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
machine.sendEvent(TestEvents.E1);
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), contains(TestStates4.DONE));
|
||||
}
|
||||
|
||||
@@ -204,17 +209,28 @@ public class EndStateTests extends AbstractStateMachineTests {
|
||||
@SuppressWarnings("unchecked")
|
||||
ObjectStateMachine<TestStates4,TestEvents> machine =
|
||||
context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, ObjectStateMachine.class);
|
||||
TestStateMachineListener4 listener = new TestStateMachineListener4();
|
||||
machine.addStateListener(listener);
|
||||
listener.reset(1, 1);
|
||||
|
||||
machine.start();
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateMachineStartedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), contains(TestStates4.READY));
|
||||
|
||||
listener.reset(3, 0);
|
||||
machine.sendEvent(TestEvents.E1);
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), containsInAnyOrder(TestStates4.TASKS, TestStates4.T1, TestStates4.T2));
|
||||
|
||||
listener.reset(1, 0);
|
||||
machine.sendEvent(TestEvents.E2);
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), containsInAnyOrder(TestStates4.TASKS, TestStates4.T1E, TestStates4.T2));
|
||||
|
||||
listener.reset(2, 0);
|
||||
machine.sendEvent(TestEvents.E3);
|
||||
Thread.sleep(1000);
|
||||
assertThat(listener.stateChangedLatch.await(2, TimeUnit.SECONDS), is(true));
|
||||
assertThat(machine.getState().getIds(), contains(TestStates4.DONE));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user