[jboss-svn-commits] JBL Code SVN: r19844 - in labs/jbossrules/trunk/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:57:20 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-05-02 22:57:20 -0400 (Fri, 02 May 2008)
New Revision: 19844

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
Log:
JBRULES-1583 Heap and scheduled Activations
-Added Unit test

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java	2008-05-03 02:56:27 UTC (rev 19843)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Alarm.java	2008-05-03 02:57:20 UTC (rev 19844)
@@ -3,6 +3,8 @@
 public class Alarm {
     private String message;
 
+    private int number;
+    
     public Alarm() {
 
     }
@@ -62,5 +64,17 @@
     public void setMessage(final String message) {
         this.message = message;
     }
+    
+    public int getNumber() {
+        return number;
+    }
 
+    public void setNumber(int number) {
+        this.number = number;
+    }
+    
+    public void incrementNumber() {
+        this.number++;;
+    }     
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2008-05-03 02:56:27 UTC (rev 19843)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2008-05-03 02:57:20 UTC (rev 19844)
@@ -2,6 +2,8 @@
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
+
+import org.drools.Alarm;
 import org.drools.Cheese;
 import org.drools.FactHandle;
 import org.drools.Message;
@@ -33,6 +35,7 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -493,6 +496,39 @@
         assertEquals( 1,
                       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 testFireRuleAfterDuration() throws Exception {
         final PackageBuilder builder = new PackageBuilder();




More information about the jboss-svn-commits mailing list