[jboss-svn-commits] JBL Code SVN: r19843 - in labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools: integrationtests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri May 2 22:56:27 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-05-02 22:56:27 -0400 (Fri, 02 May 2008)
New Revision: 19843
Modified:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/Alarm.java
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
Log:
JBRULES-1583 Heap and scheduled Activations
-ScheduledActivations should remove themselves from the linkedlist after firing.
-Added Unit test
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/Alarm.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/Alarm.java 2008-05-03 02:56:20 UTC (rev 19842)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/Alarm.java 2008-05-03 02:56:27 UTC (rev 19843)
@@ -2,6 +2,8 @@
public class Alarm {
private String message;
+
+ private int number;
public Alarm() {
@@ -63,4 +65,15 @@
this.message = message;
}
+ public int getNumber() {
+ return number;
+ }
+
+ public void setNumber(int number) {
+ this.number = number;
+ }
+
+ public void incrementNumber() {
+ this.number++;;
+ }
}
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java 2008-05-03 02:56:20 UTC (rev 19842)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java 2008-05-03 02:56:27 UTC (rev 19843)
@@ -3,12 +3,14 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
import junit.framework.TestCase;
+import org.drools.Alarm;
import org.drools.Cheese;
import org.drools.FactHandle;
import org.drools.Person;
@@ -16,6 +18,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
import org.drools.WorkingMemory;
import org.drools.common.DefaultAgenda;
import org.drools.common.InternalWorkingMemoryActions;
@@ -450,9 +453,41 @@
// now check for update
assertEquals( 2,
- list.size() );
-
+ list.size() );
}
+
+ public void testDurationMemoryLeakonRepeatedUpdate() throws Exception {
+ String str = "package org.drools.test\n" +
+ "import org.drools.Alarm\n" +
+ "global java.util.List list;" +
+ "rule \"COMPTEUR\"\n" +
+ " duration 50\n" +
+ " when\n" +
+ " $alarm : Alarm( number < 5 )\n" +
+ " then\n" +
+ " $alarm.incrementNumber();\n" +
+ " list.add( $alarm );\n" +
+ " update($alarm);\n" +
+ "end\n";
+
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( str ) );
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list", list );
+ session.insert( new Alarm() );
+
+ session.fireAllRules();
+
+ Thread.sleep( 1000 );
+
+ assertEquals( 5, list.size() );
+ assertEquals(0, session.getAgenda().getScheduledActivations().length );
+ }
public void testUpdateNoLoop() throws Exception {
// JBRULES-780, throws a NullPointer or infinite loop if there is an issue
More information about the jboss-svn-commits
mailing list