[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