From 9c20ddd05159eaf9c65dbfcc3af8f9e9b445d4bf Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Sun, 25 Sep 2016 11:20:20 +0100 Subject: [PATCH] Fix state action tests - Tests should now be more reliable as trying to make sure actions run before testing further. - Fixes #257 --- .../statemachine/AbstractStateMachineTests.java | 3 ++- .../statemachine/action/StateDoActivityActionTests.java | 6 ++++-- .../statemachine/uml/UmlStateMachineModelFactoryTests.java | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/AbstractStateMachineTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/AbstractStateMachineTests.java index 5d7f3c78..59c66f0e 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/AbstractStateMachineTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/AbstractStateMachineTests.java @@ -166,6 +166,7 @@ public abstract class AbstractStateMachineTests { long sleep; long now; + public CountDownLatch onExecuteStartLatch = new CountDownLatch(1); public AtomicBoolean interrupted = new AtomicBoolean(false); public CountDownLatch interruptedLatch = new CountDownLatch(1); @@ -176,12 +177,12 @@ public abstract class AbstractStateMachineTests { @Override public void execute(StateContext context) { + onExecuteStartLatch.countDown(); now = System.currentTimeMillis(); if (sleep > 0) { try { Thread.sleep(sleep); } catch (InterruptedException e) { - System.out.println("XXXXX " + e); interrupted.set(true); interruptedLatch.countDown(); } diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/action/StateDoActivityActionTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/action/StateDoActivityActionTests.java index 1bb746a0..2f32b0c3 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/action/StateDoActivityActionTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/action/StateDoActivityActionTests.java @@ -49,11 +49,11 @@ public class StateDoActivityActionTests extends AbstractStateMachineTests { assertThat(machine, notNullValue()); machine.start(); - machine.sendEvent(TestEvents.E1); assertThat(testActionS1.onExecuteLatch.await(2, TimeUnit.SECONDS), is(true)); + machine.sendEvent(TestEvents.E1); - machine.sendEvent(TestEvents.E2); assertThat(testActionS2.onExecuteLatch.await(2, TimeUnit.SECONDS), is(true)); + machine.sendEvent(TestEvents.E2); } @Test @@ -68,10 +68,12 @@ public class StateDoActivityActionTests extends AbstractStateMachineTests { assertThat(machine, notNullValue()); machine.start(); + assertThat(testActionS1.onExecuteStartLatch.await(2, TimeUnit.SECONDS), is(true)); machine.sendEvent(TestEvents.E1); assertThat(testActionS1.interruptedLatch.await(2, TimeUnit.SECONDS), is(true)); assertThat(testActionS1.onExecuteLatch.await(2, TimeUnit.SECONDS), is(true)); + assertThat(testActionS2.onExecuteStartLatch.await(2, TimeUnit.SECONDS), is(true)); machine.sendEvent(TestEvents.E2); assertThat(testActionS2.interruptedLatch.await(2, TimeUnit.SECONDS), is(true)); assertThat(testActionS2.onExecuteLatch.await(2, TimeUnit.SECONDS), is(true)); diff --git a/spring-statemachine-uml/src/test/java/org/springframework/statemachine/uml/UmlStateMachineModelFactoryTests.java b/spring-statemachine-uml/src/test/java/org/springframework/statemachine/uml/UmlStateMachineModelFactoryTests.java index fe81f508..18690ec8 100644 --- a/spring-statemachine-uml/src/test/java/org/springframework/statemachine/uml/UmlStateMachineModelFactoryTests.java +++ b/spring-statemachine-uml/src/test/java/org/springframework/statemachine/uml/UmlStateMachineModelFactoryTests.java @@ -671,11 +671,11 @@ public class UmlStateMachineModelFactoryTests extends AbstractUmlTests { LatchAction e2Action = context.getBean("e2Action", LatchAction.class); stateMachine.start(); assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S1")); - stateMachine.sendEvent("E1"); assertThat(e1Action.latch.await(1, TimeUnit.SECONDS), is(true)); + stateMachine.sendEvent("E1"); assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S2")); - stateMachine.sendEvent("E2"); assertThat(e2Action.latch.await(1, TimeUnit.SECONDS), is(true)); + stateMachine.sendEvent("E2"); assertThat(stateMachine.getState().getIds(), containsInAnyOrder("S3")); }