[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