[jboss-svn-commits] JBL Code SVN: r18984 - labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 14 12:11:23 EDT 2008
Author: mingjin
Date: 2008-03-14 12:11:23 -0400 (Fri, 14 Mar 2008)
New Revision: 18984
Modified:
labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
Log:
added rulebase serialization to all except the first one
Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-03-14 16:02:05 UTC (rev 18983)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java 2008-03-14 16:11:23 UTC (rev 18984)
@@ -1,12 +1,6 @@
package org.drools.integrationtests;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
import junit.framework.TestCase;
-
import org.drools.Cheese;
import org.drools.CheeseEqual;
import org.drools.FactHandle;
@@ -28,6 +22,11 @@
import org.drools.rule.Package;
import org.drools.util.ObjectHashMap;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
public class TruthMaintenanceTest extends TestCase {
protected RuleBase getRuleBase() throws Exception {
@@ -41,13 +40,144 @@
config );
}
+ public void testLogicalInsertionsDynamicRule() throws Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
+ // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+ RuleBase ruleBase = getRuleBase();
+ if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
+ reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
+ // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
+ // {
+ // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
+ }
+ ruleBase.addPackage( pkg );
+// ruleBase = SerializationHelper.serializeObject(ruleBase);
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ // workingMemory.addEventListener(new
+ // org.drools.event.DebugAgendaEventListener());
+ // workingMemory.addEventListener(new
+ // org.drools.event.DebugWorkingMemoryEventListener());
+
+ final Cheese c1 = new Cheese( "a",
+ 1 );
+ final Cheese c2 = new Cheese( "b",
+ 2 );
+ final Cheese c3 = new Cheese( "c",
+ 3 );
+ List list;
+
+ workingMemory.insert( c1 );
+ final FactHandle h = workingMemory.insert( c2 );
+ workingMemory.insert( c3 );
+ workingMemory.fireAllRules();
+
+ // Check logical Insertions where made for c2 and c3
+ list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ assertEquals( 2,
+ list.size() );
+ assertFalse( list.contains( new Person( c1.getType() ) ) );
+ assertTrue( list.contains( new Person( c2.getType() ) ) );
+ assertTrue( list.contains( new Person( c3.getType() ) ) );
+
+ // this rule will make a logical assertion for c1 too
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule2.drl" ) );
+ builder = new PackageBuilder();
+ builder.addPackageFromDrl( reader );
+ final Package pkg2 = builder.getPackage();
+ ruleBase.addPackage( pkg2 );
+// ruleBase = SerializationHelper.serializeObject(ruleBase);
+
+ workingMemory.fireAllRules();
+
+ // check all now have just one logical assertion each
+ list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ assertEquals( 3,
+ list.size() );
+ assertTrue( list.contains( new Person( c1.getType() ) ) );
+ assertTrue( list.contains( new Person( c2.getType() ) ) );
+ assertTrue( list.contains( new Person( c3.getType() ) ) );
+
+ // check the packages are correctly populated
+ assertEquals( "org.drools.test",
+ ruleBase.getPackages()[0].getName() );
+ assertEquals( "org.drools.test2",
+ ruleBase.getPackages()[1].getName() );
+ assertEquals( "rule1",
+ ruleBase.getPackages()[0].getRules()[0].getName() );
+ assertEquals( "rule2",
+ ruleBase.getPackages()[1].getRules()[0].getName() );
+
+ // now remove the first rule
+ if ( reteooRuleBase != null ) {
+ reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
+ ruleBase.getPackages()[0].getRules()[0].getName() );
+ // } else if ( leapsRuleBase != null ) {
+ // leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
+ // ruleBase.getPackages()[0].getRules()[0].getName() );
+ }
+
+ // Check the rule was correctly remove
+ assertEquals( 0,
+ ruleBase.getPackages()[0].getRules().length );
+ assertEquals( 1,
+ ruleBase.getPackages()[1].getRules().length );
+ assertEquals( "org.drools.test2",
+ ruleBase.getPackages()[1].getName() );
+ assertEquals( "rule2",
+ ruleBase.getPackages()[1].getRules()[0].getName() );
+
+ list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ assertEquals( "removal of the rule should result in retraction of c3's logical assertion",
+ 2,
+ list.size() );
+ assertTrue( "c1's logical assertion should not be retracted",
+ list.contains( new Person( c1.getType() ) ) );
+ assertTrue( "c2's logical assertion should not be retracted",
+ list.contains( new Person( c2.getType() ) ) );
+ assertFalse( "c3's logical assertion should be retracted",
+ list.contains( new Person( c3.getType() ) ) );
+
+ c2.setPrice( 3 );
+ workingMemory.update( h,
+ c2 );
+ list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ assertEquals( "c2 now has a higher price, its logical assertion should be cancelled",
+ 1,
+ list.size() );
+ assertFalse( "The logical assertion cor c2 should have been retracted",
+ list.contains( new Person( c2.getType() ) ) );
+ assertTrue( "The logical assertion for c1 should exist",
+ list.contains( new Person( c1.getType() ) ) );
+
+ if ( reteooRuleBase != null ) {
+ reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
+ ruleBase.getPackages()[1].getRules()[0].getName() );
+ // } else if ( leapsRuleBase != null ) {
+ // leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
+ // ruleBase.getPackages()[1].getRules()[0].getName() );
+ }
+ assertEquals( 0,
+ ruleBase.getPackages()[0].getRules().length );
+ assertEquals( 0,
+ ruleBase.getPackages()[1].getRules().length );
+ list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+ assertEquals( 0,
+ list.size() );
+ }
+
public void testLogicalInsertions() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertions.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -86,8 +216,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsBacking.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese cheese1 = new Cheese( "c",
@@ -139,8 +270,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsSelfreferencing.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list;
@@ -182,8 +314,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsLoop.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list;
@@ -210,8 +343,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNoLoop.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list;
@@ -238,8 +372,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsWithUpdate.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final WorkingMemoryEventListener l2 = new DefaultWorkingMemoryEventListener() {
@@ -295,8 +430,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertions2.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
// final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( workingMemory );
@@ -345,8 +481,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNot.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list;
@@ -402,8 +539,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNotPingPong.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
// workingMemory.addEventListener(new DebugAgendaEventListener());
@@ -430,141 +568,14 @@
list.size() );
}
- public void testLogicalInsertionsDynamicRule() throws Exception {
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
- // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
- final RuleBase ruleBase = getRuleBase();
- if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
- reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
- // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
- // {
- // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
- }
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
- // workingMemory.addEventListener(new
- // org.drools.event.DebugAgendaEventListener());
- // workingMemory.addEventListener(new
- // org.drools.event.DebugWorkingMemoryEventListener());
-
- final Cheese c1 = new Cheese( "a",
- 1 );
- final Cheese c2 = new Cheese( "b",
- 2 );
- final Cheese c3 = new Cheese( "c",
- 3 );
- List list;
-
- workingMemory.insert( c1 );
- final FactHandle h = workingMemory.insert( c2 );
- workingMemory.insert( c3 );
- workingMemory.fireAllRules();
-
- // Check logical Insertions where made for c2 and c3
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
- assertEquals( 2,
- list.size() );
- assertFalse( list.contains( new Person( c1.getType() ) ) );
- assertTrue( list.contains( new Person( c2.getType() ) ) );
- assertTrue( list.contains( new Person( c3.getType() ) ) );
-
- // this rule will make a logical assertion for c1 too
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule2.drl" ) );
- builder = new PackageBuilder();
- builder.addPackageFromDrl( reader );
- final Package pkg2 = builder.getPackage();
- ruleBase.addPackage( pkg2 );
-
- workingMemory.fireAllRules();
-
- // check all now have just one logical assertion each
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
- assertEquals( 3,
- list.size() );
- assertTrue( list.contains( new Person( c1.getType() ) ) );
- assertTrue( list.contains( new Person( c2.getType() ) ) );
- assertTrue( list.contains( new Person( c3.getType() ) ) );
-
- // check the packages are correctly populated
- assertEquals( "org.drools.test",
- ruleBase.getPackages()[0].getName() );
- assertEquals( "org.drools.test2",
- ruleBase.getPackages()[1].getName() );
- assertEquals( "rule1",
- ruleBase.getPackages()[0].getRules()[0].getName() );
- assertEquals( "rule2",
- ruleBase.getPackages()[1].getRules()[0].getName() );
-
- // now remove the first rule
- if ( reteooRuleBase != null ) {
- reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
- ruleBase.getPackages()[0].getRules()[0].getName() );
- // } else if ( leapsRuleBase != null ) {
- // leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
- // ruleBase.getPackages()[0].getRules()[0].getName() );
- }
-
- // Check the rule was correctly remove
- assertEquals( 0,
- ruleBase.getPackages()[0].getRules().length );
- assertEquals( 1,
- ruleBase.getPackages()[1].getRules().length );
- assertEquals( "org.drools.test2",
- ruleBase.getPackages()[1].getName() );
- assertEquals( "rule2",
- ruleBase.getPackages()[1].getRules()[0].getName() );
-
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
- assertEquals( "removal of the rule should result in retraction of c3's logical assertion",
- 2,
- list.size() );
- assertTrue( "c1's logical assertion should not be retracted",
- list.contains( new Person( c1.getType() ) ) );
- assertTrue( "c2's logical assertion should not be retracted",
- list.contains( new Person( c2.getType() ) ) );
- assertFalse( "c3's logical assertion should be retracted",
- list.contains( new Person( c3.getType() ) ) );
-
- c2.setPrice( 3 );
- workingMemory.update( h,
- c2 );
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
- assertEquals( "c2 now has a higher price, its logical assertion should be cancelled",
- 1,
- list.size() );
- assertFalse( "The logical assertion cor c2 should have been retracted",
- list.contains( new Person( c2.getType() ) ) );
- assertTrue( "The logical assertion for c1 should exist",
- list.contains( new Person( c1.getType() ) ) );
-
- if ( reteooRuleBase != null ) {
- reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
- ruleBase.getPackages()[1].getRules()[0].getName() );
- // } else if ( leapsRuleBase != null ) {
- // leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
- // ruleBase.getPackages()[1].getRules()[0].getName() );
- }
- assertEquals( 0,
- ruleBase.getPackages()[0].getRules().length );
- assertEquals( 0,
- ruleBase.getPackages()[1].getRules().length );
- list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
- assertEquals( 0,
- list.size() );
- }
-
public void testLogicalInsertionsUpdateEqual() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsUpdateEqual.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
List l;
@@ -603,8 +614,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionWithExists.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Person p1 = new Person( "p1",
@@ -689,8 +701,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_logicalInsertions3.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -741,8 +754,9 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsAccumulatorPattern.drl" ) ) );
final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject(ruleBase);
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.setGlobal( "ga", "a");
More information about the jboss-svn-commits
mailing list