[jboss-svn-commits] JBL Code SVN: r16739 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/integrationtests and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Nov 21 23:03:42 EST 2007


Author: michael.neale at jboss.com
Date: 2007-11-21 23:03:42 -0500 (Wed, 21 Nov 2007)
New Revision: 16739

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/VerifyField.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java
Log:
JBRULES-1271 scenario results (and more realistic large rule base test)

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-21 21:47:25 UTC (rev 16738)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java	2007-11-22 04:03:42 UTC (rev 16739)
@@ -183,6 +183,8 @@
 		}
 		return false;
 	}
+
+
 }
 
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java	2007-11-21 21:47:25 UTC (rev 16738)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java	2007-11-22 04:03:42 UTC (rev 16739)
@@ -11,6 +11,11 @@
 	public Boolean successResult;
 
 	/**
+	 * This is a natural language explanation of the outcome for reporting purposes.
+	 */
+	public String explanation;
+
+	/**
 	 * Operator is generally "==" or "!="  - an MVEL operator.
 	 */
 	public String operator = "==";

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java	2007-11-21 21:47:25 UTC (rev 16738)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java	2007-11-22 04:03:42 UTC (rev 16739)
@@ -6,6 +6,12 @@
 	public Integer expectedCount;
 
 	/**
+	 * This is a natural language explanation of this verification.
+	 * For reporting purposes.
+	 */
+	public String explanation;
+
+	/**
 	 * If this is true, then we expect it to fire at least once.
 	 * False means it should not fire at all (this is an alternative
 	 * to specifying an expected count).

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java	2007-11-21 21:47:25 UTC (rev 16738)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LargeRuleBase.java	2007-11-22 04:03:42 UTC (rev 16739)
@@ -19,13 +19,22 @@
 import junit.framework.Assert;
 
 /**
- * This generates a large number of rules (complex ones) and then times compiling, serializing etc.
+ * This generates a large number of rules (complex ones) and then times
+ * compiling, serializing etc.
  */
 public class LargeRuleBase {
 
+	private static final int RULE_COUNT = 20000;
+
 	public static void main(String[] args) throws Exception {
-		bigBlobCompile();
-		//smallBlobCompile();
+		System.err.println(Runtime.getRuntime().freeMemory());
+
+		// bigBlobCompile();
+		realisticSmallBlobCompile();
+		System.gc();
+		Thread.sleep(5000);
+		System.err.println(Runtime.getRuntime().freeMemory());
+
 	}
 
 	private static void bigBlobCompile() throws DroolsParserException,
@@ -33,7 +42,7 @@
 		StringBuffer buf = new StringBuffer();
 		buf.append(getHeader());
 
-		for (int i = 0; i < 5000; i++) {
+		for (int i = 0; i < RULE_COUNT; i++) {
 			String name = "x" + i;
 			int status = i;
 
@@ -63,49 +72,84 @@
 
 		rb.addPackage(p);
 
-
-
 		System.err.println("Time taken rete building: "
 				+ (System.currentTimeMillis() - time));
 
 		File f = new File("foo.rulebase");
-		if (f.exists()) f.delete();
+		if (f.exists())
+			f.delete();
 
-
 		time = System.currentTimeMillis();
 		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
 		out.writeObject(rb);
-		out.flush(); out.close();
+		out.flush();
+		out.close();
 		System.err.println("Time taken serializing rulebase: "
 				+ (System.currentTimeMillis() - time));
 
 		time = System.currentTimeMillis();
-		ObjectInputStream in = new ObjectInputStream(new FileInputStream( f ) );
+		ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
 		RuleBase rb_ = (RuleBase) in.readObject();
 		System.err.println("Time taken de-serializing rulebase: "
 				+ (System.currentTimeMillis() - time));
 
-
-
 	}
 
 	private static void smallBlobCompile() throws DroolsParserException,
 			IOException, Exception {
 
-
 		/* love you */long time = System.currentTimeMillis();
 		PackageBuilder b = new PackageBuilder();
 		b.addPackageFromDrl(new StringReader(getHeader()));
-		for (int i = 0; i < 5000; i++) {
+		for (int i = 0; i < RULE_COUNT; i++) {
 			String name = "x" + i;
 			int status = i;
 
-			String r = getTemplate1(name, status);
+			String r = getTemplate2(name, i, status);
 			b.addPackageFromDrl(new StringReader(r));
+			if (i % 1000 == 0)
+				System.err.println("Rule #" + i);
+
 		}
 
+		Assert.assertFalse(b.getErrors().toString(), b.hasErrors());
 
+		System.err.println("Time taken for compiling: "
+				+ (System.currentTimeMillis() - time));
+		time = System.currentTimeMillis();
 
+		Package p = b.getPackage();
+		RuleBase rb = RuleBaseFactory.newRuleBase();
+
+		rb.addPackage(p);
+
+		System.err.println("Time taken rete building: "
+				+ (System.currentTimeMillis() - time));
+	}
+
+	private static void realisticSmallBlobCompile() throws DroolsParserException,
+			IOException, Exception {
+
+		/* love you */long time = System.currentTimeMillis();
+		PackageBuilder b = new PackageBuilder();
+		b.addPackageFromDrl(new StringReader(getHeader()));
+
+		int count = 0;
+
+		for (int i = 0; i < 2000; i++) {
+
+			String name = "x" + i;
+			for (int j = 0; j < 10; j++) {
+				count++;
+				int status = j;
+				String r = getTemplate2(name, count, status);
+				b.addPackageFromDrl(new StringReader(r));
+				if (count % 1000 == 0)
+					System.err.println("Rule #" + count);
+			}
+
+		}
+
 		Assert.assertFalse(b.getErrors().toString(), b.hasErrors());
 
 		System.err.println("Time taken for compiling: "
@@ -150,4 +194,21 @@
 				+ "		$person.setStatus(\"match Person ok\"); \n " + " end \n";
 	}
 
+	private static String getTemplate2(String name, int num,  int status) {
+		return "rule 'match Person "
+				+ num
+				+ "' \n"
+				+ " dialect 'mvel' \n"
+				+ "	when \n "
+				+ " 		$person : Person(name=='"
+				+ name
+				+ "', $age1 : age ) \n "
+				+ "	    cheesery : Cheesery( cheeses contains $person, status == "
+				+ status + " ) \n "
+				+ " Person(age < " + num + ") \n"
+				+ " then \n "
+				+ "		list.add( $person ); \n "
+				+ "		$person.setStatus(\"match Person ok\"); \n " + " end \n";
+	}
+
 }




More information about the jboss-svn-commits mailing list