[jboss-svn-commits] JBL Code SVN: r16273 - 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 2 01:25:26 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-11-02 01:25:25 -0400 (Fri, 02 Nov 2007)
New Revision: 16273
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/ExecutionTrace.java
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/ScenarioRunnerTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
Log:
JBRULES-1271 Another day of frustration
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/ExecutionTrace.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/ExecutionTrace.java 2007-11-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/ExecutionTrace.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -1,8 +1,10 @@
package org.drools.brms.client.modeldriven.testing;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -12,16 +14,7 @@
*/
public class ExecutionTrace implements Fixture {
- /**
- * the rules to include or exclude
- */
- public String[] rules = new String[0];
- /**
- * true if only the rules in the list should be allowed to fire. Otherwise
- * it is exclusive (ie all rules can fire BUT the ones in the list).
- */
- public boolean inclusive = false;
/**
* This is the simulated date - leaving it as null means it will use
@@ -35,12 +28,12 @@
*/
public long executionTimeResult = -1;
+ /**
+ * This is pretty obvious really. The total firing count of all rules.
+ */
+ public long numberOfRulesFired;
-
public ExecutionTrace() {}
- public ExecutionTrace(String[] ruleList, boolean inclusive) {
- this.rules = ruleList;
- this.inclusive = inclusive;
- }
+
}
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-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -38,8 +38,21 @@
*/
public Date lastRunResult;
+ /**
+ * the rules to include or exclude
+ * @gwt.typeArgs <java.lang.String>
+ */
+ public List rules = new ArrayList();
/**
+ * true if only the rules in the list should be allowed to fire. Otherwise
+ * it is exclusive (ie all rules can fire BUT the ones in the list).
+ */
+ public boolean inclusive = false;
+
+
+
+ /**
* Returns true if this was a totally successful scenario, based on the results contained.
*/
public boolean wasSuccessful() {
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-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -60,6 +60,11 @@
this.workingMemory = wm;
scenario.lastRunResult = new Date();
+ //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 listener = null;
for (Iterator iterator = scenario.globals.iterator(); iterator.hasNext();) {
@@ -95,9 +100,10 @@
} else if (fx instanceof ExecutionTrace) {
ExecutionTrace executionTrace = (ExecutionTrace)fx;
//create the listener to trace rules
- HashSet<String> ruleList = new HashSet<String>();
- ruleList.addAll(Arrays.asList(executionTrace.rules));
- listener = new TestingEventListener(ruleList, wm.getRuleBase(), executionTrace.inclusive);
+
+ if (listener != null) wm.removeEventListener(listener); //remove the old
+ listener = new TestingEventListener();
+
wm.addEventListener(listener);
//set up the time machine
@@ -107,6 +113,8 @@
long time = System.currentTimeMillis();
wm.fireAllRules(scenario.maxRuleFirings);
executionTrace.executionTimeResult = System.currentTimeMillis() - time;
+ executionTrace.numberOfRulesFired = listener.totalFires;
+
} else if (fx instanceof Expectation) {
Expectation assertion = (Expectation) fx;
if (assertion instanceof VerifyFact) {
@@ -142,6 +150,9 @@
return now;
}
});
+ } else {
+ //normal time.
+ wm.setTimeMachine(new TimeMachine());
}
}
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-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -32,17 +32,24 @@
final Map<String, Integer> firingCounts = new HashMap<String, Integer>(100);
- HashSet<String> ruleNames = new HashSet<String>();
+ long totalFires;
+ public TestingEventListener() {
+ }
+
+
+
+
/**
* 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.
*/
- public TestingEventListener(HashSet<String> ruleNames, RuleBase ruleBase, boolean inclusive) {
- if (ruleNames.size() > 0) {
+ 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++) {
@@ -67,8 +74,7 @@
}
}
}
- this.ruleNames = ruleNames;
- }
+ }
@@ -103,6 +109,7 @@
}
private void record(Rule rule, Map<String, Integer> counts) {
+ this.totalFires++;
String name = rule.getName();
if (!counts.containsKey(name)) {
counts.put(name, 1);
@@ -111,10 +118,8 @@
}
}
- boolean hasRule(Rule rule) {
- return this.ruleNames.contains(rule.getName());
- }
+
/**
* @return A map of the number of times a given rule "fired".
* (of course in reality the side effect of its firing may have been nilled out).
@@ -123,6 +128,8 @@
return this.firingCounts;
}
+
+
}
class NilConsequence implements Consequence {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java 2007-11-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -23,6 +23,13 @@
import org.drools.brms.client.modeldriven.testing.VerifyField;
import org.drools.brms.client.modeldriven.testing.VerifyRuleFired;
import org.drools.common.InternalWorkingMemory;
+import org.drools.event.ActivationCancelledEvent;
+import org.drools.event.ActivationCreatedEvent;
+import org.drools.event.AfterActivationFiredEvent;
+import org.drools.event.AgendaEventListener;
+import org.drools.event.AgendaGroupPoppedEvent;
+import org.drools.event.AgendaGroupPushedEvent;
+import org.drools.event.BeforeActivationFiredEvent;
import org.drools.rule.TimeMachine;
import com.thoughtworks.xstream.XStream;
@@ -80,27 +87,8 @@
assertEquals(42, c.getPrice());
}
- public void testDumpXStream() throws Exception {
- XStream x = new XStream();
- Foo f = new Foo();
- f.another = new ArrayList();
- f.another.add("whee");
- f.another.add("waa");
-
- f.something = new String[2];
- f.something[0] = "whee";
- f.something[1] = "waa";
-
- System.err.println(x.toXML(f));
- }
-
- class Foo {
- String[] something;
- List another;
- }
-
public void testVerifyFacts() throws Exception {
ScenarioRunner runner = new ScenarioRunner(new Scenario(), null,
@@ -230,9 +218,12 @@
public void testTestingEventListener() throws Exception {
Scenario sc = new Scenario();
+ sc.rules.add("foo"); sc.rules.add("bar");
ExecutionTrace ext = new ExecutionTrace();
- ext.rules = new String[] { "foo", "bar" };
+
+
+
sc.fixtures.add(ext);
MockWorkingMemory wm = new MockWorkingMemory();
@@ -241,9 +232,9 @@
assertNotNull(wm.agendaEventListener);
assertTrue(wm.agendaEventListener instanceof TestingEventListener);
TestingEventListener lnr = (TestingEventListener) wm.agendaEventListener;
- assertEquals(2, lnr.ruleNames.size());
- assertTrue(lnr.ruleNames.contains("foo"));
- assertTrue(lnr.ruleNames.contains("bar"));
+ assertEquals(2, sc.rules.size());
+ assertTrue(sc.rules.contains("foo"));
+ assertTrue(sc.rules.contains("bar"));
}
public void testWithGlobals() throws Exception {
@@ -318,8 +309,10 @@
ExecutionTrace executionTrace = new ExecutionTrace();
- executionTrace.rules = new String[] {"rule1", "rule2" };
- executionTrace.inclusive = true;
+
+ sc.rules.add("rule1");
+ sc.rules.add("rule2");
+ sc.inclusive = true;
sc.fixtures.add(executionTrace);
Expectation[] assertions = new Expectation[5];
@@ -350,6 +343,8 @@
ScenarioRunner run = new ScenarioRunner(sc, resolver, (InternalWorkingMemory) wm);
+ assertEquals(3, executionTrace.numberOfRulesFired);
+
assertSame(run.scenario, sc);
assertTrue(sc.wasSuccessful());
@@ -470,8 +465,9 @@
sc.globals.add(new FactData("Person", "p", new FieldData[0] , false));
ExecutionTrace executionTrace = new ExecutionTrace();
- executionTrace.rules = new String[] {"rule1", "rule2" };
- executionTrace.inclusive = true;
+ sc.rules.add("rule1");
+ sc.rules.add("rule2");
+ sc.inclusive = true;
sc.fixtures.add(executionTrace);
Expectation[] assertions = new Expectation[5];
@@ -523,4 +519,6 @@
+
+
}
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-02 05:15:01 UTC (rev 16272)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java 2007-11-02 05:25:25 UTC (rev 16273)
@@ -19,8 +19,10 @@
set.add("rule2");
StatefulSession session = getWorkingMemory("test_rules.drl");
- TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), true);
+ TestingEventListener ls = new TestingEventListener();
+ TestingEventListener.stubOutRules(set, session.getRuleBase(), true);
+
session.addEventListener(ls);
session.insert(new Cheese());
@@ -38,6 +40,7 @@
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"));
+ assertEquals(6, ls.totalFires);
}
@@ -49,9 +52,9 @@
StatefulSession session = getWorkingMemory("test_rules.drl");
- TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), false);
+ TestingEventListener ls = new TestingEventListener();
+ TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
-
session.addEventListener(ls);
session.insert(new Cheese());
@@ -73,7 +76,8 @@
StatefulSession session = getWorkingMemory("test_rules.drl");
- TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), false);
+ TestingEventListener ls = new TestingEventListener();
+ TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
session.addEventListener(ls);
More information about the jboss-svn-commits
mailing list