[jbpm-commits] JBoss JBPM SVN: r4770 - in jbpm3/branches/jbpm-3.2.5.SP/modules/core/src: test/java/org/jbpm/scenarios and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sun May 10 06:44:34 EDT 2009


Author: alex.guizar at jboss.com
Date: 2009-05-10 06:44:33 -0400 (Sun, 10 May 2009)
New Revision: 4770

Modified:
   jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java
   jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
   jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
Log:
increase timeout to one minute for stabilizing tests

Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java	2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/job/Timer.java	2009-05-10 10:44:33 UTC (rev 4770)
@@ -12,6 +12,7 @@
 import org.jbpm.graph.def.Action;
 import org.jbpm.graph.def.Event;
 import org.jbpm.graph.def.GraphElement;
+import org.jbpm.graph.def.Node;
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.Token;
 
@@ -81,11 +82,15 @@
     }
 
     // then take a transition if one is specified
-    if ((transitionName != null) && (exception == null) // and if no unhandled exception occurred during the action  
-    ) {
-      if (token.getNode().hasLeavingTransition(transitionName)) {
+    // and if no unhandled exception occurred during the action
+    if (transitionName != null && exception == null) {
+      Node node = token.getNode();
+      if (node.hasLeavingTransition(transitionName)) {
         token.signal(transitionName);
       }
+      else {
+        log.warn(node + " has no leaving transition with name: " + transitionName);
+      }
     }
 
     // if repeat is specified, reschedule the job

Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java	2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java	2009-05-10 10:44:33 UTC (rev 4770)
@@ -9,114 +9,104 @@
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.graph.node.DecisionHandler;
-import org.jbpm.taskmgmt.def.Task;
-import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
 import org.jbpm.taskmgmt.exe.TaskInstance;
 
 public class AsyncTimerAndSubProcessDbTest extends AbstractDbTestCase {
-  
-  public static class ToTimedDecisionHandler implements DecisionHandler
-  {
+
+  public static class ToTimedDecisionHandler implements DecisionHandler {
     private static final long serialVersionUID = 1L;
 
-    public String decide(ExecutionContext executionContext) throws Exception
-    {
+    public String decide(ExecutionContext executionContext) throws Exception {
       return "default";
     }
   }
 
   public void testTimerInCombinationWithAsyncNode() throws Throwable {
-    ProcessDefinition subDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='sub'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='decision'/>" +
-      "  </start-state>" +
-      "  <decision name='decision'>" +
-      "    <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />" +
-      "    <transition name='default' to='task' />" +
-      "  </decision>" +
-      "  <task-node name='task'>" +
-      "    <task name='do stuff'>" +
-      "      <controller>" +
-      "        <variable name='a' access='read' />" +
-      "      </controller>" +
-      "      <assignment actor-id='victim' />" +
-      "    </task>" +
-      "    <transition to='end'/>" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition subDefinition = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
+        + "  <start-state name='start'>"
+        + "    <transition to='decision'/>"
+        + "  </start-state>"
+        + "  <decision name='decision'>"
+        + "    <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />"
+        + "    <transition name='default' to='task' />"
+        + "  </decision>"
+        + "  <task-node name='task'>"
+        + "    <task name='do stuff'>"
+        + "      <controller>"
+        + "        <variable name='a' access='read' />"
+        + "      </controller>"
+        + "      <assignment actor-id='victim' />"
+        + "    </task>"
+        + "    <transition to='end'/>"
+        + "  </task-node>"
+        + "  <end-state name='end' />"
+        + "</process-definition>");
     jbpmContext.deployProcessDefinition(subDefinition);
     newTransaction();
-    
-    ProcessDefinition superDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='super'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='decision'/>" +
-      "  </start-state>" +
-      "  <decision name='decision'>" +
-      "    <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />" +
-      "    <transition name='default' to='timed' />" +
-      "  </decision>" +
-      "  <state name='timed'>" +
-      "    <timer name='reminder' " +
-      "           duedate='0 seconds' " +
-      "           transition='timer fires' />" +
-      "    <transition name='timer fires' to='async'/>" +
-      "    <transition name='normal continuation' to='end'/>" +
-      "  </state>" +
-      "  <node name='async' async='true'>" +
-      "    <transition to='subprocess'/>" +
-      "  </node>" +
-      "  <process-state name='subprocess'>" +
-      "    <sub-process name='sub' />" +
-      "    <variable name='a'/>" +
-      "    <variable name='b'/>" +
-      "    <transition to='decision' />" +
-      "  </process-state>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+
+    ProcessDefinition superDefinition = ProcessDefinition.parseXmlString("<process-definition name='super'>"
+        + "  <start-state name='start'>"
+        + "    <transition to='decision'/>"
+        + "  </start-state>"
+        + "  <decision name='decision'>"
+        + "    <handler class='org.jbpm.scenarios.AsyncTimerAndSubProcessDbTest$ToTimedDecisionHandler' />"
+        + "    <transition name='default' to='timed' />"
+        + "  </decision>"
+        + "  <state name='timed'>"
+        + "    <timer name='reminder' "
+        + "           duedate='0 seconds' "
+        + "           transition='timer fires' />"
+        + "    <transition name='timer fires' to='async'/>"
+        + "    <transition name='normal continuation' to='end'/>"
+        + "  </state>"
+        + "  <node name='async' async='true'>"
+        + "    <transition to='subprocess'/>"
+        + "  </node>"
+        + "  <process-state name='subprocess'>"
+        + "    <sub-process name='sub' />"
+        + "    <variable name='a'/>"
+        + "    <variable name='b'/>"
+        + "    <transition to='decision' />"
+        + "  </process-state>"
+        + "  <end-state name='end' />"
+        + "</process-definition>");
     jbpmContext.deployProcessDefinition(superDefinition);
     newTransaction();
-    
-    try
-    {
+
+    try {
       ProcessInstance superInstance = jbpmContext.newProcessInstanceForUpdate("super");
       ContextInstance superContext = superInstance.getContextInstance();
       superContext.setVariable("a", "value a");
       superContext.setVariable("b", "value b");
       superInstance.signal();
-      
-      processJobs(5000);
 
+      processJobs(60 * 1000);
+
       superInstance = jbpmContext.loadProcessInstance(superInstance.getId());
       assertEquals("subprocess", superInstance.getRootToken().getNode().getName());
-      
+
       List taskInstances = taskMgmtSession.findTaskInstances("victim");
       assertEquals(1, taskInstances.size());
       TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
       taskInstance.setVariable("a", "value a updated");
       taskInstance.setVariable("b", "value b updated");
       taskInstance.end();
-      
+
       jbpmContext.save(taskInstance);
       long taskInstanceId = taskInstance.getId();
       long tokenId = taskInstance.getToken().getId();
       newTransaction();
-      
+
       taskInstance = jbpmContext.loadTaskInstance(taskInstanceId);
       assertEquals("value a updated", taskInstance.getVariable("a"));
       assertEquals("value b updated", taskInstance.getVariable("b"));
-      
+
       Token token = jbpmContext.loadToken(tokenId);
       ContextInstance subContextInstance = token.getProcessInstance().getContextInstance();
       assertEquals("value a", subContextInstance.getVariable("a"));
       assertEquals("value b updated", subContextInstance.getVariable("b"));
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(superDefinition.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(subDefinition.getId());
     }

Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java	2009-05-08 21:49:21 UTC (rev 4769)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java	2009-05-10 10:44:33 UTC (rev 4770)
@@ -25,11 +25,9 @@
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
-import java.util.TimerTask;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.hibernate.criterion.Restrictions;
+
 import org.jbpm.context.exe.ContextInstance;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ActionHandler;
@@ -39,14 +37,11 @@
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.job.Timer;
-import org.jbpm.job.executor.JobExecutorThread;
 import org.jbpm.taskmgmt.exe.TaskInstance;
 import org.jbpm.util.DateDbTestUtil;
 
 public class TimerDbTest extends AbstractDbTestCase {
 
-  private static Log log = LogFactory.getLog(Timer.class);
-
   static boolean isNoOpExecuted = false;
 
   protected void setUp() throws Exception {
@@ -86,8 +81,8 @@
       assertEquals(ncal.get(Calendar.HOUR_OF_DAY), tcal.get(Calendar.HOUR_OF_DAY));
       assertEquals(ncal.get(Calendar.MINUTE), tcal.get(Calendar.MINUTE));
       assertEquals(ncal.get(Calendar.SECOND), tcal.get(Calendar.SECOND));
-      assertEquals(DateDbTestUtil.getInstance().convertDateToSeconds(now),
-          DateDbTestUtil.getInstance().convertDateToSeconds(timer.getDueDate()));
+      assertEquals(DateDbTestUtil.getInstance().convertDateToSeconds(now), DateDbTestUtil.getInstance()
+          .convertDateToSeconds(timer.getDueDate()));
       assertEquals("transition-name", timer.getTransitionName());
       assertEquals("repeat-duration", timer.getRepeat());
     }
@@ -184,7 +179,7 @@
 
       List actions = node.getEvent(Event.EVENTTYPE_NODE_ENTER).getActions();
       assertEquals(1, actions.size());
-      
+
       actions = node.getEvent(Event.EVENTTYPE_NODE_LEAVE).getActions();
       assertEquals(1, actions.size());
 
@@ -251,7 +246,7 @@
       processInstance = saveAndReload(processInstance);
       assertEquals(1, getTimerCount());
       processInstance.signal();
-      
+
       newTransaction();
 
       assertEquals(1, getTimerCount());
@@ -309,7 +304,7 @@
         + "  <state name='a'>"
         + "    <timer name='reminder' "
         + "           duedate='0 seconds'"
-        + "           repeat='5 seconds' >"
+        + "           repeat='1 minute' >"
         + "      <action class='org.jbpm.scheduler.exe.TimerDbTest$NoOp' />"
         + "    </timer>"
         + "    <transition to='b'/>"
@@ -320,55 +315,37 @@
     processDefinition = saveAndReload(processDefinition);
     try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      // long before = System.currentTimeMillis();
       processInstance.signal();
-      // long after = System.currentTimeMillis();
       jbpmContext.save(processInstance);
 
       newTransaction();
-
       Timer timer = (Timer) jobSession.getFirstAcquirableJob(null);
-      
       assertNotNull(timer);
-      Date date = timer.getDueDate();
-      assertNotNull(date);
-      // assertTrue(before <= date.getTime());
-      // assertTrue(date.getTime() <= after);
-      long origDueDate = date.getTime();
+      Date dueDate = timer.getDueDate();
+      assertNotNull(dueDate);
 
       timer.execute(jbpmContext);
 
       newTransaction();
+      timer = (Timer) jobSession.loadTimer(timer.getId());
+      assertEquals(dueDate.getTime() + 60 * 1000, timer.getDueDate().getTime());
 
-      List timers = session.createQuery("from org.jbpm.job.Timer").list();
-      assertEquals(1, timers.size());
-      timer = (Timer) timers.get(0);
-
-      assertEquals(origDueDate + 5000, timer.getDueDate().getTime());
-
       processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      // before = System.currentTimeMillis();
       processInstance.signal("back");
-      // after = System.currentTimeMillis();
       jbpmContext.save(processInstance);
 
       newTransaction();
-
       timer = (Timer) jobSession.getFirstAcquirableJob(null);
       assertNotNull(timer);
-      date = timer.getDueDate();
-      assertNotNull(date);
-      // assertTrue(before <= date.getTime());
-      // assertTrue(date.getTime() <= after);
+      dueDate = timer.getDueDate();
+      assertNotNull(dueDate);
 
       newTransaction();
-
       processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
       processInstance.signal();
       jbpmContext.save(processInstance);
 
       newTransaction();
-
       assertEquals(0, getTimerCount());
     }
     finally {




More information about the jbpm-commits mailing list