[jboss-svn-commits] JBL Code SVN: r6689 - in labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src: main/java/org/drools/reteoo test/java/org/drools/examples/manners

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 8 10:20:56 EDT 2006


Author: tirelli
Date: 2006-10-08 10:20:47 -0400 (Sun, 08 Oct 2006)
New Revision: 6689

Added:
   labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
Modified:
   labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BaseNode.java
   labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
Log:
Adding working memory visitor to help provide debug information

Modified: labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BaseNode.java
===================================================================
--- labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BaseNode.java	2006-10-08 14:16:23 UTC (rev 6688)
+++ labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BaseNode.java	2006-10-08 14:20:47 UTC (rev 6689)
@@ -150,6 +150,6 @@
     }
 
     public String toString() {
-        return "[" + this.getClass().getName() + "(" + this.id + ")]";
+        return "[" + this.getClass().getName().substring( this.getClass().getName().lastIndexOf( '.' )+1 ) + "(" + this.id + ")]";
     }
 }

Modified: labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-10-08 14:16:23 UTC (rev 6688)
+++ labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-10-08 14:20:47 UTC (rev 6689)
@@ -152,7 +152,8 @@
     public String toString() {
         // return "[JoinNode: common=" + this.commonDeclarations + "; decls=" +
         // this.tupleDeclarations + "]";
-        return "";
+        return "["+this.getClass().getName().substring( this.getClass().getName().lastIndexOf( '.' )+1 )+
+        "("+this.getId()+")]";
     }
 
     /* (non-Javadoc)

Added: labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
===================================================================
--- labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java	2006-10-08 14:16:23 UTC (rev 6688)
+++ labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java	2006-10-08 14:20:47 UTC (rev 6689)
@@ -0,0 +1,186 @@
+package org.drools.reteoo;
+
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.beta.BetaLeftMemory;
+import org.drools.reteoo.beta.BetaRightMemory;
+import org.drools.util.PrimitiveLongMap;
+import org.drools.util.ReflectiveVisitor;
+
+public class MemoryVisitor extends ReflectiveVisitor {
+    private ReteooWorkingMemory workingMemory;
+    private int  indent = 0;
+
+    /**
+     * Constructor.
+     */
+    public MemoryVisitor(InternalWorkingMemory workingMemory) {
+        this.workingMemory = (ReteooWorkingMemory) workingMemory;
+    }
+
+    /**
+     * RuleBaseImpl visits its Rete.
+     */
+    public void visitReteooRuleBase(final ReteooRuleBase ruleBase) {
+        visit( (ruleBase).getRete() );
+    }
+
+    /**
+     * Rete visits each of its ObjectTypeNodes.
+     */
+    public void visitRete(final Rete rete) {
+        Collection nodes = rete.getObjectTypeNodes();
+
+        Iterator it = nodes.iterator();
+        for ( ObjectTypeNode entry = (ObjectTypeNode) it.next(); it.hasNext() ; entry = (ObjectTypeNode) it.next() ) {
+            visit( entry );
+        }
+    }
+
+    public void visitObjectTypeNode(final ObjectTypeNode node) {
+        System.out.println( "\n" + indent() + node );
+        
+        PrimitiveLongMap memory  = ( PrimitiveLongMap ) this.workingMemory.getNodeMemory( node );   
+        checkMemory( memory );          
+
+        indent++;
+        try {
+            Field field = ObjectSource.class.getDeclaredField( "objectSinks" );
+            field.setAccessible( true );
+            ObjectSinkList sinklist = (ObjectSinkList) field.get( node );
+            for( Iterator it = sinklist.iterator(); it.hasNext(); ) {
+                ObjectSink sink = (ObjectSink) it.next();
+                visit( sink );
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+        indent--;
+    }
+
+    public void visitAlphaNode(final AlphaNode node) {
+        System.out.println( "\n" + indent() + node );
+        
+        Set memory  = ( Set ) this.workingMemory.getNodeMemory( node );  
+        checkMemory(memory);
+      
+        indent++;
+        try {
+            Field field = ObjectSource.class.getDeclaredField( "objectSinks" );
+            field.setAccessible( true );
+            ObjectSinkList sinklist = (ObjectSinkList) field.get( node );
+            for( Iterator it = sinklist.iterator(); it.hasNext(); ) {
+                ObjectSink sink = (ObjectSink) it.next();
+                visit( sink );
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+        indent--;
+    }
+
+    public void visitLeftInputAdapterNode(final LeftInputAdapterNode node) {
+        System.out.println( "\n" + indent() + node );
+        
+        Map memory  = ( Map ) this.workingMemory.getNodeMemory( node );  
+        checkMemory(memory);
+
+        indent++;
+        try {
+            Field field = TupleSource.class.getDeclaredField( "tupleSinks" );
+            field.setAccessible( true );
+            List sinklist = (List) field.get( node );
+            for( Iterator it = sinklist.iterator(); it.hasNext(); ) {
+                visit( it.next() );
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+        indent--;
+    }
+
+    public void visitJoinNode(final JoinNode node) {
+        System.out.println( "\n" + indent() + node );
+        
+        BetaMemory memory  = ( BetaMemory ) this.workingMemory.getNodeMemory( node );   
+        checkMemory( memory.getLeftTupleMemory() );          
+        checkMemory( memory.getRightObjectMemory() );
+        
+        indent++;
+        try {
+            Field field = TupleSource.class.getDeclaredField( "tupleSinks" );
+            field.setAccessible( true );
+            List sinklist = (List) field.get( node );
+            for( Iterator it = sinklist.iterator(); it.hasNext(); ) {
+                visit( it.next() );
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+        indent--;
+    }
+
+    public void visitNotNode(final NotNode node) {
+        System.out.println( "\n" + indent() + node );
+        
+        BetaMemory memory  = ( BetaMemory ) this.workingMemory.getNodeMemory( node );   
+        checkMemory( memory.getLeftTupleMemory() );          
+        checkMemory( memory.getRightObjectMemory() );
+        
+        indent++;
+        try {
+            Field field = TupleSource.class.getDeclaredField( "tupleSinks" );
+            field.setAccessible( true );
+            List sinklist = (List) field.get( node );
+            for( Iterator it = sinklist.iterator(); it.hasNext(); ) {
+                visit( it.next() );
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
+        }
+        indent--;
+    }
+
+    public void visitTerminalNode(final TerminalNode node) {
+        System.out.println( "\n" + indent() + node );
+    }
+    
+    private void checkMemory( PrimitiveLongMap memory ) {
+        Collection values = memory.values();
+        
+        System.out.println( indent() + "PrimitiveLongMap: " + memory.size()  + ":" + values.size());
+        if ( memory.size() != values.size() ) {
+            System.out.println( indent() + "error" );
+        }  
+    }
+    
+    private void checkMemory( Set memory ) {
+        System.out.println( indent() + "Set: " + memory.size());
+    }
+    
+    private void checkMemory( Map memory ) {
+        System.out.println( indent() + "Map: " + memory.size());
+    }
+    
+    private void checkMemory( BetaLeftMemory memory ) {
+        System.out.println( indent() + "BetaLeftMemory: " + memory.size());
+    }
+    
+    private void checkMemory( BetaRightMemory memory ) {
+        System.out.println( indent() + "BetaRightMemory: " + memory.size());
+    }
+    
+    private String  indent() {
+        StringBuffer buffer  = new  StringBuffer();
+        for ( int i  =  0; i <  indent; i++ ) {
+            buffer.append( "  " );
+        }
+        return buffer.toString();
+    }
+}


Property changes on: labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + id author date revision
Name: svn:eol-style
   + native

Modified: labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
===================================================================
--- labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java	2006-10-08 14:16:23 UTC (rev 6688)
+++ labs/jbossrules/tags/3.1_before_sink_lists/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java	2006-10-08 14:20:47 UTC (rev 6689)
@@ -23,6 +23,8 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.MemoryVisitor;
 
 public class ReteooMannersTest extends BaseMannersTest {
 
@@ -55,7 +57,7 @@
         //           
         //        });
 
-        final InputStream is = getClass().getResourceAsStream( "/manners64.dat" );
+        final InputStream is = getClass().getResourceAsStream( "/manners128.dat" );
         final List list = getInputObjects( is );
         for ( final Iterator it = list.iterator(); it.hasNext(); ) {
             final Object object = it.next();
@@ -67,6 +69,10 @@
         final long start = System.currentTimeMillis();
         workingMemory.fireAllRules();
         System.err.println( System.currentTimeMillis() - start );
+        
+        MemoryVisitor visitor = new MemoryVisitor( ( InternalWorkingMemory ) workingMemory );
+        visitor.visit( ruleBase );               
+        
 
         //        final ReteooJungViewer viewer = new ReteooJungViewer(ruleBase); 
         //        




More information about the jboss-svn-commits mailing list