[jbpm-commits] JBoss JBPM SVN: r4224 - jbpm3/branches/jbpm-3.2.6.SP/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Mar 10 16:07:45 EDT 2009


Author: alex.guizar at jboss.com
Date: 2009-03-10 16:07:45 -0400 (Tue, 10 Mar 2009)
New Revision: 4224

Modified:
   jbpm3/branches/jbpm-3.2.6.SP/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
Log:
JBPM-2093: stabilize EjbSchedulerTest under MySQL

Modified: jbpm3/branches/jbpm-3.2.6.SP/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.6.SP/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java	2009-03-10 19:30:40 UTC (rev 4223)
+++ jbpm3/branches/jbpm-3.2.6.SP/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java	2009-03-10 20:07:45 UTC (rev 4224)
@@ -32,7 +32,6 @@
 import org.jbpm.graph.def.Event;
 import org.jbpm.graph.def.EventCallback;
 import org.jbpm.graph.exe.ProcessInstance;
-import org.jbpm.graph.exe.Token;
 import org.jbpm.scheduler.ejbtimer.EntitySchedulerService;
 
 /**
@@ -121,6 +120,9 @@
         + "  </start-state>"
         + "  <state name='a'>"
         + "    <timer duedate='1 second' repeat='1 second' />"
+        + "    <transition to='b' />"
+        + "  </state>"
+        + "  <state name='b'>"
         + "    <transition to='end' />"
         + "  </state>"
         + "  <end-state name='end' />"
@@ -135,16 +137,18 @@
     assertEquals("a", getProcessInstanceState(processInstanceId));
     // cancel timer
     long rootTokenId = processInstance.getRootToken().getId();
-    cancelTimer("a", rootTokenId);
+    signalToken(rootTokenId);
     // no more expirations
     try {
-      EventCallback.waitForEvent(Event.EVENTTYPE_TIMER, 2000);
+      EventCallback.waitForEvent(Event.EVENTTYPE_TIMER, 1000);
+      System.out.println("canceled timer fired again, probably due to race condition");
+      EventCallback.waitForEvent(Event.EVENTTYPE_TIMER, 1000);
       fail("expected timeout exception");
     }
     catch (org.jbpm.JbpmException e) {
       // timeout exception was expected
     }
-
+    // proceed to end state
     signalToken(rootTokenId);
     assertTrue("expected process instance " + processInstanceId + " to have ended",
         hasProcessInstanceEnded(processInstanceId));
@@ -162,23 +166,23 @@
         + "    <transition to='a' />"
         + "  </start-state>"
         + "  <state name='a'>"
-        + "    <timer duedate='500 milliseconds' transition='timeout' />"
+        + "    <timer duedate='1 second' transition='timeout' />"
         + "    <transition name='timeout' to='b' />"
         + "  </state>"
         + "  <state name='b'>"
-        + "    <timer duedate='500 milliseconds' transition='timeout' />"
+        + "    <timer duedate='1 second' transition='timeout' />"
         + "    <transition name='timeout' to='c' />"
         + "  </state>"
         + "  <state name='c'>"
-        + "    <timer duedate='500 milliseconds' transition='timeout' />"
+        + "    <timer duedate='1 second' transition='timeout' />"
         + "    <transition name='timeout' to='d' />"
         + "  </state>"
         + "  <state name='d'>"
-        + "    <timer duedate='500 milliseconds' transition='timeout' />"
+        + "    <timer duedate='1 second' transition='timeout' />"
         + "    <transition name='timeout' to='e' />"
         + "  </state>"
         + "  <state name='e'>"
-        + "    <timer duedate='500 milliseconds' transition='timeout' />"
+        + "    <timer duedate='1 second' transition='timeout' />"
         + "    <transition name='timeout' to='end' />"
         + "  </state>"
         + "  <end-state name='end' />"
@@ -209,7 +213,7 @@
         + "    <transition name='e' to='e' />"
         + "  </fork>"
         + "  <state name='a'>"
-        + "    <timer duedate='0.5 seconds' transition='timeout' />"
+        + "    <timer duedate='0 seconds' transition='timeout' />"
         + "    <transition name='timeout' to='j' />"
         + "  </state>"
         + "  <state name='b'>"
@@ -217,15 +221,15 @@
         + "    <transition name='timeout' to='j' />"
         + "  </state>"
         + "  <state name='c'>"
-        + "    <timer duedate='1.5 seconds' transition='timeout' />"
+        + "    <timer duedate='2 seconds' transition='timeout' />"
         + "    <transition name='timeout' to='j' />"
         + "  </state>"
         + "  <state name='d'>"
-        + "    <timer duedate='2 seconds' transition='timeout' />"
+        + "    <timer duedate='3 seconds' transition='timeout' />"
         + "    <transition name='timeout' to='j' />"
         + "  </state>"
         + "  <state name='e'>"
-        + "    <timer duedate='2.5 second' transition='timeout' />"
+        + "    <timer duedate='4 seconds' transition='timeout' />"
         + "    <transition name='timeout' to='j' />"
         + "  </state>"
         + "  <join name='j' async='exclusive' lock='UPGRADE'>"
@@ -244,23 +248,12 @@
       private static final long serialVersionUID = 1L;
 
       public Object execute(JbpmContext jbpmContext) throws Exception {
-        return jbpmContext.loadProcessInstance(processInstanceId)
+        return jbpmContext
+            .loadProcessInstance(processInstanceId)
             .getRootToken()
             .getNode()
             .getName();
       }
     });
   }
-
-  private void cancelTimer(final String timerName, final long tokenId) throws RemoteException {
-    commandService.execute(new Command() {
-      private static final long serialVersionUID = 1L;
-
-      public Object execute(JbpmContext jbpmContext) throws Exception {
-        Token token = jbpmContext.loadToken(tokenId);
-        jbpmContext.getServices().getSchedulerService().deleteTimersByName(timerName, token);
-        return null;
-      }
-    });
-  }
 }




More information about the jbpm-commits mailing list