[jboss-svn-commits] JBL Code SVN: r19861 - in labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools: integrationtests and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 5 21:48:37 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-05-05 21:48:37 -0400 (Mon, 05 May 2008)
New Revision: 19861

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/MockRightTupleSink.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
Log:
JBRULES-1598 Efficient WorkingMemory serialization with binary protocol
-initial non-working impl
-refactorings so PropagationContexts reference LeftTuples and not activations, and also the facthandle
-FactHandle now uses an int for id.

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java	2008-05-05 23:59:51 UTC (rev 19860)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java	2008-05-06 01:48:37 UTC (rev 19861)
@@ -34,33 +34,33 @@
 
     private List              addresses = new ArrayList();
 
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        name    = (String)in.readObject();
-        likes    = (String)in.readObject();
-        age     = in.readInt();
-        bigDecimal    = (BigDecimal)in.readObject();
-        bigInteger    = (BigInteger)in.readObject();
-        hair    = (String)in.readObject();
-        sex     = in.readChar();
-        alive   = in.readBoolean();
-        status    = (String)in.readObject();
-        cheese    = (Cheese)in.readObject();
-        addresses    = (List)in.readObject();
-    }
+//    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+//        name    = (String)in.readObject();
+//        likes    = (String)in.readObject();
+//        age     = in.readInt();
+//        bigDecimal    = (BigDecimal)in.readObject();
+//        bigInteger    = (BigInteger)in.readObject();
+//        hair    = (String)in.readObject();
+//        sex     = in.readChar();
+//        alive   = in.readBoolean();
+//        status    = (String)in.readObject();
+//        cheese    = (Cheese)in.readObject();
+//        addresses    = (List)in.readObject();
+//    }
+//
+//    public void writeExternal(ObjectOutput out) throws IOException {
+//        out.writeObject(name);
+//        out.writeObject(likes);
+//        out.writeObject(bigDecimal);
+//        out.writeObject(bigInteger);
+//        out.writeObject(hair);
+//        out.writeChar(sex);
+//        out.writeBoolean(alive);
+//        out.writeObject(status);
+//        out.writeObject(cheese);
+//        out.writeObject(addresses);
+//    }
 
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(name);
-        out.writeObject(likes);
-        out.writeObject(bigDecimal);
-        out.writeObject(bigInteger);
-        out.writeObject(hair);
-        out.writeChar(sex);
-        out.writeBoolean(alive);
-        out.writeObject(status);
-        out.writeObject(cheese);
-        out.writeObject(addresses);
-    }
-
     public List getAddresses() {
         return addresses;
     }

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	2008-05-05 23:59:51 UTC (rev 19860)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2008-05-06 01:48:37 UTC (rev 19861)
@@ -264,8 +264,8 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicFunction1.drl" ) ) );
 
         //FIXME JBRULES-1258 serialising a package breaks function removal -- left the serialisation commented out for now
-        //final Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
-        final Package pkg = builder.getPackage();
+        final Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
+        //final Package pkg = builder.getPackage();
 
         RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java	2008-05-06 01:48:37 UTC (rev 19861)
@@ -0,0 +1,80 @@
+package org.drools.persister;
+
+import java.io.ByteArrayOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectInputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.drools.Person;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
+import org.drools.audit.WorkingMemoryInMemoryLogger;
+import org.drools.base.ClassObjectType;
+import org.drools.common.BaseNode;
+import org.drools.common.InternalRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.reteoo.ObjectTypeNode;
+import org.drools.reteoo.RuleTerminalNode;
+import org.drools.rule.Package;
+
+public class WorkingMemorySerialisationTest extends TestCase {
+    
+    public void xxxtest1() throws Exception {
+        String rule = "package org.test;\n";
+        rule += "import org.drools.Person\n";
+        rule += "global java.util.List list\n";
+        rule += "rule \"Rule 1\"\n";
+        rule += "when\n";
+        rule += "    $p : Person( ) \n";
+        rule += "then\n";
+        rule += "    list.add( $p );\n";
+        rule += "end";
+
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new StringReader( rule ));
+        final Package pkg = builder.getPackage();
+
+        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        ruleBase.addPackage(pkg);
+
+        // Make sure the rete node map is created correctly
+        Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
+        assertEquals( 2, nodes.size() );
+        assertEquals( "Person", ((ClassObjectType)((ObjectTypeNode)nodes.get(3)).getObjectType()).getClassType().getSimpleName() );
+        assertEquals( "Rule 1", ((RuleTerminalNode)nodes.get(5)).getRule().getName() );
+        
+        StatefulSession session = ruleBase.newStatefulSession();
+
+        List list = new ArrayList();
+        session.setGlobal( "list", list );
+
+        Person p = new Person( "bobba fet", 32);
+        
+        session.insert( p );
+        
+        PlaceholderResolverStrategyFactory factory = new PlaceholderResolverStrategyFactory();
+        factory.addPlaceholderResolverStrategy( new SerializablePlaceholderResolverStrategy() );
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        OutputPersister op = new OutputPersister( (InternalRuleBase) ruleBase, ( InternalWorkingMemory )session, new ObjectOutputStream( baos ), factory);
+        op.write();
+        
+        ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );
+        InputPersister ip = new InputPersister( (InternalRuleBase) ruleBase, new ObjectInputStream( bais ), factory);        
+        WorkingMemory wm2 = ip.read(); 
+        
+
+//        session.fireAllRules();
+//
+//        assertEquals( 1, ((List)session.getGlobal("list")).size());
+//        assertEquals( p, ((List)session.getGlobal("list")).get(0));
+    }
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/MockRightTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/MockRightTupleSink.java	2008-05-05 23:59:51 UTC (rev 19860)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/MockRightTupleSink.java	2008-05-06 01:48:37 UTC (rev 19861)
@@ -21,6 +21,10 @@
     
     public List getRetracted() {
         return this.retracted;
+    }
+
+    public int getId() {
+        return 0;
     }    
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-05-05 23:59:51 UTC (rev 19860)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-05-06 01:48:37 UTC (rev 19861)
@@ -93,7 +93,7 @@
         final AgendaItem item = new AgendaItem( 0,
                                                 tuple,
                                                 10,
-                                                new PropagationContextImpl(1, 1, null, null),
+                                                new PropagationContextImpl(1, 1, null, null, null),
                                                 context.getRule(),
                                                 null );
         final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( wm );




More information about the jboss-svn-commits mailing list