[jboss-svn-commits] JBL Code SVN: r30568 - in labs/jbossrules/soa_branches/BRMS-5.0.1: drools-compiler/src/test/java/org/drools/integrationtests and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 9 18:03:12 EST 2009


Author: tirelli
Date: 2009-12-09 18:03:10 -0500 (Wed, 09 Dec 2009)
New Revision: 30568

Added:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_Forall2.drl
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2369.drl
Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/pom.xml
Log:
JBRULES-2369: fixing interaction between no-loop and modify

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java	2009-12-09 22:23:19 UTC (rev 30567)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java	2009-12-09 23:03:10 UTC (rev 30568)
@@ -470,6 +470,46 @@
                       list.size() );
     }
 
+    public void testForall2() throws Exception {
+        final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newInputStreamResource( getClass().getResourceAsStream( "test_Forall2.drl" ) ),
+                      ResourceType.DRL );
+        assertFalse( kbuilder.getErrors().toString(),
+                     kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        final List<String> list = new ArrayList<String>();
+        ksession.setGlobal( "results",
+                            list );
+
+        final State state = new State( "SP" );
+        ksession.insert( state );
+
+        final Person bob = new Person( "Bob" );
+        bob.setStatus( state.getState() );
+        bob.setAlive( true );
+        ksession.insert( bob );
+
+        ksession.fireAllRules();
+
+        assertEquals( 0,
+                      list.size() );
+
+        final State qc = new State( "QC" );
+        ksession.insert( qc );
+        final Person john = new Person( "John" );
+        john.setStatus( qc.getState() );
+        john.setAlive( false );
+
+        ksession.fireAllRules();
+
+        assertEquals( 1,
+                      list.size() );
+    }
+
     public void testRemoveIdentitiesSubNetwork() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_removeIdentitiesSubNetwork.drl" ) ) );

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-12-09 22:23:19 UTC (rev 30567)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2009-12-09 23:03:10 UTC (rev 30568)
@@ -6642,6 +6642,44 @@
 
     }
 
+    public void testJBRules2369() {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_JBRules2369.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if ( errors.size() > 0 ) {
+            for ( KnowledgeBuilderError error : errors ) {
+                System.err.println( error );
+            }
+            fail( "Error loading test_JBRules2369" );
+        }
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List<String> results = new ArrayList<String>();
+        ksession.setGlobal( "results",
+                            results );
+
+        FactA a = new FactA();
+        FactB b = new FactB( Integer.valueOf( 0 ) );
+
+        org.drools.runtime.rule.FactHandle aHandle = ksession.insert( a );
+        org.drools.runtime.rule.FactHandle bHandle = ksession.insert( b );
+
+        ksession.fireAllRules();
+
+        assertEquals( 1,
+                      results.size() );
+
+        ksession.update( aHandle,
+                         a );
+
+        ksession.fireAllRules();
+        assertEquals( 2,
+                      results.size() );
+    }
+
     public void testInsertionOrder() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         kbuilder.add( ResourceFactory.newClassPathResource( "test_InsertionOrder.drl",
@@ -6695,7 +6733,7 @@
     public void testFireAllWhenFiringUntilHalt() {
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
         final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        
+
         Runnable fireUntilHalt = new Runnable() {
             public void run() {
                 ksession.fireUntilHalt();
@@ -6726,16 +6764,18 @@
         } catch ( InterruptedException e ) {
         }
         boolean aliveT1 = t1.isAlive();
-        if( t2.isAlive() ){
+        if ( t2.isAlive() ) {
             t2.interrupt();
         }
-        if( t1.isAlive() ) {
+        if ( t1.isAlive() ) {
             t1.interrupt();
         }
-        assertFalse( "T2 should have finished", aliveT2 );
-        assertFalse( "T1 should have finished", aliveT1 );
+        assertFalse( "T2 should have finished",
+                     aliveT2 );
+        assertFalse( "T1 should have finished",
+                     aliveT1 );
     }
-    
+
     public void testDroolsQueryCleanup() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         kbuilder.add( ResourceFactory.newClassPathResource( "test_QueryMemoryLeak.drl",

Copied: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_Forall2.drl (from rev 29700, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Forall2.drl)
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_Forall2.drl	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_Forall2.drl	2009-12-09 23:03:10 UTC (rev 30568)
@@ -0,0 +1,12 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "test nested CEs"	
+	when
+	    State( $state : state )
+	    forall( $p : Person( status == $state )
+	            Person( this == $p, alive == false ) )
+	then 
+		results.add("OK");		
+end
\ No newline at end of file

Added: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2369.drl
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2369.drl	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRules2369.drl	2009-12-09 23:03:10 UTC (rev 30568)
@@ -0,0 +1,15 @@
+package org.drools
+ 
+global java.util.List results
+
+rule "test jira jbrules 2369"
+    no-loop
+	when
+		$a : FactA( )
+		$b : FactB( ) 
+	then
+	    results.add( "FIRED" );
+	    modify( $b ) { 
+	        setF2( $b.getF2().intValue() + 1 ) 
+	    } 
+end

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2009-12-09 22:23:19 UTC (rev 30567)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2009-12-09 23:03:10 UTC (rev 30568)
@@ -188,12 +188,16 @@
             return;
         }
 
+        final InternalAgenda agenda = (InternalAgenda) workingMemory.getAgenda();
+
         // if the current Rule is no-loop and the origin rule is the same and its the same set of facts (tuple) then return
         if ( context.getType() == PropagationContext.MODIFICATION ) {
             if ( this.rule.isNoLoop() && this.rule.equals( context.getRuleOrigin() ) && context.getLeftTupleOrigin().equals( tuple ) ) {
+                agenda.increaseDormantActivations();
                 return;
             }
         } else if ( this.rule.isNoLoop() && this.rule.equals( context.getRuleOrigin() ) ) {
+            agenda.increaseDormantActivations();
             return;
         }
 
@@ -201,8 +205,6 @@
         // @FIXME
         final LeftTuple cloned = tuple;//new LeftTuple( tuple );
 
-        final InternalAgenda agenda = (InternalAgenda) workingMemory.getAgenda();
-
         final Duration dur = this.rule.getDuration();
 
         if ( dur != null && dur.getDuration( tuple ) > 0 ) {

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/pom.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/pom.xml	2009-12-09 22:23:19 UTC (rev 30567)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/pom.xml	2009-12-09 23:03:10 UTC (rev 30568)
@@ -547,6 +547,9 @@
                     <configuration>
                         <source>1.5</source>
                         <target>1.5</target>
+                        <fork>true</fork>
+                        <meminitial>128m</meminitial>
+                        <maxmem>512m</maxmem>
                     </configuration>
                 </plugin>
                 <plugin>



More information about the jboss-svn-commits mailing list