[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