[jboss-svn-commits] JBL Code SVN: r33849 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/integrationtests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 12 18:36:20 EDT 2010
Author: tirelli
Date: 2010-07-12 18:36:19 -0400 (Mon, 12 Jul 2010)
New Revision: 33849
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
Log:
JBRULES-2206: adding test case for not and exists with dynamic rules
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2010-07-12 19:14:24 UTC (rev 33848)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2010-07-12 22:36:19 UTC (rev 33849)
@@ -45,6 +45,7 @@
import org.drools.core.util.DroolsStreamUtils;
import org.drools.definition.KnowledgePackage;
import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.event.rule.ActivationCreatedEvent;
import org.drools.event.rule.AgendaEventListener;
import org.drools.io.ResourceFactory;
import org.drools.marshalling.MarshallerFactory;
@@ -1160,14 +1161,15 @@
assertFalse( kbuilder.getErrors().toString(),
kbuilder.hasErrors() );
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
+
// rule should be reactivated, since data is still in the session
verify( alistener,
times( 2 ) ).activationCreated( any( org.drools.event.rule.ActivationCreatedEvent.class ) );
-
+
}
- public void testSharedLIANodeRemoval() throws IOException, DroolsParserException {
+ public void testSharedLIANodeRemoval() throws IOException,
+ DroolsParserException {
String str = "global java.util.List list;\n";
str += "rule \"test\"\n";
str += "when\n";
@@ -1175,33 +1177,81 @@
str += "then\n";
str += " list.add(\"fired\");\n";
str += "end\n";
-
+
PackageBuilder pkgBuilder = new PackageBuilder();
- pkgBuilder.addPackageFromDrl(new StringReader(str));
- Assert.assertTrue("Should not have errors", pkgBuilder.getErrors().isEmpty());
+ pkgBuilder.addPackageFromDrl( new StringReader( str ) );
+ Assert.assertTrue( "Should not have errors",
+ pkgBuilder.getErrors().isEmpty() );
// Add once ...
- ReteooRuleBase rb = new ReteooRuleBase("dummy");
- rb.addPackage(pkgBuilder.getPackage());
+ ReteooRuleBase rb = new ReteooRuleBase( "dummy" );
+ rb.addPackage( pkgBuilder.getPackage() );
// This one works
List list = new ArrayList();
StatefulSession session = rb.newStatefulSession();
- session.setGlobal( "list", list );
- session.fireAllRules();
- assertEquals(1, list.size() );
+ session.setGlobal( "list",
+ list );
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
-
list.clear();
// ... remove ...
- rb.removePackage(pkgBuilder.getPackage().getName());
- rb.addPackage(pkgBuilder.getPackage());
+ rb.removePackage( pkgBuilder.getPackage().getName() );
+ rb.addPackage( pkgBuilder.getPackage() );
session = rb.newStatefulSession();
- session.setGlobal( "list", list );
- session.fireAllRules();
- assertEquals(1, list.size() );
+ session.setGlobal( "list",
+ list );
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
}
-
+
+ public void testJBRULES_2206() {
+ KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+ ((RuleBaseConfiguration) config).setRuleBaseUpdateHandler( null );
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( config );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ AgendaEventListener ael = mock( AgendaEventListener.class );
+ session.addEventListener( ael );
+
+ for ( int i = 0; i < 5; i++ ) {
+ session.insert( new Cheese() );
+ }
+
+ addDrlToKBase( kbase, "test_JBRULES_2206_1.drl" );
+
+ // two matching rules were added, so 2 activations should have been created
+ verify( ael, times(2) ).activationCreated( any( ActivationCreatedEvent.class ) );
+ int fireCount = session.fireAllRules();
+ // both should have fired
+ assertEquals( 2, fireCount );
+
+ addDrlToKBase( kbase, "test_JBRULES_2206_2.drl" );
+
+ // one rule was overridden and should activate
+ verify( ael, times(3) ).activationCreated( any( ActivationCreatedEvent.class ) );
+ fireCount = session.fireAllRules();
+ // that rule should fire again
+ assertEquals( 1, fireCount );
+
+ session.dispose();
+ }
+
+ private void addDrlToKBase(KnowledgeBase kbase, String drlName) {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( drlName,
+ DynamicRulesTest.class ),
+ ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ }
+
public class SubvertedClassLoader extends URLClassLoader {
private static final long serialVersionUID = 400L;
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl 2010-07-12 22:36:19 UTC (rev 33849)
@@ -0,0 +1,15 @@
+package org.drools;
+
+rule "notNotRule"
+ when
+ exists ( Cheese() );
+ then
+ //System.out.println("Rule fired...");
+end
+
+rule "existsRule"
+ when
+ exists ( Cheese() );
+ then
+ //System.out.println("exists rule fired...");
+end
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl 2010-07-12 22:36:19 UTC (rev 33849)
@@ -0,0 +1,9 @@
+package org.drools;
+
+rule "notNotRule"
+ when
+ not ( not ( Cheese() ) );
+ then
+ //System.out.println("Rule fired...");
+end
+
More information about the jboss-svn-commits
mailing list