[jbpm-commits] JBoss JBPM SVN: r4146 - in jbpm3/branches/jbpm-3.2.6.GA/modules: core/src/test/java/org/jbpm/jbpm1072 and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Mar 5 01:12:13 EST 2009
Author: alex.guizar at jboss.com
Date: 2009-03-05 01:12:12 -0500 (Thu, 05 Mar 2009)
New Revision: 4146
Modified:
jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java
jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java
jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java
jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1952/JBPM1952Test.java
jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
Log:
stabilize JBPM-1952 test and JBPM-1072 by leveraging the java.util.concurrent package
Modified: jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java 2009-03-05 06:02:49 UTC (rev 4145)
+++ jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java 2009-03-05 06:12:12 UTC (rev 4146)
@@ -142,14 +142,22 @@
}
public static void waitForEvent(String event) {
- waitForEvent(event, DEFAULT_TIMEOUT);
+ waitForEvent(1, event, DEFAULT_TIMEOUT);
}
public static void waitForEvent(String event, long timeout) {
+ waitForEvent(1, event, timeout);
+ }
+
+ public static void waitForEvent(int occurrences, String event) {
+ waitForEvent(occurrences, event, DEFAULT_TIMEOUT);
+ }
+
+ public static void waitForEvent(int occurrences, String event, long timeout) {
log.debug("waiting for " + event);
Semaphore eventSemaphore = getEventSemaphore(event);
try {
- if (eventSemaphore.tryAcquire(timeout, TimeUnit.MILLISECONDS)) {
+ if (eventSemaphore.tryAcquire(occurrences, timeout, TimeUnit.MILLISECONDS)) {
log.debug("received '" + event + "' notification");
}
else {
Modified: jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java 2009-03-05 06:02:49 UTC (rev 4145)
+++ jbpm3/branches/jbpm-3.2.6.GA/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java 2009-03-05 06:12:12 UTC (rev 4146)
@@ -21,6 +21,8 @@
*/
package org.jbpm.jbpm1072;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.jbpm.JbpmConfiguration;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.graph.def.ActionHandler;
@@ -32,11 +34,9 @@
import org.jbpm.job.executor.JobExecutor;
/**
- * Concurrent job executors can process the same job in parallel.
- * The test simulates multiple nodes in the network processing a common job set.
- * The key setting is to give each job executor a different name;
- * normally, a job executor is named after the node's inet address
- *
+ * Concurrent job executors can process the same job in parallel. The test simulates multiple nodes
+ * in the network processing a common job set. The key setting is to give each job executor a
+ * different name; normally, a job executor is named after the node's inet address
* https://jira.jboss.org/jira/browse/JBPM-1072
*
* @author Jiri Pechanec
@@ -49,8 +49,6 @@
private JobExecutor[] jobExecutors = new JobExecutor[JOB_EXECUTOR_COUNT];
private long processDefinitionId;
- private volatile static int executionCount;
-
private static final String PROCESS_DEFINITION = "<process-definition name='job-executors'>"
+ "<event type='process-end'>"
+ "<action expression='#{eventCallback.processEnd}' />"
@@ -94,16 +92,10 @@
EventCallback.clear();
}
- public void testMultipleJobExecutors()
- {
- executionCount = 0;
-
+ public void testMultipleJobExecutors() {
// Won't Fix [JBPM-1072] Concurrent JobExecutors can process the same job in parallel
- if (getHibernateDialect().indexOf("HSQL") != -1)
- {
- return;
- }
-
+ if (getHibernateDialect().indexOf("HSQL") != -1) return;
+
// kick off process instance
ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
@@ -114,7 +106,7 @@
commitAndCloseSession();
try {
EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
- assertEquals(2, executionCount);
+ assertEquals(2, Counter.getCount());
waitForJobs(EventCallback.DEFAULT_TIMEOUT);
}
@@ -142,17 +134,19 @@
}
}
- private static synchronized void incrementCount() {
- ++executionCount;
- }
-
public static class Counter implements ActionHandler {
+ private static final AtomicInteger count = new AtomicInteger();
+
private static final long serialVersionUID = 1L;
public void execute(ExecutionContext exeContext) throws Exception {
- incrementCount();
+ count.incrementAndGet();
exeContext.leaveNode();
}
+
+ public static int getCount() {
+ return count.get();
+ }
}
}
Modified: jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java 2009-03-05 06:02:49 UTC (rev 4145)
+++ jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java 2009-03-05 06:12:12 UTC (rev 4146)
@@ -46,7 +46,6 @@
import org.jbpm.command.SignalCommand;
import org.jbpm.command.StartProcessInstanceCommand;
import org.jbpm.ejb.LocalCommandServiceHome;
-import org.jbpm.graph.def.Event;
import org.jbpm.graph.def.EventCallback;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
@@ -64,7 +63,6 @@
private static Destination commandQueue;
private static ConnectionFactory jmsConnectionFactory;
- private static final int MAX_WAIT_TIME = 30 * 1000;
private static final Log log = LogFactory.getLog(AbstractEnterpriseTestCase.class);
protected AbstractEnterpriseTestCase() {
@@ -123,15 +121,6 @@
return processInstance.hasEnded();
}
- protected boolean waitForProcessInstanceEnd(long processInstanceId) {
- long startTime = System.currentTimeMillis();
- do {
- EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END, 1000);
- if (System.currentTimeMillis() - startTime > MAX_WAIT_TIME) return false;
- } while (!hasProcessInstanceEnded(processInstanceId));
- return true;
- }
-
protected Object getVariable(final long processInstanceId, final String variableName) {
return commandService.execute(new Command() {
private static final long serialVersionUID = 1L;
Modified: jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1952/JBPM1952Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1952/JBPM1952Test.java 2009-03-05 06:02:49 UTC (rev 4145)
+++ jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1952/JBPM1952Test.java 2009-03-05 06:12:12 UTC (rev 4146)
@@ -4,6 +4,8 @@
import org.jboss.bpm.api.test.IntegrationTestSetup;
import org.jbpm.enterprise.AbstractEnterpriseTestCase;
+import org.jbpm.graph.def.Event;
+import org.jbpm.graph.def.EventCallback;
/**
* Use JMS instead of DBMS for storing jobs, so that each job is not taken by multiple job executor
@@ -62,10 +64,12 @@
processInstanceIds[i] = startProcessInstance("jbpm1952").getId();
}
+ EventCallback.waitForEvent(PROCESS_EXECUTION_COUNT, Event.EVENTTYPE_PROCESS_END);
+
for (int i = 0; i < PROCESS_EXECUTION_COUNT; i++) {
long processInstanceId = processInstanceIds[i];
assertTrue("expected process instance " + processInstanceId + " to have ended",
- waitForProcessInstanceEnd(processInstanceId));
+ hasProcessInstanceEnded(processInstanceId));
}
}
Modified: jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java 2009-03-05 06:02:49 UTC (rev 4145)
+++ jbpm3/branches/jbpm-3.2.6.GA/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java 2009-03-05 06:12:12 UTC (rev 4146)
@@ -210,13 +210,14 @@
processInstanceIds[i] = startProcessInstance("execution").getId();
EventCallback.waitForEvent(Event.EVENTTYPE_NODE_ENTER);
}
+
+ EventCallback.waitForEvent(PROCESS_INSTANCE_COUNT, Event.EVENTTYPE_NODE_LEAVE);
+ EventCallback.waitForEvent(PROCESS_INSTANCE_COUNT, Event.EVENTTYPE_PROCESS_END);
+
for (int i = 0; i < PROCESS_INSTANCE_COUNT; i++) {
- EventCallback.waitForEvent(Event.EVENTTYPE_NODE_LEAVE);
- }
- for (int i = 0; i < PROCESS_INSTANCE_COUNT; i++) {
long processInstanceId = processInstanceIds[i];
assertTrue("expected process instance " + processInstanceId + " to have ended",
- waitForProcessInstanceEnd(processInstanceId));
+ hasProcessInstanceEnded(processInstanceId));
}
}
}
More information about the jbpm-commits
mailing list