[jboss-svn-commits] JBL Code SVN: r7831 - in labs/jbossrules/trunk/drools-analytics/src: . main/java/org/drools/analytics main/resources test test/java test/java/org test/java/org/drools test/java/org/drools/analytics
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Nov 25 17:29:24 EST 2006
Author: michael.neale at jboss.com
Date: 2006-11-25 17:29:17 -0500 (Sat, 25 Nov 2006)
New Revision: 7831
Added:
labs/jbossrules/trunk/drools-analytics/src/test/
labs/jbossrules/trunk/drools-analytics/src/test/java/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/
labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java
Modified:
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
Log:
added tests and some more analysis
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java 2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java 2006-11-25 22:29:17 UTC (rev 7831)
@@ -30,6 +30,10 @@
errors.add( new ReportItem(k.getRule().getName(), message) );
}
+ public List getWarnings() {
+ return warnings;
+ }
+
static class ReportItem implements Serializable {
private static final long serialVersionUID = 3674119457586457238L;
public String rule;
@@ -44,5 +48,9 @@
return rule + ": " + message;
}
}
+
+ public List getErrors() {
+ return errors;
+ }
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java 2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java 2006-11-25 22:29:17 UTC (rev 7831)
@@ -6,4 +6,25 @@
public String objectType;
public Constraint[] constraints;
+
+
+ public Constraint[] getConstraints() {
+ return constraints;
+ }
+ public void setConstraints(Constraint[] constraints) {
+ this.constraints = constraints;
+ }
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getObjectType() {
+ return objectType;
+ }
+ public void setObjectType(String objectType) {
+ this.objectType = objectType;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java 2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java 2006-11-25 22:29:17 UTC (rev 7831)
@@ -6,4 +6,31 @@
public String name;
public Pattern[] patterns;
public String rhs;
+
+ private int salienceValue;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Pattern[] getPatterns() {
+ return patterns;
+ }
+ public void setPatterns(Pattern[] patterns) {
+ this.patterns = patterns;
+ }
+ public String getRhs() {
+ return rhs;
+ }
+ public void setRhs(String rhs) {
+ this.rhs = rhs;
+ }
+ public int getSalienceValue() {
+ return salienceValue;
+ }
+ public void setSalienceValue(int salience) {
+ this.salienceValue = salience;
+ }
}
Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl 2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl 2006-11-25 22:29:17 UTC (rev 7831)
@@ -50,7 +50,6 @@
rule "same field with conflicting constraints on the one Rule - impossible to satisfy"
when
- constraint: Constraint( )
then
end
@@ -92,9 +91,9 @@
rule "No action - possibly commented out"
when
-
+ r: Rule(rhs == "")
then
-
+ result.addWarning(drools, "This rule has no action: " + r.getName());
end
rule "Less restrictive constraint first"
@@ -104,3 +103,20 @@
then
end
+
+rule "Excessive use of salience"
+ when
+ not Rule(salienceValue == 0)
+ then
+ result.addWarning(drools, "Salience is being used heavily, if possible, consider using agenda groups to break up the rule package.");
+end
+
+
+
+
+rule "Only a few values of salience - consider using agenda-groups"
+ when
+ //when agenda groups would be better for controlling the flow in phases then salience.
+ then
+
+end
Added: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java 2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java 2006-11-25 22:29:17 UTC (rev 7831)
@@ -0,0 +1,147 @@
+package org.drools.analytics;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.CheckedDroolsException;
+import org.drools.RuleBase;
+import org.drools.WorkingMemory;
+import org.drools.compiler.RuleBaseLoader;
+
+import junit.framework.TestCase;
+
+public class BasicTest extends TestCase {
+
+ public void testLessThan() throws Exception {
+ Rule rule = new Rule();
+
+ Constraint con = new Constraint();
+ con.setField( "foo" );
+ con.setObjectType( "Bar" );
+ con.setOperator( "<" );
+ con.setRuleName( "xxx" );
+
+ WorkingMemory wm = getAnalysisEngine();
+
+ AnalysisResult result = new AnalysisResult();
+ wm.setGlobal( "result", result );
+ wm.assertObject( con );
+ wm.assertObject( rule );
+
+ wm.fireAllRules();
+
+ assertEquals(1, result.getWarnings().size());
+ assertEquals(0, result.getErrors().size());
+ }
+
+ public void testLessThanMultiple() throws Exception {
+ final Constraint con = new Constraint();
+ con.setField( "foo" );
+ con.setObjectType( "Bar" );
+ con.setOperator( "<" );
+ con.setRuleName( "xxx" );
+
+ Constraint con2 = new Constraint();
+ con2.setField( "foo2" );
+ con2.setObjectType( "Bar" );
+ con2.setOperator( "<" );
+ con2.setRuleName( "zar" );
+
+
+ WorkingMemory wm = getAnalysisEngine();
+
+ AnalysisResult result = new AnalysisResult();
+ wm.setGlobal( "result", result );
+ wm.assertObject( con );
+ wm.assertObject( con2 );
+ wm.assertObject( new Rule() );
+ wm.fireAllRules();
+
+ assertEquals(2, result.getWarnings().size());
+ assertEquals(0, result.getErrors().size());
+ }
+
+ public void testLessThanMultiple2() throws Exception {
+ final Constraint con = new Constraint();
+ con.setField( "foo" );
+ con.setObjectType( "Bar" );
+ con.setOperator( "<" );
+ con.setRuleName( "xxx" );
+
+ Constraint con2 = new Constraint();
+ con2.setField( "foo2" );
+ con2.setObjectType( "Bar" );
+ con2.setOperator( "<" );
+ con2.setRuleName( "xxx" );
+
+
+ WorkingMemory wm = getAnalysisEngine();
+
+ AnalysisResult result = new AnalysisResult();
+ wm.setGlobal( "result", result );
+ wm.assertObject( con );
+ wm.assertObject( con2 );
+ wm.assertObject( new Rule() );
+
+ wm.fireAllRules();
+
+ assertEquals(2, result.getWarnings().size());
+ assertEquals(0, result.getErrors().size());
+ }
+
+ private WorkingMemory getAnalysisEngine() throws CheckedDroolsException,
+ IOException {
+ Reader r = new InputStreamReader(this.getClass().getResourceAsStream( "/StaticQualityAnalysis.drl" ));
+ RuleBase rb = RuleBaseLoader.getInstance().loadFromReader( r );
+ WorkingMemory wm = rb.newWorkingMemory();
+ return wm;
+ }
+
+ public void testLessThanOK() throws Exception {
+ Constraint con = new Constraint();
+ con.setField( "foo" );
+ con.setObjectType( "Bar" );
+ con.setOperator( "<" );
+ con.setRuleName( "xxx" );
+
+ Constraint con2 = new Constraint();
+ con2.setField( "foo" );
+ con2.setObjectType( "Bar" );
+ con2.setOperator( ">=" );
+ con2.setRuleName( "xxx2" );
+
+
+ WorkingMemory wm = getAnalysisEngine();
+
+ AnalysisResult result = new AnalysisResult();
+ wm.setGlobal( "result", result );
+
+ wm.assertObject( con );
+ wm.assertObject( con2 );
+ wm.assertObject( new Rule() );
+
+ wm.fireAllRules();
+
+ assertEquals(0, result.getWarnings().size());
+ assertEquals(0, result.getErrors().size());
+ }
+
+ public void testNoRHS() throws Exception {
+ WorkingMemory wm = getAnalysisEngine();
+
+ Rule r = new Rule();
+ r.setRhs( "" );
+
+ AnalysisResult result = new AnalysisResult();
+
+ wm.setGlobal( "result", result );
+
+ wm.assertObject( r );
+
+ wm.fireAllRules();
+
+ assertEquals(1, result.getWarnings().size());
+ }
+
+}
More information about the jboss-svn-commits
mailing list