[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