[jboss-svn-commits] JBL Code SVN: r22693 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/server and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Sep 11 19:15:58 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-09-11 19:15:58 -0400 (Thu, 11 Sep 2008)
New Revision: 22693
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/CategoryManager.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
labs/jbossrules/trunk/drools-guvnor/src/main/resources/selectors.properties
labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
Log:
small fixes for running scenarios in bulk
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/CategoryManager.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/CategoryManager.java 2008-09-11 21:20:51 UTC (rev 22692)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/admin/CategoryManager.java 2008-09-11 23:15:58 UTC (rev 22693)
@@ -75,14 +75,7 @@
HorizontalPanel actions = new HorizontalPanel();
- Button refresh = new Button( "Refresh view" );
- refresh.setTitle( "Refresh categories" );
- refresh.addClickListener( new ClickListener() {
- public void onClick(Widget w) {
- explorer.refresh();
- }
- } );
- actions.add(refresh);
+
form.addAttribute("", actions);
Button newCat = new Button( "New category" );
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2008-09-11 21:20:51 UTC (rev 22692)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2008-09-11 23:15:58 UTC (rev 22693)
@@ -1573,6 +1573,10 @@
RoleTypes.PACKAGE_DEVELOPER);
}
+ return runScenario(packageName, scenario, null);
+ }
+
+ private ScenarioRunResult runScenario(String packageName, Scenario scenario, RuleCoverageListener coverage) throws SerializableException {
PackageItem item = this.repository.loadPackage(packageName);
// nasty classloader needed to make sure we use the same tree the whole
@@ -1585,9 +1589,6 @@
if (item.isBinaryUpToDate()
&& this.ruleBaseCache.containsKey(item.getUUID())) {
rb = this.ruleBaseCache.get(item.getUUID());
- AbstractRuleBase arb = (AbstractRuleBase) rb;
- // load up the existing class loader from before
-
} else {
// load up the classloader we are going to use
List<JarInputStream> jars = BRMSPackageBuilder.getJars(item);
@@ -1611,7 +1612,7 @@
ClassLoader cl = ((InternalRuleBase)this.ruleBaseCache.get(item.getUUID())).getRootClassLoader();
Thread.currentThread().setContextClassLoader(cl);
- return runScenario(scenario, item, cl, rb);
+ return runScenario(scenario, item, cl, rb, coverage);
} finally {
Thread.currentThread().setContextClassLoader(originalCL);
@@ -1640,7 +1641,7 @@
}
private ScenarioRunResult runScenario(Scenario scenario, PackageItem item,
- ClassLoader cl, RuleBase rb) throws DetailedSerializableException {
+ ClassLoader cl, RuleBase rb, RuleCoverageListener coverage) throws DetailedSerializableException {
// RuleBase rb = ruleBaseCache.get(item.getUUID());
Package bin = rb.getPackages()[0];
@@ -1661,12 +1662,7 @@
sessionConfiguration.setKeepReference(false);
InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb
.newStatefulSession(sessionConfiguration);
- return runScenario(scenario, res, workingMemory);
- }
-
- private ScenarioRunResult runScenario(Scenario scenario,
- ClassTypeResolver res, InternalWorkingMemory workingMemory)
- throws DetailedSerializableException {
+ if (coverage != null) workingMemory.addEventListener(coverage);
try {
new ScenarioRunner(scenario, res, workingMemory);
return new ScenarioRunResult(null, scenario);
@@ -1674,9 +1670,12 @@
log.error(e);
throw new DetailedSerializableException(
"Unable to load a required class.", e.getMessage());
+ } finally {
+
}
}
+
@WebRemote
@Restrict("#{identity.loggedIn}")
public BulkTestRunResult runScenariosInPackage(String packageUUID)
@@ -1721,34 +1720,19 @@
}
}
- AssetItemIterator it = item
- .listAssetsByFormat(new String[] { AssetFormats.TEST_SCENARIO });
+ AssetItemIterator it = item.listAssetsByFormat(new String[] { AssetFormats.TEST_SCENARIO });
List<ScenarioResultSummary> resultSummaries = new ArrayList<ScenarioResultSummary>();
RuleBase rb = ruleBaseCache.get(item.getUUID());
Package bin = rb.getPackages()[0];
- ClassTypeResolver res = new ClassTypeResolver(bin.getImports()
- .keySet(), cl);
- SessionConfiguration sessionConfiguration = new SessionConfiguration();
- sessionConfiguration.setKeepReference(false);
- InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb
- .newStatefulSession(sessionConfiguration);
-
RuleCoverageListener coverage = new RuleCoverageListener(
expectedRules(bin));
- workingMemory.addEventListener(coverage);
while (it.hasNext()) {
RuleAsset asset = loadAsset((AssetItem) it.next());
Scenario sc = (Scenario) asset.content;
- sc = runScenario(sc, res, workingMemory).scenario;
+ runScenario(item.getName(), sc, coverage);//runScenario(sc, res, workingMemory).scenario;
- // clean out WM
- Iterator<FactHandle> fhs = workingMemory.iterateFactHandles();
- while (fhs.hasNext()) {
- workingMemory.retract(fhs.next());
- }
-
int[] totals = sc.countFailuresTotal();
resultSummaries.add(new ScenarioResultSummary(totals[0],
totals[1], asset.metaData.name,
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/resources/selectors.properties
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/resources/selectors.properties 2008-09-11 21:20:51 UTC (rev 22692)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/resources/selectors.properties 2008-09-11 23:15:58 UTC (rev 22693)
@@ -1,7 +1,7 @@
#############################################################################################
# SELECTOR CONFIGURATION FILE
#
-# Selectors are used when building packages to filter assets based on arbitary criteria.
+# Selectors are used when building packages to filter assets based on arbitrary criteria.
# Selectors can either be a class that implements the AssetSelector interface, or a path to a drl file with
# rules as to what is to be included (the rule file must be on the class path as indicated by that path).
#
Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2008-09-11 21:20:51 UTC (rev 22692)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java 2008-09-11 23:15:58 UTC (rev 22693)
@@ -1916,7 +1916,11 @@
scenario2.updateContent(ScenarioXMLPersistence.getInstance().marshal(sc));
scenario2.checkin("");
+
+ //love you
+ long time = System.currentTimeMillis();
BulkTestRunResult result = impl.runScenariosInPackage(pkg.getUUID());
+ System.err.println("Time taken for runScenariosInPackage " + (System.currentTimeMillis() - time));
assertNull(result.errors);
assertEquals(50, result.percentCovered);
@@ -1938,6 +1942,92 @@
assertEquals(scenario2.getName(), s2.scenarioName);
}
+ public void testRunPackageScenariosWithDeclaredFacts() throws Exception {
+ ServiceImplementation impl = getService();
+ RulesRepository repo = impl.repository;
+
+ PackageItem pkg = repo.createPackage("testScenarioRunBulkWithDeclaredFacts", "");
+ ServiceImplementation.updateDroolsHeader("declare Wang \n age: Integer \n name: String \n end", pkg);
+ AssetItem rule1 = pkg.addAsset("rule_1", "");
+ rule1.updateFormat(AssetFormats.DRL);
+ rule1
+ .updateContent("rule 'rule1' \n when \np : Wang() \n then \np.setAge(42); \n end");
+ rule1.checkin("");
+
+ //this rule will never fire
+ AssetItem rule2 = pkg.addAsset("rule_2", "");
+ rule2.updateFormat(AssetFormats.DRL);
+ rule2.updateContent("rule 'rule2' \n when \np : Wang(age == 1000) \n then \np.setAge(46); \n end");
+ rule2.checkin("");
+ repo.save();
+
+
+
+ //first, the green scenario
+ Scenario sc = new Scenario();
+ FactData person = new FactData();
+ person.name = "p";
+ person.type = "Wang";
+ person.fieldData.add(new FieldData("age", "40"));
+ person.fieldData.add(new FieldData("name", "michael"));
+
+ sc.fixtures.add(person);
+ sc.fixtures.add(new ExecutionTrace());
+ VerifyRuleFired vr = new VerifyRuleFired("rule1", 1, null);
+ sc.fixtures.add(vr);
+
+ VerifyFact vf = new VerifyFact();
+ vf.name = "p";
+ vf.fieldValues.add(new VerifyField("name", "michael", "=="));
+ vf.fieldValues.add(new VerifyField("age", "42", "=="));
+ sc.fixtures.add(vf);
+
+ AssetItem scenario1 = pkg.addAsset("scen1", "");
+ scenario1.updateFormat(AssetFormats.TEST_SCENARIO);
+ scenario1.updateContent(ScenarioXMLPersistence.getInstance().marshal(sc));
+ scenario1.checkin("");
+
+ //now the bad scenario
+ sc = new Scenario();
+ person = new FactData();
+ person.name = "p";
+ person.type = "Wang";
+ person.fieldData.add(new FieldData("age", "40"));
+ person.fieldData.add(new FieldData("name", "michael"));
+
+ sc.fixtures.add(person);
+ sc.fixtures.add(new ExecutionTrace());
+ vr = new VerifyRuleFired("rule2", 1, null);
+ sc.fixtures.add(vr);
+
+
+ AssetItem scenario2 = pkg.addAsset("scen2", "");
+ scenario2.updateFormat(AssetFormats.TEST_SCENARIO);
+ scenario2.updateContent(ScenarioXMLPersistence.getInstance().marshal(sc));
+ scenario2.checkin("");
+
+ BulkTestRunResult result = impl.runScenariosInPackage(pkg.getUUID());
+ assertNull(result.errors);
+
+ assertEquals(50, result.percentCovered);
+ assertEquals(1, result.rulesNotCovered.length);
+ assertEquals("rule2", result.rulesNotCovered[0]);
+
+ assertEquals(2, result.results.length);
+
+ ScenarioResultSummary s1 = result.results[0];
+ assertEquals(0, s1.failures);
+ assertEquals(3, s1.total);
+ assertEquals(scenario1.getUUID(), s1.uuid);
+ assertEquals(scenario1.getName(), s1.scenarioName);
+
+ ScenarioResultSummary s2 = result.results[1];
+ assertEquals(1, s2.failures);
+ assertEquals(1, s2.total);
+ assertEquals(scenario2.getUUID(), s2.uuid);
+ assertEquals(scenario2.getName(), s2.scenarioName);
+ }
+
public void testVerifier() throws Exception {
ServiceImplementation impl = getService();
PackageItem pkg = impl.repository.createPackage("testVerifier", "");
More information about the jboss-svn-commits
mailing list