[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