[jboss-svn-commits] JBL Code SVN: r32275 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Mar 29 10:40:21 EDT 2010
Author: tirelli
Date: 2010-03-29 10:40:20 -0400 (Mon, 29 Mar 2010)
New Revision: 32275
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/LeftMemorySizeComparator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/RightMemorySizeComparator.java
Removed:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/SessionReporter.java
Log:
Improving debug reporting framework
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java 2010-03-29 14:13:12 UTC (rev 32274)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java 2010-03-29 14:40:20 UTC (rev 32275)
@@ -106,5 +106,88 @@
//System.out.println(report);
}
+
+ public void testGetSessionInfoWithCustomTemplate() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "org/drools/integrationtests/test_SubNetworks.drl" ),
+ ResourceType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "org/drools/integrationtests/test_AccumulateWithFromChaining.drl" ),
+ ResourceType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "org/drools/integrationtests/test_CollectResultsBetaConstraint.drl" ),
+ ResourceType.DRL );
+ kbuilder.add( ResourceFactory.newClassPathResource( "org/drools/integrationtests/test_QueryMemoryLeak.drl" ),
+ ResourceType.DRL );
+ assertFalse( kbuilder.getErrors().toString(),
+ kbuilder.hasErrors() );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.setGlobal( "results", new ArrayList<Object>() );
+
+ ksession.insert( new Dimension( 100, 50 ) );
+ ksession.insert( new Dimension( 130, 80 ) );
+ ksession.insert( new Dimension( 50, 40 ) );
+ ksession.insert( new Dimension( 50, 40 ) );
+ Cheesery cheesery = new Cheesery();
+ cheesery.addCheese( new Cheese( "brie", 10 ));
+ cheesery.addCheese( new Cheese( "brie", 10 ));
+ cheesery.addCheese( new Cheese( "brie", 10 ));
+ cheesery.addCheese( new Cheese( "brie", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "muzzarella", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ cheesery.addCheese( new Cheese( "stilton", 10 ));
+ ksession.insert( cheesery );
+ ksession.insert( new Person( "Bob", "muzzarella") );
+ ksession.insert( new Person( "Mark", "brie") );
+ ksession.insert( new Cheese( "brie", 10 ) );
+ ksession.insert( new Cheese( "brie", 10 ) );
+ ksession.insert( new Cheese( "brie", 10 ) );
+ ksession.insert( new Cheese( "brie", 10 ) );
+ ksession.insert( new Cheese( "muzzarella", 10 ) );
+ ksession.insert( new Cheese( "muzzarella", 10 ) );
+ ksession.insert( new Cheese( "muzzarella", 10 ) );
+ ksession.insert( new Cheese( "muzzarella", 10 ) );
+ ksession.insert( new Cheese( "Stilton", 10 ) );
+ ksession.insert( new Cheese( "Stilton", 10 ) );
+ ksession.insert( new Cheese( "Stilton", 10 ) );
+ ksession.insert( new Double( 10 ) );
+ ksession.insert( new Double( 11 ) );
+ ksession.insert( new Double( 12 ) );
+ ksession.insert( new Double( 13 ) );
+ ksession.insert( new Double( 14 ) );
+ ksession.insert( new Integer( 15 ) );
+ ksession.insert( new Integer( 16 ) );
+ ksession.insert( new Integer( 17 ) );
+ ksession.insert( new Integer( 18 ) );
+ org.drools.runtime.rule.FactHandle handle = ksession.insert( new Worker( ) );
+
+ ksession.retract( handle );
+
+ SessionInspector inspector = new SessionInspector( ksession );
+
+ StatefulKnowledgeSessionInfo info = inspector.getSessionInfo();
+
+ SessionReporter.addNamedTemplate( "custom", getClass().getResourceAsStream( "customreports.mvel" ) );
+ String report = SessionReporter.generateReport( "custom", info, null );
+
+ assertNotNull( report );
+ //System.out.println(report);
+
+ }
+
+
}
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util (from rev 31128, labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util)
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug (from rev 31128, labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug)
Deleted: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel
===================================================================
--- labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel 2010-01-19 03:09:25 UTC (rev 31128)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel 2010-03-29 14:40:20 UTC (rev 32275)
@@ -1,59 +0,0 @@
- at declare{"custom"}
-********************************************************************************************
- Report for Knowledge Session
-********************************************************************************************
-Next node id : @{session.nodeCount}
-User facts count : @{session.externalFactCount}
-
-============== Deployed Packages ===========
- at foreach{ pkg : session.packages }Package: @{pkg.name} rules: @{pkg.rules.length}
- at end{}
-
-============== Top Ten Left Memory Sizes ======
- at code{
-topTuples = new java.util.TreeSet(new org.drools.util.debug.LeftMemorySizeComparator());
-topTuples.addAll( session.nodeInfos );
-buffer = new StringBuilder();
-it = topTuples.iterator();
-for( int i = 0; i < 10 && it.hasNext() ; i++ ) {
- ni = (org.drools.util.debug.NodeInfo) it.next();
- buffer.append( (i+1) + ". " + ni.node );
- buffer.append( "\n\t\tLeftTuples = ");
- buffer.append( ni.getTupleMemorySize());
- buffer.append( "\n");
-}
-}
-@{buffer.toString()}
-
-============== Top Ten Right Memory Sizes ======
- at code{
-topFacts = new java.util.TreeSet(new org.drools.util.debug.RightMemorySizeComparator());
-topFacts.addAll( session.nodeInfos );
-buffer = new StringBuilder();
-it = topFacts.iterator();
-for( int i = 0; i < 10 && it.hasNext() ; i++ ) {
- ni = (org.drools.util.debug.NodeInfo) it.next();
- buffer.append( (i+1) + ". " + ni.node );
- buffer.append( "\n\t\tFacts = ");
- buffer.append( ni.getFactMemorySize());
- buffer.append( "\n");
-}
-}
-@{buffer.toString()}
-
-============== Nodes Info ==================
- @foreach{node : session.nodeInfos}Node: @{node.node}
- @if{node.memoryEnabled == "true"}Memory: @if{node.factMemorySize!="-1"}facts: @{node.factMemorySize} @end{}@if{node.tupleMemorySize!="-1"}tuples: @{node.tupleMemorySize} @end{}@if{node.createdFactHandles!="-1"}created handles: @{node.createdFactHandles}@end{}@if{node.actionQueueSize!="-1"}action queue: @{node.actionQueueSize}@end{}@else{}Node memory disabled at end{}
- at if{node.sinkList.empty == "false"} Connects to nodes:
- @foreach{child : node.sinkList}@{child}
- @end{}
- at end{} Rules:
- @foreach{ rule : node.rules }rule : @{rule.name}
- @end{}
- @end{}
-
-============== Execution Log ==================
- @foreach{msg : session.log}@{msg}
- @end{}
- at end{}
-
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel (from rev 31128, labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel 2010-03-29 14:40:20 UTC (rev 32275)
@@ -0,0 +1,59 @@
+ at declare{"topten"}
+********************************************************************************************
+ Report for Knowledge Session
+********************************************************************************************
+Next node id : @{session.nodeCount}
+User facts count : @{session.externalFactCount}
+
+============== Deployed Packages ===========
+ at foreach{ pkg : session.packages }Package: @{pkg.name} rules: @{pkg.rules.length}
+ at end{}
+
+============== Top Ten Left Memory Sizes ======
+ at code{
+topTuples = new java.util.TreeSet(new org.drools.core.util.debug.LeftMemorySizeComparator());
+topTuples.addAll( session.nodeInfos );
+buffer = new StringBuilder();
+it = topTuples.iterator();
+for( int i = 0; i < 10 && it.hasNext() ; i++ ) {
+ ni = (org.drools.util.debug.NodeInfo) it.next();
+ buffer.append( (i+1) + ". " + ni.node );
+ buffer.append( "\n\t\tLeftTuples = ");
+ buffer.append( ni.getTupleMemorySize());
+ buffer.append( "\n");
+}
+}
+@{buffer.toString()}
+
+============== Top Ten Right Memory Sizes ======
+ at code{
+topFacts = new java.util.TreeSet(new org.drools.core.util.debug.RightMemorySizeComparator());
+topFacts.addAll( session.nodeInfos );
+buffer = new StringBuilder();
+it = topFacts.iterator();
+for( int i = 0; i < 10 && it.hasNext() ; i++ ) {
+ ni = (org.drools.util.debug.NodeInfo) it.next();
+ buffer.append( (i+1) + ". " + ni.node );
+ buffer.append( "\n\t\tFacts = ");
+ buffer.append( ni.getFactMemorySize());
+ buffer.append( "\n");
+}
+}
+@{buffer.toString()}
+
+============== Nodes Info ==================
+ @foreach{node : session.nodeInfos}Node: @{node.node}
+ @if{node.memoryEnabled == "true"}Memory: @if{node.factMemorySize!="-1"}facts: @{node.factMemorySize} @end{}@if{node.tupleMemorySize!="-1"}tuples: @{node.tupleMemorySize} @end{}@if{node.createdFactHandles!="-1"}created handles: @{node.createdFactHandles}@end{}@if{node.actionQueueSize!="-1"}action queue: @{node.actionQueueSize}@end{}@else{}Node memory disabled at end{}
+ at if{node.sinkList.empty == "false"} Connects to nodes:
+ @foreach{child : node.sinkList}@{child}
+ @end{}
+ at end{} Rules:
+ @foreach{ rule : node.rules }rule : @{rule.name}
+ @end{}
+ @end{}
+
+============== Execution Log ==================
+ @foreach{msg : session.log}@{msg}
+ @end{}
+ at end{}
+
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/LeftMemorySizeComparator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/LeftMemorySizeComparator.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/LeftMemorySizeComparator.java 2010-03-29 14:40:20 UTC (rev 32275)
@@ -0,0 +1,12 @@
+package org.drools.core.util.debug;
+
+import java.util.Comparator;
+
+public class LeftMemorySizeComparator implements Comparator<NodeInfo>{
+
+ public int compare(NodeInfo o1,
+ NodeInfo o2) {
+ return (int) ( o2.getTupleMemorySize() - o1.getTupleMemorySize()) ;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/LeftMemorySizeComparator.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/RightMemorySizeComparator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/RightMemorySizeComparator.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/RightMemorySizeComparator.java 2010-03-29 14:40:20 UTC (rev 32275)
@@ -0,0 +1,12 @@
+package org.drools.core.util.debug;
+
+import java.util.Comparator;
+
+public class RightMemorySizeComparator implements Comparator<NodeInfo>{
+
+ public int compare(NodeInfo o1,
+ NodeInfo o2) {
+ return (int) ( o2.getFactMemorySize() - o1.getFactMemorySize()) ;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/RightMemorySizeComparator.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/SessionReporter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/SessionReporter.java 2010-03-29 14:13:12 UTC (rev 32274)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/core/util/debug/SessionReporter.java 2010-03-29 14:40:20 UTC (rev 32275)
@@ -1,5 +1,6 @@
package org.drools.core.util.debug;
+import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
@@ -48,4 +49,17 @@
REPORT_REGISTRY );
}
+ public static void addNamedTemplate(String name,
+ InputStream template) {
+ REPORT_REGISTRY.addNamedTemplate( name,
+ TemplateCompiler.compileTemplate( template,
+ null ) );
+ /*
+ * Process these templates
+ */
+ TemplateRuntime.execute( REPORT_REGISTRY.getNamedTemplate( name ),
+ null,
+ REPORT_REGISTRY );
+ }
+
}
More information about the jboss-svn-commits
mailing list