[jboss-svn-commits] JBL Code SVN: r31127 - in labs/jbossrules/branches/5.0.x/drools-compiler/src/test: resources/org/drools and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jan 18 22:07:59 EST 2010


Author: tirelli
Date: 2010-01-18 22:07:58 -0500 (Mon, 18 Jan 2010)
New Revision: 31127

Added:
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/LeftMemorySizeComparator.java
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/RightMemorySizeComparator.java
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel
Modified:
   labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java
Log:
Improving the reporting framework

Added: labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/LeftMemorySizeComparator.java
===================================================================
--- labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/LeftMemorySizeComparator.java	                        (rev 0)
+++ labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/LeftMemorySizeComparator.java	2010-01-19 03:07:58 UTC (rev 31127)
@@ -0,0 +1,12 @@
+package org.drools.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/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/LeftMemorySizeComparator.java
___________________________________________________________________
Name: svn:executable
   + *

Added: labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/RightMemorySizeComparator.java
===================================================================
--- labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/RightMemorySizeComparator.java	                        (rev 0)
+++ labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/RightMemorySizeComparator.java	2010-01-19 03:07:58 UTC (rev 31127)
@@ -0,0 +1,12 @@
+package org.drools.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/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/RightMemorySizeComparator.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java
===================================================================
--- labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java	2010-01-18 22:58:55 UTC (rev 31126)
+++ labs/jbossrules/branches/5.0.x/drools-compiler/src/test/java/org/drools/util/debug/SessionInspectorTest.java	2010-01-19 03:07:58 UTC (rev 31127)
@@ -103,5 +103,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);
+        
+    }
+    
+
 }

Added: labs/jbossrules/branches/5.0.x/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	                        (rev 0)
+++ labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel	2010-01-19 03:07:58 UTC (rev 31127)
@@ -0,0 +1,59 @@
+ 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


Property changes on: labs/jbossrules/branches/5.0.x/drools-compiler/src/test/resources/org/drools/util/debug/customreports.mvel
___________________________________________________________________
Name: svn:executable
   + *



More information about the jboss-svn-commits mailing list