Skip to content

Commit

Permalink
cleanup of (timer, executor) tests to avoid Thread.sleep usage
Browse files Browse the repository at this point in the history
closes #314
  • Loading branch information
mswiderski committed Oct 27, 2015
1 parent bea9921 commit 08905df
Show file tree
Hide file tree
Showing 90 changed files with 2,769 additions and 1,232 deletions.
Expand Up @@ -270,7 +270,6 @@ public Object end(final String uri, final String localName,
String uniqueId = (String) node.getMetaData().get("UniqueId"); String uniqueId = (String) node.getMetaData().get("UniqueId");
forEachNode.setMetaData("UniqueId", uniqueId); forEachNode.setMetaData("UniqueId", uniqueId);
node.setMetaData("UniqueId", uniqueId + ":" + uniqueIdGen++); node.setMetaData("UniqueId", uniqueId + ":" + uniqueIdGen++);
node.setMetaData("hidden", true);
forEachNode.addNode(node); forEachNode.addNode(node);
forEachNode.linkIncomingConnections(NodeImpl.CONNECTION_DEFAULT_TYPE, node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE); forEachNode.linkIncomingConnections(NodeImpl.CONNECTION_DEFAULT_TYPE, node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE);
forEachNode.linkOutgoingConnections(node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE, NodeImpl.CONNECTION_DEFAULT_TYPE); forEachNode.linkOutgoingConnections(node.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE, NodeImpl.CONNECTION_DEFAULT_TYPE);
Expand Down
40 changes: 23 additions & 17 deletions jbpm-bpmn2/src/test/java/org/jbpm/bpmn2/ActivityTest.java
Expand Up @@ -45,6 +45,7 @@
import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener; import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener;
import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler; import org.jbpm.process.instance.impl.demo.DoNothingWorkItemHandler;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler; import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.test.util.CountDownProcessEventListener;
import org.jbpm.workflow.instance.node.DynamicNodeInstance; import org.jbpm.workflow.instance.node.DynamicNodeInstance;
import org.jbpm.workflow.instance.node.DynamicUtils; import org.jbpm.workflow.instance.node.DynamicUtils;
import org.jbpm.workflow.instance.node.WorkItemNodeInstance; import org.jbpm.workflow.instance.node.WorkItemNodeInstance;
Expand Down Expand Up @@ -553,11 +554,13 @@ public Void execute(Context context) {
ksession.dispose(); ksession.dispose();
} }


@Test @Test(timeout=10000)
@RequirePersistence @RequirePersistence
public void testProcesWithHumanTaskWithTimer() throws Exception { public void testProcesWithHumanTaskWithTimer() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("Timer", 1);
KieBase kbase = createKnowledgeBase("BPMN2-SubProcessWithTimer.bpmn2"); KieBase kbase = createKnowledgeBase("BPMN2-SubProcessWithTimer.bpmn2");
StatefulKnowledgeSession ksession = createKnowledgeSession(kbase); StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
workItemHandler); workItemHandler);
Expand All @@ -573,11 +576,11 @@ public void testProcesWithHumanTaskWithTimer() throws Exception {
Environment env = ksession.getEnvironment(); Environment env = ksession.getEnvironment();


ksession.dispose(); ksession.dispose();
Thread.sleep(3000);

ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId,
kbase, null, env); kbase, null, env);
Thread.sleep(3000); ksession.addEventListener(countDownListener);
countDownListener.waitTillCompleted();
assertProcessInstanceFinished(processInstance, ksession); assertProcessInstanceFinished(processInstance, ksession);


} }
Expand Down Expand Up @@ -761,12 +764,14 @@ public void testCallActivityWithHistoryLog() throws Exception {
logService.dispose(); logService.dispose();
} }


@Test @Test(timeout=10000)
@RequirePersistence @RequirePersistence
public void testCallActivityWithTimer() throws Exception { public void testCallActivityWithTimer() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("Timer", 1);
KieBase kbase = createKnowledgeBase("BPMN2-ParentProcess.bpmn2", KieBase kbase = createKnowledgeBase("BPMN2-ParentProcess.bpmn2",
"BPMN2-SubProcessWithTimer.bpmn2"); "BPMN2-SubProcessWithTimer.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
workItemHandler); workItemHandler);
Expand All @@ -788,11 +793,11 @@ public void testCallActivityWithTimer() throws Exception {


logger.info("dispose"); logger.info("dispose");
ksession.dispose(); ksession.dispose();
Thread.sleep(3000);


ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId,
kbase, null, env); kbase, null, env);
Thread.sleep(3000); ksession.addEventListener(countDownListener);
countDownListener.waitTillCompleted();
assertProcessInstanceFinished(processInstance, ksession); assertProcessInstanceFinished(processInstance, ksession);


} }
Expand Down Expand Up @@ -1378,18 +1383,20 @@ public void testBusinessRuleTaskWithContionalEvent() throws Exception {
assertTrue(list.size() == 1); assertTrue(list.size() == 1);
} }


@Test @Test(timeout=10000)
public void testNullVariableInScriptTaskProcess() throws Exception { public void testNullVariableInScriptTaskProcess() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("After Timer", 1);
KieBase kbase = createKnowledgeBase("BPMN2-NullVariableInScriptTaskProcess.bpmn2"); KieBase kbase = createKnowledgeBase("BPMN2-NullVariableInScriptTaskProcess.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
ProcessInstance processInstance = ksession ProcessInstance processInstance = ksession
.startProcess("nullVariableInScriptAfterTimer"); .startProcess("nullVariableInScriptAfterTimer");


assertProcessInstanceActive(processInstance); assertProcessInstanceActive(processInstance);


long sleep = 1000; countDownListener.waitTillCompleted();
logger.debug("Sleeping {} seconds", sleep / 1000); ProcessInstance pi = ksession.getProcessInstance(processInstance.getId());
Thread.sleep(sleep); assertNull(pi);


assertProcessInstanceFinished(processInstance, ksession); assertProcessInstanceFinished(processInstance, ksession);
} }
Expand All @@ -1407,10 +1414,12 @@ public void testScriptTaskWithVariableByName() throws Exception {


@Test @Test
public void testCallActivityWithBoundaryEvent() throws Exception { public void testCallActivityWithBoundaryEvent() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("Boundary event", 1);
KieBase kbase = createKnowledgeBase( KieBase kbase = createKnowledgeBase(
"BPMN2-CallActivityWithBoundaryEvent.bpmn2", "BPMN2-CallActivityWithBoundaryEvent.bpmn2",
"BPMN2-CallActivitySubProcessWithBoundaryEvent.bpmn2"); "BPMN2-CallActivitySubProcessWithBoundaryEvent.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
workItemHandler); workItemHandler);
Expand All @@ -1419,7 +1428,7 @@ public void testCallActivityWithBoundaryEvent() throws Exception {
ProcessInstance processInstance = ksession.startProcess( ProcessInstance processInstance = ksession.startProcess(
"ParentProcess", params); "ParentProcess", params);


Thread.sleep(3000); countDownListener.waitTillCompleted();


assertProcessInstanceFinished(processInstance, ksession); assertProcessInstanceFinished(processInstance, ksession);
// assertEquals("new timer value", // assertEquals("new timer value",
Expand Down Expand Up @@ -1650,8 +1659,7 @@ public void testServiceTaskWithMvelJaxbTransformation() throws Exception {
} }


@Test @Test
public void testErrorBetweenProcessesProcess() throws Exception { public void testErrorBetweenProcessesProcess() throws Exception {

KieBase kbase = createKnowledgeBaseWithoutDumper("subprocess/ErrorsBetweenProcess-Process.bpmn2", KieBase kbase = createKnowledgeBaseWithoutDumper("subprocess/ErrorsBetweenProcess-Process.bpmn2",
"subprocess/ErrorsBetweenProcess-SubProcess.bpmn2"); "subprocess/ErrorsBetweenProcess-SubProcess.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
Expand All @@ -1661,9 +1669,7 @@ public void testErrorBetweenProcessesProcess() throws Exception {
variables.put("tipoEvento", "error"); variables.put("tipoEvento", "error");
variables.put("pasoVariable", 3); variables.put("pasoVariable", 3);
ProcessInstance processInstance = ksession.startProcess("Principal", variables); ProcessInstance processInstance = ksession.startProcess("Principal", variables);


Thread.sleep(1000l);

assertProcessInstanceCompleted(processInstance.getId(), ksession); assertProcessInstanceCompleted(processInstance.getId(), ksession);
assertProcessInstanceAborted(processInstance.getId()+1, ksession); assertProcessInstanceAborted(processInstance.getId()+1, ksession);


Expand Down
22 changes: 14 additions & 8 deletions jbpm-bpmn2/src/test/java/org/jbpm/bpmn2/FlowTest.java
Expand Up @@ -34,6 +34,7 @@
import org.jbpm.process.core.context.variable.VariableScope; import org.jbpm.process.core.context.variable.VariableScope;
import org.jbpm.process.instance.context.variable.VariableScopeInstance; import org.jbpm.process.instance.context.variable.VariableScopeInstance;
import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler; import org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.jbpm.test.util.CountDownProcessEventListener;
import org.jbpm.workflow.instance.impl.NodeInstanceImpl; import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl; import org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl;
import org.jbpm.workflow.instance.node.CompositeContextNodeInstance; import org.jbpm.workflow.instance.node.CompositeContextNodeInstance;
Expand Down Expand Up @@ -461,10 +462,12 @@ public void testInclusiveSplitAndJoinWithEnd() throws Exception {


} }


@Test @Test(timeout=10000)
public void testInclusiveSplitAndJoinWithTimer() throws Exception { public void testInclusiveSplitAndJoinWithTimer() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("timer", 2);
KieBase kbase = createKnowledgeBase("BPMN2-InclusiveSplitAndJoinWithTimer.bpmn2"); KieBase kbase = createKnowledgeBase("BPMN2-InclusiveSplitAndJoinWithTimer.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);
TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", ksession.getWorkItemManager().registerWorkItemHandler("Human Task",
workItemHandler); workItemHandler);
Expand All @@ -478,7 +481,8 @@ public void testInclusiveSplitAndJoinWithTimer() throws Exception {
assertEquals(1, activeWorkItems.size()); assertEquals(1, activeWorkItems.size());
ksession.getWorkItemManager().completeWorkItem( ksession.getWorkItemManager().completeWorkItem(
activeWorkItems.get(0).getId(), null); activeWorkItems.get(0).getId(), null);
Thread.sleep(3000);
countDownListener.waitTillCompleted();
assertProcessInstanceActive(processInstance); assertProcessInstanceActive(processInstance);


activeWorkItems = workItemHandler.getWorkItems(); activeWorkItems = workItemHandler.getWorkItems();
Expand Down Expand Up @@ -1360,21 +1364,21 @@ public void testMultiInstanceLoopCharacteristicsTask() throws Exception {


@Test @Test
public void testMultipleInOutgoingSequenceFlows() throws Exception { public void testMultipleInOutgoingSequenceFlows() throws Exception {
CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("timer", 1);
System.setProperty("jbpm.enable.multi.con", "true"); System.setProperty("jbpm.enable.multi.con", "true");
KieBase kbase = createKnowledgeBase("BPMN2-MultipleInOutgoingSequenceFlows.bpmn2"); KieBase kbase = createKnowledgeBase("BPMN2-MultipleInOutgoingSequenceFlows.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);

ksession.addEventListener(countDownListener);
final List<Long> list = new ArrayList<Long>(); final List<Long> list = new ArrayList<Long>();
ksession.addEventListener(new DefaultProcessEventListener() { ksession.addEventListener(new DefaultProcessEventListener() {
public void afterProcessStarted(ProcessStartedEvent event) { public void beforeProcessStarted(ProcessStartedEvent event) {
list.add(event.getProcessInstance().getId()); list.add(event.getProcessInstance().getId());
} }
}); });


assertEquals(0, list.size()); assertEquals(0, list.size());



countDownListener.waitTillCompleted();
Thread.sleep(1500);


assertEquals(1, list.size()); assertEquals(1, list.size());
System.clearProperty("jbpm.enable.multi.con"); System.clearProperty("jbpm.enable.multi.con");
Expand Down Expand Up @@ -1519,9 +1523,10 @@ public void beforeProcessStarted(ProcessStartedEvent event) {


@Test @Test
public void testTimerAndGateway() throws Exception { public void testTimerAndGateway() throws Exception {

CountDownProcessEventListener countDownListener = new CountDownProcessEventListener("timer", 1);
KieBase kbase = createKnowledgeBase("timer/BPMN2-ParallelSplitWithTimerProcess.bpmn2"); KieBase kbase = createKnowledgeBase("timer/BPMN2-ParallelSplitWithTimerProcess.bpmn2");
ksession = createKnowledgeSession(kbase); ksession = createKnowledgeSession(kbase);
ksession.addEventListener(countDownListener);


TestWorkItemHandler handler1 = new TestWorkItemHandler(); TestWorkItemHandler handler1 = new TestWorkItemHandler();
TestWorkItemHandler handler2 = new TestWorkItemHandler(); TestWorkItemHandler handler2 = new TestWorkItemHandler();
Expand All @@ -1539,10 +1544,11 @@ public void testTimerAndGateway() throws Exception {
ksession.getWorkItemManager().completeWorkItem(workItem1.getId(), null); ksession.getWorkItemManager().completeWorkItem(workItem1.getId(), null);


ksession = restoreSession(ksession, true); ksession = restoreSession(ksession, true);
ksession.addEventListener(countDownListener);
ksession.getWorkItemManager().registerWorkItemHandler("task1", handler1); ksession.getWorkItemManager().registerWorkItemHandler("task1", handler1);
ksession.getWorkItemManager().registerWorkItemHandler("task2", handler2); ksession.getWorkItemManager().registerWorkItemHandler("task2", handler2);
//second safe state: timer completed, waiting on task2 //second safe state: timer completed, waiting on task2
Thread.sleep(3000); countDownListener.waitTillCompleted();


WorkItem workItem2 = handler2.getWorkItem(); WorkItem workItem2 = handler2.getWorkItem();
//Both sides of the join are completed. But on the process instance, there are two //Both sides of the join are completed. But on the process instance, there are two
Expand Down

0 comments on commit 08905df

Please sign in to comment.