[jboss-svn-commits] JBL Code SVN: r20196 - in labs/jbossrules/trunk/drools-core/src/test/java/org/drools: process and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 28 09:42:19 EDT 2008


Author: KrisVerlaenen
Date: 2008-05-28 09:42:19 -0400 (Wed, 28 May 2008)
New Revision: 20196

Added:
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/TimerTest.java
Log:
Timer test

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/TimerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/TimerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/TimerTest.java	2008-05-28 13:42:19 UTC (rev 20196)
@@ -0,0 +1,71 @@
+package org.drools.process;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBaseFactory;
+import org.drools.common.AbstractRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.process.core.timer.Timer;
+import org.drools.process.instance.timer.TimerManager;
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+
+public class TimerTest extends TestCase {
+
+	private int counter = 0;
+
+	public void testTimer() {
+        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
+        InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+        RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance() {
+        	public void timerTriggered(Timer timer) {
+        		System.out.println("Timer " + timer.getId() + " triggered");
+        		counter++;
+        	}
+        };
+        processInstance.setId(1234);
+        workingMemory.addProcessInstance(processInstance);
+        TimerManager timerManager = workingMemory.getTimerManager();
+        Timer timer = new Timer();
+        timerManager.registerTimer(timer, processInstance);
+        try {
+        	Thread.sleep(500);
+        } catch (InterruptedException e) {
+        	// do nothing
+        }
+        assertEquals(1, counter);
+        
+        counter = 0;
+        timer = new Timer();
+        timer.setDelay(1000);
+        timerManager.registerTimer(timer, processInstance);
+        assertEquals(0, counter);
+        try {
+        	Thread.sleep(2000);
+        } catch (InterruptedException e) {
+        	// do nothing
+        }
+        assertEquals(1, counter);
+        
+        counter = 0;
+        timer = new Timer();
+        timer.setDelay(1000);
+        timer.setPeriod(1000);
+        timerManager.registerTimer(timer, processInstance);
+        assertEquals(0, counter);
+        try {
+        	Thread.sleep(5500);
+        } catch (InterruptedException e) {
+        	// do nothing
+        }
+        assertEquals(5, counter);
+        timerManager.cancelTimer(timer);
+        try {
+        	Thread.sleep(2000);
+        } catch (InterruptedException e) {
+        	// do nothing
+        }
+        assertEquals(5, counter);
+	}
+	
+}




More information about the jboss-svn-commits mailing list