[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