[jboss-svn-commits] JBL Code SVN: r16417 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Nov 7 20:40:59 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-11-07 20:40:59 -0500 (Wed, 07 Nov 2007)
New Revision: 16417

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
JBRULES-1316 Serialising Both the RuleBase and WorkingMemory throws null pointer

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-11-08 01:21:20 UTC (rev 16416)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-11-08 01:40:59 UTC (rev 16417)
@@ -1811,7 +1811,8 @@
         assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
     }
     
-    public void testSerializeWorkingMemoryAndRuleBase() throws Exception {
+    public void testSerializeWorkingMemoryAndRuleBase1() throws Exception {
+        // has the first newStatefulSession before the ruleBase is serialised
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
 
         final PackageBuilder builder = new PackageBuilder();
@@ -1823,6 +1824,7 @@
 
         RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
 
+        WorkingMemory workingMemory = ruleBase.newStatefulSession();        
         
         Map map = new HashMap();
         map.put( "x", ruleBase );
@@ -1830,8 +1832,8 @@
         map = (Map) serializeIn( ast );
         ruleBase = (RuleBase) map.get( "x" );
 
-        WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
+
         
         final byte[] wm = serializeOut( workingMemory );
 
@@ -1890,6 +1892,86 @@
 
     }    
 
+    public void testSerializeWorkingMemoryAndRuleBase2() throws Exception {
+        // has the first newStatefulSession after the ruleBase is serialised
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
+
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( reader );
+        final Package pkg = builder.getPackage();
+
+        assertEquals( 0,
+                      builder.getErrors().getErrors().length );
+
+        RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();   
+        
+        Map map = new HashMap();
+        map.put( "x", ruleBase );
+        final byte[] ast = serializeOut( map );
+        map = (Map) serializeIn( ast );
+        ruleBase = (RuleBase) map.get( "x" );
+
+        WorkingMemory workingMemory = ruleBase.newStatefulSession();    
+        
+        final byte[] wm = serializeOut( workingMemory );
+
+        workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
+
+        ruleBase.addPackage( pkg );
+
+        workingMemory.setGlobal( "list", 
+                new ArrayList() );
+        
+
+        final Person bob = new Person( "bob" );
+        workingMemory.insert( bob );
+
+
+        
+        final Rule[] rules = ruleBase.getPackages()[0].getRules();
+
+                
+        assertEquals( 4,
+                      rules.length );
+
+        assertEquals( "match Person 1",
+                      rules[0].getName() );
+        assertEquals( "match Person 2",
+                      rules[1].getName() );
+        assertEquals( "match Person 3",
+                      rules[2].getName() );
+        assertEquals( "match Integer",
+                      rules[3].getName() );
+
+        
+
+        assertEquals( 1,
+                      IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+        assertEquals( bob,
+                      IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+
+        assertEquals( 2,
+                      workingMemory.getAgenda().agendaSize() );
+
+        workingMemory.fireAllRules();
+
+        final List list = (List) workingMemory.getGlobal( "list" );
+
+        assertEquals( 3,
+                      list.size() );
+        // because of agenda-groups
+        assertEquals( new Integer( 4 ),
+                      list.get( 0 ) );
+
+        assertEquals( 2,
+                      IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+        assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
+        assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
+
+    }    
+    
+    
+    
     public void testEmptyRule() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_EmptyRule.drl" ) ) );




More information about the jboss-svn-commits mailing list