Author: thomas.diesler(a)jboss.com
Date: 2008-10-06 13:09:29 -0400 (Mon, 06 Oct 2008)
New Revision: 2490
Modified:
projects/spec/trunk/modules/cts/pom.xml
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
Log:
Pass more gateway tests
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-10-06 15:53:38 UTC (rev 2489)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-10-06 17:09:29 UTC (rev 2490)
@@ -70,11 +70,8 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
-
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
-
<exclude>org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java</exclude>
-
<exclude>org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java</exclude>
</excludes>
</configuration>
</plugin>
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-06
15:53:38 UTC (rev 2489)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-06
17:09:29 UTC (rev 2490)
@@ -24,23 +24,14 @@
// $Id$
import java.io.IOException;
+import java.util.List;
-import org.jbpm.api.client.SignalListener;
-import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.Assignment.AssignTime;
-import org.jbpm.api.model.Event.EventDetailType;
-import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Gateway.GatewayType;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.EventBuilder;
-import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.api.service.SignalService;
import org.jbpm.api.test.CTSTestCase;
/**
@@ -53,163 +44,31 @@
*/
public class ExclusiveGatewayMergeTest extends CTSTestCase
{
- public void testGateA() throws Exception
+ public void testMerge() throws Exception
{
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
- // Add a signal listener that sends the other start trigger signal
- SignalService sigManager = SignalService.locateSignalService();
- MergeListener sigListener = new MergeListener(new Signal(getTestID(),
SignalType.SYSTEM_START_TRIGGER, "B"));
- sigManager.addSignalListener(sigListener);
+ // Start the process
+ proc.startProcess();
- try
- {
- // Send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
+ // Wait for the process to end
+ proc.waitForEnd();
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
// Verify the result
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("TaskA",
endMessage.getProperty("taskValue").getValue());
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
+ assertEquals(1, endSignals.size());
}
- public void testGateB() throws Exception
- {
- ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
- Process proc = procDef.newInstance();
-
- // Add a signal listener that sends the other start trigger signal
- SignalService sigManager = SignalService.locateSignalService();
- MergeListener sigListener = new MergeListener(new Signal(getTestID(),
SignalType.SYSTEM_START_TRIGGER, "A"));
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"B"));
-
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- // Verify the result
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("TaskB",
endMessage.getProperty("taskValue").getValue());
- }
-
- public void testInvalidToken() throws Exception
- {
- ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
- Process proc = procDef.newInstance();
-
- // Add a signal listener that sends the other start trigger signal
- SignalService sigManager = SignalService.locateSignalService();
- MergeListener sigListener = new MergeListener(new Signal(getTestID(),
SignalType.SYSTEM_START_TRIGGER, "A"));
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
-
- try
- {
- proc.waitForEnd();
- fail("Expected: Unexpected token from:
SequenceFlow[TaskA->Merge]");
- }
- catch (RuntimeException rte)
- {
- // expected
- }
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- // Add a signal listener that sends the other start trigger signal
- sigListener = new MergeListener(new Signal(getTestID(),
SignalType.SYSTEM_START_TRIGGER, "B"));
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
-
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- // Verify the result
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("TaskA",
endMessage.getProperty("taskValue").getValue());
- }
-
public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder =
procBuilder.addProcess(getName()).addStartEvent("StartA",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
- TaskBuilder taskBuilder =
procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
- taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL,
"'TaskA'", "taskValue");
- taskBuilder.addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
- taskBuilder =
procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
- taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL,
"'TaskB'", "taskValue");
- taskBuilder.addSequenceFlow("Merge");
+
procBuilder.addProcess("ExclusiveGatewayMerge").addStartEvent("Start").addSequenceFlow("Split");
+ procBuilder.addGateway("Split",
GatewayType.Inclusive).addSequenceFlow("TaskA").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskA").addSequenceFlow("Merge");
+ procBuilder.addTask("TaskB").addSequenceFlow("Merge");
procBuilder.addGateway("Merge",
GatewayType.Exclusive).addSequenceFlow("End");
- procBuilder.addEndEvent("End",
EventDetailType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
- msgBuilder.addToRef(getTestID()).addProperty("taskValue", null, true);
+ procBuilder.addEndEvent("End");
return procBuilder.getProcessDefinition();
}
-
- class MergeListener implements SignalListener
- {
- private Signal nextSignal;
-
- public MergeListener(Signal nextSignal)
- {
- this.nextSignal = nextSignal;
- }
-
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
- }
-
- public void catchSignal(Signal signal)
- {
- if (nextSignal != null)
- {
- SignalService sigService = SignalService.locateSignalService();
- sigService.throwSignal(nextSignal);
- nextSignal = null;
- }
- }
- }
}
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-06
15:53:38 UTC (rev 2489)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-06
17:09:29 UTC (rev 2490)
@@ -43,12 +43,12 @@
*/
public class InclusiveGatewayMergeTest extends CTSTestCase
{
- public void testGateA() throws Exception
+ public void testSimpleMerge() throws Exception
{
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
- // Start the process and send start trigger signal
+ // Start the process
proc.startProcess();
// Wait for the process to end
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-06
15:53:38 UTC (rev 2489)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-06
17:09:29 UTC (rev 2490)
@@ -52,7 +52,7 @@
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
- // Start the process and send start trigger signal
+ // Start the process
proc.startProcess();
// Wait for the process to end
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-06
15:53:38 UTC (rev 2489)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-06
17:09:29 UTC (rev 2490)
@@ -26,17 +26,12 @@
import java.io.IOException;
import java.util.List;
-import org.jbpm.api.client.SignalListener;
-import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.Event.EventDetailType;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.EventBuilder;
+import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.service.SignalService;
import org.jbpm.api.test.CTSTestCase;
/**
@@ -53,25 +48,12 @@
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
- // Add a signal listener that sends the other start trigger signal
- MergeListener sigListener = new MergeListener(procDef.getName(), new
Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
- SignalService sigManager = SignalService.locateSignalService();
- sigManager.addSignalListener(sigListener);
+ // Start the process
+ proc.startProcess();
- try
- {
- // Send start trigger signals
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
+ // Wait for the process to end
+ proc.waitForEnd();
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(2, endSignals.size());
}
@@ -79,37 +61,12 @@
public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder =
procBuilder.addProcess(getName()).addStartEvent("StartA",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
- eventBuilder =
procBuilder.addSequenceFlow("Merge").addStartEvent("StartB",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
- procBuilder.addSequenceFlow("Merge").addGateway("Merge",
Gateway.GatewayType.Inclusive).addSequenceFlow("End");
+
procBuilder.addProcess("ParallelGatewayMerge").addStartEvent("Start").addSequenceFlow("Split");
+ procBuilder.addGateway("Split",
GatewayType.Inclusive).addSequenceFlow("TaskA").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskA").addSequenceFlow("Merge");
+ procBuilder.addTask("TaskB").addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge",
GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
return procBuilder.getProcessDefinition();
}
-
- class MergeListener implements SignalListener
- {
- private Signal nextSignal;
-
- public MergeListener(String fromRef, Signal nextSignal)
- {
- this.nextSignal = nextSignal;
- }
-
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
- }
-
- public void catchSignal(Signal signal)
- {
- if (nextSignal != null)
- {
- SignalService sigService = SignalService.locateSignalService();
- sigService.throwSignal(nextSignal);
- nextSignal = null;
- }
- }
- }
}
Modified:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
===================================================================
---
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-10-06
15:53:38 UTC (rev 2489)
+++
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-10-06
17:09:29 UTC (rev 2490)
@@ -25,22 +25,16 @@
import java.io.IOException;
-import org.jbpm.api.client.SignalListener;
-import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
-import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.EventBuilder;
+import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.api.service.SignalService;
import org.jbpm.api.test.CTSTestCase;
/**
@@ -57,105 +51,13 @@
{
ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
Process proc = procDef.newInstance();
-
- // Add a signal listener that sends the other start trigger signal
- MergeListener sigListener = new MergeListener(new Signal(getTestID(),
SignalType.SYSTEM_START_TRIGGER, "B"));
- SignalService sigManager = SignalService.locateSignalService();
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Start the process and send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
-
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- // Verify the result
- Message endMessage = getMessages().get(0);
- assertEquals("TaskA",
endMessage.getProperty("taskValueA").getValue());
- assertEquals("TaskB",
endMessage.getProperty("taskValueB").getValue());
- }
-
- public void testMergeTimeout() throws Exception
- {
- ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
- Process proc = procDef.newInstance();
-
- // Start the process and send start trigger signal
+
+ // Start the process
proc.startProcess();
- SignalService sigService = SignalService.locateSignalService();
- sigService.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
// Wait for the process to end
- try
- {
- proc.waitForEnd(1000);
- fail("timeout expected");
- }
- catch (RuntimeException rte)
- {
- // expected
- }
- }
+ proc.waitForEnd();
- public void testInvalidToken() throws Exception
- {
- ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
- Process proc = procDef.newInstance();
-
- // Add a signal listener that sends the other start trigger signal
- Signal startTrigger = new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A");
- MergeListener sigListener = new MergeListener(startTrigger);
- SignalService sigManager = SignalService.locateSignalService();
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Start the process and send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
-
- try
- {
- proc.waitForEnd();
- fail("Expected: Unexpected token from:
SequenceFlow[TaskA->Merge]");
- }
- catch (RuntimeException rte)
- {
- // expected
- }
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- // Add a signal listener that sends the other start trigger signal
- startTrigger = new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"B");
- sigListener = new MergeListener(startTrigger);
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Start the process and send start trigger signal
- proc.startProcess();
- sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER,
"A"));
-
- // Wait for the process to end
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
// Verify the result
Message endMessage = getMessages().get(0);
assertEquals("TaskA",
endMessage.getProperty("taskValueA").getValue());
@@ -165,45 +67,14 @@
public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder =
procBuilder.addProcess("Synchronization").addStartEvent("StartA",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
- TaskBuilder taskBuilder =
procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
- taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL,
"'TaskA'", "taskValueA");
- taskBuilder.addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB",
EventDetailType.Signal);
- eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
- taskBuilder =
procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
- taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL,
"'TaskB'", "taskValueB");
- taskBuilder.addSequenceFlow("Merge");
- procBuilder.addGateway("Merge",
Gateway.GatewayType.Parallel).addSequenceFlow("End");
+
procBuilder.addProcess("ParallelGatewayMerge").addStartEvent("Start").addSequenceFlow("Split");
+ procBuilder.addGateway("Split",
GatewayType.Parallel).addSequenceFlow("TaskA").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskA").addNodeAssignment(AssignTime.Start,
ExpressionLanguage.MVEL, "'TaskA'",
"taskValueA").addSequenceFlow("Merge");
+ procBuilder.addTask("TaskB").addNodeAssignment(AssignTime.Start,
ExpressionLanguage.MVEL, "'TaskB'",
"taskValueB").addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge",
GatewayType.Parallel).addSequenceFlow("End");
procBuilder.addEndEvent("End",
EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null,
true).addProperty("taskValueB", null, true);
return procBuilder.getProcessDefinition();
}
-
- public static class MergeListener implements SignalListener
- {
- private Signal nextSignal;
-
- public MergeListener(Signal nextSignal)
- {
- this.nextSignal = nextSignal;
- }
-
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
- }
-
- public void catchSignal(Signal signal)
- {
- if (nextSignal != null)
- {
- SignalService sigService = SignalService.locateSignalService();
- sigService.throwSignal(nextSignal);
- nextSignal = null;
- }
- }
- }
}