[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