[jbpm-commits] JBoss JBPM SVN: r3761 - in jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise: ejbtimer and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Feb 3 19:28:28 EST 2009
Author: alex.guizar at jboss.com
Date: 2009-02-03 19:28:27 -0500 (Tue, 03 Feb 2009)
New Revision: 3761
Added:
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java
Modified:
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
Log:
extract common enterprise test bits into AbstractEnterpriseTestCase
Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/AbstractEnterpriseTestCase.java 2009-02-04 00:28:27 UTC (rev 3761)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.enterprise;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Session;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.apache.cactus.ServletTestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jbpm.EventCallback;
+import org.jbpm.command.Command;
+import org.jbpm.command.CommandService;
+import org.jbpm.command.DeleteProcessDefinitionCommand;
+import org.jbpm.command.DeployProcessCommand;
+import org.jbpm.command.GetProcessInstanceCommand;
+import org.jbpm.command.SignalCommand;
+import org.jbpm.command.StartProcessInstanceCommand;
+import org.jbpm.ejb.LocalCommandServiceHome;
+import org.jbpm.graph.def.ProcessDefinition;
+import org.jbpm.graph.exe.ProcessInstance;
+
+public abstract class AbstractEnterpriseTestCase extends ServletTestCase {
+
+ protected CommandService commandService;
+
+ private static LocalCommandServiceHome commandServiceHome;
+ private List<ProcessDefinition> processDefinitions = new ArrayList<ProcessDefinition>();
+
+ private static final Log log = LogFactory.getLog(AbstractEnterpriseTestCase.class);
+
+ protected AbstractEnterpriseTestCase() {
+ }
+
+ protected void setUp() throws Exception {
+ commandService = createCommandService();
+ log.info("### " + getName() + " started ###");
+ }
+
+ protected void tearDown() throws Exception {
+ log.info("### " + getName() + " done ###");
+ for (ProcessDefinition processDefinition : processDefinitions) {
+ deleteProcessDefinition(processDefinition.getId());
+ }
+ commandService = null;
+ EventCallback.clear();
+ }
+
+ protected CommandService createCommandService() throws Exception {
+ if (commandServiceHome == null) {
+ Context initialContext = new InitialContext();
+ try {
+ commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
+ }
+ finally {
+ initialContext.close();
+ }
+ }
+ return commandServiceHome.create();
+ }
+
+ protected ProcessDefinition deployProcessDefinition(String xml) {
+ ProcessDefinition processDefinition = (ProcessDefinition) commandService.execute(new DeployProcessCommand(
+ xml));
+ processDefinitions.add(processDefinition);
+ return processDefinition;
+ }
+
+ protected ProcessDefinition deployProcessDefinition(byte[] processArchive) {
+ ProcessDefinition processDefinition = (ProcessDefinition) commandService.execute(new DeployProcessCommand(
+ processArchive));
+ processDefinitions.add(processDefinition);
+ return processDefinition;
+ }
+
+ protected ProcessInstance startProcessInstance(String processName) {
+ StartProcessInstanceCommand command = new StartProcessInstanceCommand();
+ command.setProcessDefinitionName(processName);
+ command.setVariables(Collections.singletonMap("eventCallback", new EventCallback()));
+ return (ProcessInstance) commandService.execute(command);
+ }
+
+ protected void signalToken(long tokenId) {
+ commandService.execute(new SignalCommand(tokenId, null));
+ }
+
+ protected boolean hasProcessInstanceEnded(final long processInstanceId) {
+ ProcessInstance processInstance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
+ processInstanceId));
+ return processInstance.hasEnded();
+ }
+
+ private void deleteProcessDefinition(long processDefinitionId) throws Exception {
+ Command command = new DeleteProcessDefinitionCommand(processDefinitionId);
+ // CleanUpProcessJob races against DeleteProcessDefinitionCommand
+ // JMS has built-in retry logic
+ Context initial = new InitialContext();
+ try {
+ ConnectionFactory jmsConnectionfactory = (ConnectionFactory) initial.lookup("java:comp/env/jms/JbpmConnectionFactory");
+ Destination commandQueue = (Destination) initial.lookup("java:comp/env/jms/CommandQueue");
+
+ Connection jmsConnection = jmsConnectionfactory.createConnection();
+ try {
+ Session jmsSession = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ jmsSession.createProducer(commandQueue).send(jmsSession.createObjectMessage(command));
+ }
+ finally {
+ jmsConnection.close();
+ }
+ }
+ finally {
+ initial.close();
+ }
+ }
+}
\ No newline at end of file
Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java 2009-02-03 23:45:28 UTC (rev 3760)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java 2009-02-04 00:28:27 UTC (rev 3761)
@@ -22,28 +22,15 @@
package org.jbpm.enterprise.ejbtimer;
import java.rmi.RemoteException;
-import java.util.Collections;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
import junit.framework.Test;
-import org.apache.cactus.ServletTestCase;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.api.test.IntegrationTestSetup;
import org.jbpm.EventCallback;
import org.jbpm.JbpmContext;
-import org.jboss.bpm.api.test.IntegrationTestSetup;
import org.jbpm.command.Command;
-import org.jbpm.command.DeployProcessCommand;
-import org.jbpm.command.GetProcessInstanceCommand;
-import org.jbpm.command.SignalCommand;
-import org.jbpm.command.StartProcessInstanceCommand;
-import org.jbpm.ejb.LocalCommandService;
-import org.jbpm.ejb.LocalCommandServiceHome;
+import org.jbpm.enterprise.AbstractEnterpriseTestCase;
import org.jbpm.graph.def.Event;
-import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.jbpm.scheduler.ejbtimer.EntitySchedulerService;
@@ -53,36 +40,12 @@
*
* @author Alejandro Guizar
*/
-public class EjbSchedulerTest extends ServletTestCase {
+public class EjbSchedulerTest extends AbstractEnterpriseTestCase {
- private LocalCommandService commandService;
- private static LocalCommandServiceHome commandServiceHome;
-
- private static final Log log = LogFactory.getLog(EjbSchedulerTest.class);
-
public static Test suite() throws Exception {
return new IntegrationTestSetup(EjbSchedulerTest.class, "enterprise-test.war");
}
- protected void setUp() throws Exception {
- if (commandServiceHome == null) {
- Context initialContext = new InitialContext();
- try {
- commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
- }
- finally {
- initialContext.close();
- }
- }
- commandService = commandServiceHome.create();
- log.info("### " + getName() + " started ###");
- }
-
- protected void tearDown() throws Exception {
- log.info("### " + getName() + " done ###");
- commandService = null;
- }
-
public void testScheduleFuture() throws Exception {
deployProcessDefinition("<process-definition name='future'>"
+ " <event type='process-end'>"
@@ -270,21 +233,6 @@
hasProcessInstanceEnded(processInstanceId));
}
- private ProcessDefinition deployProcessDefinition(String xml) throws RemoteException {
- return (ProcessDefinition) commandService.execute(new DeployProcessCommand(xml));
- }
-
- private ProcessInstance startProcessInstance(String processName) throws RemoteException {
- StartProcessInstanceCommand command = new StartProcessInstanceCommand();
- command.setProcessDefinitionName(processName);
- command.setVariables(Collections.singletonMap("eventCallback", new EventCallback()));
- return (ProcessInstance) commandService.execute(command);
- }
-
- private void signalToken(long tokenId) {
- commandService.execute(new SignalCommand(tokenId, null));
- }
-
private String getProcessInstanceState(final long processInstanceId) throws RemoteException {
return (String) commandService.execute(new Command() {
private static final long serialVersionUID = 1L;
@@ -298,12 +246,6 @@
});
}
- private boolean hasProcessInstanceEnded(final long processInstanceId) throws RemoteException {
- ProcessInstance processInstance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
- processInstanceId));
- return processInstance.hasEnded();
- }
-
private void cancelTimer(final String timerName, final long tokenId) throws RemoteException {
commandService.execute(new Command() {
private static final long serialVersionUID = 1L;
Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java 2009-02-03 23:45:28 UTC (rev 3760)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java 2009-02-04 00:28:27 UTC (rev 3761)
@@ -29,59 +29,29 @@
import javax.jms.JMSException;
import javax.jms.Queue;
-import javax.naming.Context;
-import javax.naming.InitialContext;
import junit.framework.Test;
-import org.apache.cactus.ServletTestCase;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.api.test.IntegrationTestSetup;
import org.jbpm.JbpmContext;
import org.jbpm.command.Command;
-import org.jbpm.command.DeployProcessCommand;
-import org.jbpm.command.StartProcessInstanceCommand;
-import org.jbpm.ejb.LocalCommandService;
-import org.jbpm.ejb.LocalCommandServiceHome;
+import org.jbpm.enterprise.AbstractEnterpriseTestCase;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.util.IoUtil;
/**
+ * ENC is not reachable from within action handlers.
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1903
+ *
* @author Alejandro Guizar
*/
-public class JBPM1903Test extends ServletTestCase {
+public class JBPM1903Test extends AbstractEnterpriseTestCase {
- private LocalCommandService commandService;
- private static LocalCommandServiceHome commandServiceHome;
-
- private static final Log log = LogFactory.getLog(JBPM1903Test.class);
-
public static Test suite() throws Exception {
return new IntegrationTestSetup(JBPM1903Test.class, "enterprise-test.war");
}
- @Override
- protected void setUp() throws Exception {
- if (commandServiceHome == null) {
- Context initialContext = new InitialContext();
- try {
- commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
- }
- finally {
- initialContext.close();
- }
- }
- commandService = commandServiceHome.create();
- log.info("### " + getName() + " started ###");
- }
-
- @Override
- protected void tearDown() throws Exception {
- log.info("### " + getName() + " done ###");
- commandService = null;
- }
-
public void testENCInActionHandler() throws IOException, JMSException {
byte[] processArchive = createProcessArchive();
deployProcessDefinition(processArchive);
@@ -108,14 +78,6 @@
return memoryOut.toByteArray();
}
- private void deployProcessDefinition(byte[] processArchive) {
- commandService.execute(new DeployProcessCommand(processArchive));
- }
-
- private ProcessInstance startProcessInstance(String processName) {
- return (ProcessInstance) commandService.execute(new StartProcessInstanceCommand().processDefinitionName(processName));
- }
-
private Object getVariable(final long processInstanceId, final String variableName) {
return commandService.execute(new Command() {
private static final long serialVersionUID = 1L;
Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java 2009-02-03 23:45:28 UTC (rev 3760)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java 2009-02-04 00:28:27 UTC (rev 3761)
@@ -21,29 +21,15 @@
*/
package org.jbpm.enterprise.jms;
-import java.util.Collections;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-
import junit.framework.Test;
-import org.apache.cactus.ServletTestCase;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.hibernate.cfg.Environment;
import org.jboss.bpm.api.test.IntegrationTestSetup;
import org.jbpm.EventCallback;
import org.jbpm.JbpmContext;
import org.jbpm.command.Command;
-import org.jbpm.command.DeployProcessCommand;
-import org.jbpm.command.GetProcessInstanceCommand;
-import org.jbpm.command.StartProcessInstanceCommand;
-import org.jbpm.ejb.LocalCommandService;
-import org.jbpm.ejb.LocalCommandServiceHome;
+import org.jbpm.enterprise.AbstractEnterpriseTestCase;
import org.jbpm.graph.def.Event;
-import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.msg.jms.JmsMessageService;
import org.jbpm.persistence.db.DbPersistenceServiceFactory;
import org.jbpm.svc.Services;
@@ -53,40 +39,15 @@
*
* @author Alejandro Guizar
*/
-public class JmsMessageTest extends ServletTestCase {
+public class JmsMessageTest extends AbstractEnterpriseTestCase {
- private LocalCommandService commandService;
- private static LocalCommandServiceHome commandServiceHome;
-
- private static final int processExecutionCount = 5;
private static final int maxWaitTime = 10 * 1000;
+ private static final int processExecutionCount = 5;
- private static final Log log = LogFactory.getLog(JmsMessageTest.class);
-
public static Test suite() throws Exception {
return new IntegrationTestSetup(JmsMessageTest.class, "enterprise-test.war");
}
- protected void setUp() throws Exception {
- if (commandServiceHome == null) {
- Context initialContext = new InitialContext();
- try {
- commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
- }
- finally {
- initialContext.close();
- }
- }
- commandService = commandServiceHome.create();
- log.info("### " + getName() + " started ###");
- }
-
- protected void tearDown() throws Exception {
- log.info("### " + getName() + " done ###");
- commandService = null;
- EventCallback.clear();
- }
-
public void testAsyncNode() {
deployProcessDefinition("<process-definition name='node'>"
+ " <event type='process-end'>"
@@ -209,22 +170,10 @@
long processInstanceId = startProcessInstance("fork").getId();
EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
- Thread.sleep(1000);
assertTrue("expected process instance " + processInstanceId + " to have ended",
hasProcessInstanceEnded(processInstanceId));
}
- private String getHibernateDialect() {
- return (String) commandService.execute(new Command() {
- private static final long serialVersionUID = 1L;
-
- public Object execute(JbpmContext jbpmContext) throws Exception {
- DbPersistenceServiceFactory factory = (DbPersistenceServiceFactory) jbpmContext.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
- return factory.getConfiguration().getProperty(Environment.DIALECT);
- }
- });
- }
-
public void testAsyncExecutions() {
deployProcessDefinition("<process-definition name='execution'>"
+ " <event type='process-end'>"
@@ -267,37 +216,30 @@
}
for (int i = 0; i < processExecutionCount; i++) {
long processInstanceId = processInstanceIds[i];
- waitForProcessInstanceEnd(processInstanceId);
assertTrue("expected process instance " + processInstanceId + " to have ended",
- hasProcessInstanceEnded(processInstanceId));
+ waitForProcessInstanceEnd(processInstanceId));
}
}
- private ProcessDefinition deployProcessDefinition(String xml) {
- return (ProcessDefinition) commandService.execute(new DeployProcessCommand(xml));
- }
+ private String getHibernateDialect() {
+ return (String) commandService.execute(new Command() {
+ private static final long serialVersionUID = 1L;
- private ProcessInstance startProcessInstance(String processName) {
- StartProcessInstanceCommand command = new StartProcessInstanceCommand();
- command.setProcessDefinitionName(processName);
- command.setVariables(Collections.singletonMap("eventCallback", new EventCallback()));
- return (ProcessInstance) commandService.execute(command);
+ public Object execute(JbpmContext jbpmContext) throws Exception {
+ DbPersistenceServiceFactory factory = (DbPersistenceServiceFactory) jbpmContext.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+ return factory.getConfiguration().getProperty(Environment.DIALECT);
+ }
+ });
}
- private boolean hasProcessInstanceEnded(final long processInstanceId) {
- ProcessInstance processInstance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
- processInstanceId));
- return processInstance.hasEnded();
- }
-
- private void waitForProcessInstanceEnd(long processId) {
+ private boolean waitForProcessInstanceEnd(long processInstanceId) {
long startTime = System.currentTimeMillis();
do {
EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END, 1000);
if (System.currentTimeMillis() - startTime > maxWaitTime) {
- log.warn("process " + processId + " took too long");
- break;
+ return false;
}
- } while (!hasProcessInstanceEnded(processId));
+ } while (!hasProcessInstanceEnded(processInstanceId));
+ return true;
}
}
Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java 2009-02-03 23:45:28 UTC (rev 3760)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java 2009-02-04 00:28:27 UTC (rev 3761)
@@ -21,17 +21,8 @@
*/
package org.jbpm.enterprise.jta;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.Destination;
-import javax.jms.Session;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
import junit.framework.Test;
-import org.apache.cactus.ServletTestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
@@ -40,139 +31,68 @@
import org.jbpm.JbpmContext;
import org.jbpm.command.Command;
import org.jbpm.command.CommandService;
-import org.jbpm.command.DeleteProcessDefinitionCommand;
-import org.jbpm.command.DeployProcessCommand;
-import org.jbpm.command.GetProcessInstanceCommand;
-import org.jbpm.command.StartProcessInstanceCommand;
import org.jbpm.command.impl.CommandServiceImpl;
-import org.jbpm.ejb.LocalCommandServiceHome;
-import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.enterprise.AbstractEnterpriseTestCase;
-public class JtaDbPersistenceTest extends ServletTestCase {
+public class JtaDbPersistenceTest extends AbstractEnterpriseTestCase {
- private CommandService commandService;
- private static LocalCommandServiceHome commandServiceHome;
-
private static final Log log = LogFactory.getLog(JtaDbPersistenceTest.class);
public static Test suite() throws Exception {
return new IntegrationTestSetup(JtaDbPersistenceTest.class, "enterprise-test.war");
}
- protected void setUp() throws Exception {
- log.info("### " + getName() + " started ###");
+ protected CommandService createCommandService() throws Exception {
+ return getName().contains("CMT") ? super.createCommandService() : new CommandServiceImpl(
+ JbpmConfiguration.getInstance());
}
- protected void tearDown() throws Exception {
- log.info("### " + getName() + " done ###");
- }
-
public void testCMTSuccess() throws Exception {
- commandService = getCommandServiceHome().create();
playTransaction(false);
}
public void testCMTFailure() throws Exception {
- commandService = getCommandServiceHome().create();
playTransaction(true);
}
public void testBMTSuccess() throws Exception {
- commandService = new CommandServiceImpl(JbpmConfiguration.getInstance());
playTransaction(false);
}
public void testBMTFailure() throws Exception {
- commandService = new CommandServiceImpl(JbpmConfiguration.getInstance());
playTransaction(true);
}
private void playTransaction(boolean fail) throws Exception {
- long definitionId = deployProcess();
- long instanceId = launchProcess(definitionId);
+ deployProcessDefinition("<process-definition name='jta'>"
+ + " <start-state name='start'>"
+ + " <transition to='midway' />"
+ + " </start-state>"
+ + " <state name='midway'>"
+ + " <transition to='end' />"
+ + " </state>"
+ + " <end-state name='end' />"
+ + "</process-definition>");
+ long processInstanceId = startProcessInstance("jta").getId();
try {
- signal(instanceId, fail);
+ signal(processInstanceId, fail);
}
catch (RuntimeException e) {
- log.debug("signal failed on process instance #" + instanceId, e);
+ log.debug("signal failed on process instance #" + processInstanceId, e);
}
- assertEquals(!fail, hasEnded(instanceId));
- // deleting the process causes race conditions that affect the next test
- // deleteProcess(definitionId);
+ assertEquals(!fail, hasProcessInstanceEnded(processInstanceId));
}
- private long deployProcess() throws Exception {
- ProcessDefinition definition = (ProcessDefinition) commandService.execute(new DeployProcessCommand(
- "<process-definition name='tx'>"
- + " <start-state name='start'>"
- + " <transition to='midway' />"
- + " </start-state>"
- + " <state name='midway'>"
- + " <transition to='end' />"
- + " </state>"
- + " <end-state name='end' />"
- + "</process-definition>"));
- return definition.getId();
- }
-
- private long launchProcess(long definitionId) throws Exception {
- ProcessInstance instance = (ProcessInstance) commandService.execute(new StartProcessInstanceCommand().processDefinitionId(definitionId));
- return instance.getId();
- }
-
- private void signal(final long instanceId, final boolean fail) throws Exception {
+ private void signal(final long processInstanceId, final boolean fail) throws Exception {
commandService.execute(new Command() {
private static final long serialVersionUID = 1L;
public Object execute(JbpmContext jbpmContext) throws Exception {
- jbpmContext.loadProcessInstance(instanceId).signal();
- if (fail)
- throw new HibernateException("simulated failure");
+ jbpmContext.loadProcessInstance(processInstanceId).signal();
+ if (fail) throw new HibernateException("simulated failure");
return null;
}
});
}
- private boolean hasEnded(long instanceId) throws Exception {
- ProcessInstance instance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
- instanceId));
- return instance.hasEnded();
- }
-
- private void deleteProcess(long definitionId) throws Exception {
- Command command = new DeleteProcessDefinitionCommand(definitionId);
- // CleanUpProcessJob races against DeleteProcessDefinitionCommand
- // JMS has built-in retry logic
- Context initial = new InitialContext();
- try {
- ConnectionFactory jmsConnectionfactory = (ConnectionFactory) initial.lookup("java:comp/env/jms/JbpmConnectionFactory");
- Destination commandQueue = (Destination) initial.lookup("java:comp/env/jms/CommandQueue");
-
- Connection jmsConnection = jmsConnectionfactory.createConnection();
- try {
- Session jmsSession = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- jmsSession.createProducer(commandQueue).send(jmsSession.createObjectMessage(command));
- }
- finally {
- jmsConnection.close();
- }
- }
- finally {
- initial.close();
- }
- }
-
- private static LocalCommandServiceHome getCommandServiceHome() throws NamingException {
- if (commandServiceHome == null) {
- Context initial = new InitialContext();
- try {
- return (LocalCommandServiceHome) initial.lookup("java:comp/env/ejb/CommandServiceBean");
- }
- finally {
- initial.close();
- }
- }
- return commandServiceHome;
- }
}
More information about the jbpm-commits
mailing list