[jboss-svn-commits] JBL Code SVN: r16934 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/testframework and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 30 05:56:48 EST 2007
Author: michael.neale at jboss.com
Date: 2007-11-30 05:56:48 -0500 (Fri, 30 Nov 2007)
New Revision: 16934
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
Log:
JBRULES-1271 changed to use a agenda filter instead of the NilConsequence (which would not scale)
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java 2007-11-30 10:26:26 UTC (rev 16933)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java 2007-11-30 10:56:48 UTC (rev 16934)
@@ -8,13 +8,15 @@
import java.util.List;
import java.util.Map;
+import org.drools.brms.client.modeldriven.brl.PortableObject;
+
/**
* This represents a test scenario.
* It also encapsulates the result of a scenario run.
*
* @author Michael Neale
*/
-public class Scenario implements Serializable {
+public class Scenario implements PortableObject {
/**
* The maximum number of rules to fire so we don't recurse for ever.
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java 2007-11-30 10:26:26 UTC (rev 16933)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java 2007-11-30 10:56:48 UTC (rev 16934)
@@ -64,7 +64,7 @@
//stub out any rules we don't want to have the consequences firing of.
HashSet<String> ruleList = new HashSet<String>();
ruleList.addAll(scenario.rules);
- TestingEventListener.stubOutRules(ruleList, wm.getRuleBase(), scenario.inclusive);
+ //TestingEventListener.stubOutRules(ruleList, wm.getRuleBase(), scenario.inclusive);
TestingEventListener listener = null;
@@ -112,7 +112,7 @@
//love you
long time = System.currentTimeMillis();
- wm.fireAllRules(scenario.maxRuleFirings);
+ wm.fireAllRules(listener.getAgendaFilter(ruleList, scenario.inclusive),scenario.maxRuleFirings);
executionTrace.executionTimeResult = System.currentTimeMillis() - time;
executionTrace.numberOfRulesFired = listener.totalFires;
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java 2007-11-30 10:26:26 UTC (rev 16933)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java 2007-11-30 10:56:48 UTC (rev 16934)
@@ -16,6 +16,8 @@
import org.drools.event.BeforeActivationFiredEvent;
import org.drools.rule.Package;
import org.drools.rule.Rule;
+import org.drools.spi.Activation;
+import org.drools.spi.AgendaFilter;
import org.drools.spi.Consequence;
import org.drools.spi.KnowledgeHelper;
@@ -38,48 +40,71 @@
public TestingEventListener() {
}
+ public AgendaFilter getAgendaFilter(final HashSet<String> ruleNames, final boolean inclusive) {
+ return new AgendaFilter() {
+ public boolean accept(Activation activation) {
+ if (ruleNames.size() ==0) return true;
+ String ruleName = activation.getRule().getName();
+ if (inclusive) {
+ if (ruleNames.contains(ruleName)) {
+ return true;
+ } else {
+ record(activation.getRule(), firingCounts);
+ return false;
+ }
+ } else {
+ if (!ruleName.contains(ruleName)) {
+ return true;
+ } else {
+ record(activation.getRule(), firingCounts);
+ return false;
+ }
+ }
+ }
+ };
+ }
- /**
- * Exclusive means DO NOT fire the rules mentioned.
- * For those rules, they will still be counted, just not allowed to activate.
- * Inclusive means only the rules on the given set are allowed to fire.
- * The other rules will have their activation counted but not be allowed to fire.
- */
- static void stubOutRules(HashSet<String> ruleNames, RuleBase ruleBase,
- boolean inclusive) {
- if (ruleNames.size() > 0) {
- if (inclusive) {
- Package[] pkgs = ruleBase.getPackages();
- for (int i = 0; i < pkgs.length; i++) {
- Rule[] rules = pkgs[i].getRules();
- for (int j = 0; j < rules.length; j++) {
- Rule rule = rules[j];
- if (!ruleNames.contains(rule.getName())) {
- rule.setConsequence(new NilConsequence());
- }
- }
- }
- } else {
- Package[] pkgs = ruleBase.getPackages();
- for (int i = 0; i < pkgs.length; i++) {
- Package pkg = pkgs[i];
- for (Iterator iter = ruleNames.iterator(); iter.hasNext();) {
- String name = (String) iter.next();
- Rule rule = pkg.getRule(name);
- rule.setConsequence(new NilConsequence());
- }
+// /**
+// * Exclusive means DO NOT fire the rules mentioned.
+// * For those rules, they will still be counted, just not allowed to activate.
+// * Inclusive means only the rules on the given set are allowed to fire.
+// * The other rules will have their activation counted but not be allowed to fire.
+// */
+// static void stubOutRules(HashSet<String> ruleNames, RuleBase ruleBase,
+// boolean inclusive) {
+// if (ruleNames.size() > 0) {
+// if (inclusive) {
+// Package[] pkgs = ruleBase.getPackages();
+// for (int i = 0; i < pkgs.length; i++) {
+// Rule[] rules = pkgs[i].getRules();
+// for (int j = 0; j < rules.length; j++) {
+// Rule rule = rules[j];
+// if (!ruleNames.contains(rule.getName())) {
+// rule.setConsequence(new NilConsequence());
+// }
+// }
+// }
+// } else {
+// Package[] pkgs = ruleBase.getPackages();
+// for (int i = 0; i < pkgs.length; i++) {
+// Package pkg = pkgs[i];
+// for (Iterator iter = ruleNames.iterator(); iter.hasNext();) {
+// String name = (String) iter.next();
+// Rule rule = pkg.getRule(name);
+// rule.setConsequence(new NilConsequence());
+// }
+//
+// }
+// }
+// }
+// }
- }
- }
- }
- }
-
public void activationCancelled(ActivationCancelledEvent event,
WorkingMemory workingMemory) {
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java 2007-11-30 10:26:26 UTC (rev 16933)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java 2007-11-30 10:56:48 UTC (rev 16934)
@@ -10,6 +10,8 @@
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;
+import org.drools.spi.Activation;
+import org.drools.spi.AgendaFilter;
public class TestingEventListenerTest extends RuleUnit {
@@ -21,12 +23,12 @@
StatefulSession session = getWorkingMemory("test_rules.drl");
TestingEventListener ls = new TestingEventListener();
- TestingEventListener.stubOutRules(set, session.getRuleBase(), true);
+ //TestingEventListener.stubOutRules(set, session.getRuleBase(), true);
session.addEventListener(ls);
session.insert(new Cheese());
- session.fireAllRules();
+ session.fireAllRules(ls.getAgendaFilter(set, true));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
@@ -36,7 +38,7 @@
assertFalse(ls.firingCounts.containsKey("rule4"));
session.insert(new Cheese());
- session.fireAllRules();
+ session.fireAllRules(ls.getAgendaFilter(set, true));
assertEquals(new Integer(2), (Integer) ls.firingCounts.get("rule1"));
assertEquals(new Integer(2), (Integer) ls.firingCounts.get("rule2"));
assertEquals(new Integer(2), (Integer) ls.firingCounts.get("rule3"));
@@ -53,12 +55,12 @@
StatefulSession session = getWorkingMemory("test_rules.drl");
TestingEventListener ls = new TestingEventListener();
- TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
+ //TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
session.addEventListener(ls);
session.insert(new Cheese());
- session.fireAllRules();
+ session.fireAllRules(ls.getAgendaFilter(set, false));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
@@ -77,7 +79,7 @@
StatefulSession session = getWorkingMemory("test_rules.drl");
TestingEventListener ls = new TestingEventListener();
- TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
+ //TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
session.addEventListener(ls);
@@ -85,7 +87,7 @@
List<String> list = new ArrayList<String>();
session.setGlobal("list", list);
- session.fireAllRules();
+ session.fireAllRules(ls.getAgendaFilter(set, false));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
More information about the jboss-svn-commits
mailing list