[jboss-svn-commits] JBL Code SVN: r36402 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Dec 13 19:37:50 EST 2010
Author: eaa
Date: 2010-12-13 19:37:49 -0500 (Mon, 13 Dec 2010)
New Revision: 36402
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/BaseKnowledgeAgentTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/QueryRemotionTest.java
Log:
JBRULES-2817: Make the KnowledgeAgent Tests more robust and faster
- QueryRemotionTest was migrated to the new test approach
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/BaseKnowledgeAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/BaseKnowledgeAgentTest.java 2010-12-14 00:22:42 UTC (rev 36401)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/BaseKnowledgeAgentTest.java 2010-12-14 00:37:49 UTC (rev 36402)
@@ -445,5 +445,23 @@
return sb.toString();
}
+
+ public String createCommonQuery(String name, String[] patterns){
+ StringBuilder sb = new StringBuilder();
+ sb.append(this.createHeader("org.drools.test"));
+ sb.append("\n");
+ sb.append("query \"");
+ sb.append(name);
+ sb.append("\"\n");
+
+ for (String pattern : patterns) {
+ sb.append(pattern);
+ sb.append("\n");
+ }
+
+ sb.append("end\n");
+
+ return sb.toString();
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/QueryRemotionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/QueryRemotionTest.java 2010-12-14 00:22:42 UTC (rev 36401)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/QueryRemotionTest.java 2010-12-14 00:37:49 UTC (rev 36402)
@@ -5,93 +5,23 @@
import java.io.FileWriter;
import java.io.Writer;
-import junit.framework.TestCase;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
-import org.drools.agent.KnowledgeAgent;
-import org.drools.agent.KnowledgeAgentConfiguration;
-import org.drools.agent.KnowledgeAgentFactory;
-import org.drools.io.ResourceChangeScannerConfiguration;
import org.drools.io.ResourceFactory;
-import org.drools.io.impl.ResourceChangeNotifierImpl;
-import org.drools.io.impl.ResourceChangeScannerImpl;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.QueryResults;
-import org.drools.core.util.FileManager;
-import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent;
-import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent;
-import org.drools.event.knowledgeagent.AfterResourceProcessedEvent;
-import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent;
-import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent;
-import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent;
-import org.drools.event.knowledgeagent.KnowledgeAgentEventListener;
-import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent;
-import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.handler.ResourceHandler;
/**
* Removes a query from kbase using kagent and incremental changeset build.
* @author esteban.aliverti at gmail.com
*/
-public class QueryRemotionTest extends TestCase {
+public class QueryRemotionTest extends BaseKnowledgeAgentTest {
- private final Object lock = new Object();
- FileManager fileManager;
- private Server server;
- private volatile boolean kbaseUpdated;
-
- @Override
- protected void setUp() throws Exception {
- fileManager = new FileManager();
- fileManager.setUp();
- ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset();
- ResourceFactory.getResourceChangeNotifierService().start();
- ResourceFactory.getResourceChangeScannerService().start();
-
- this.server = new Server(0);
- ResourceHandler resourceHandler = new ResourceHandler();
- resourceHandler.setResourceBase(fileManager.getRootDirectory().getPath());
- System.out.println("root : " + fileManager.getRootDirectory().getPath());
-
- server.setHandler(resourceHandler);
-
- server.start();
- }
-
- private int getPort() {
- return this.server.getConnectors()[0].getLocalPort();
- }
-
- @Override
- protected void tearDown() throws Exception {
- fileManager.tearDown();
- ResourceFactory.getResourceChangeNotifierService().stop();
- ResourceFactory.getResourceChangeScannerService().stop();
- ((ResourceChangeNotifierImpl) ResourceFactory.getResourceChangeNotifierService()).reset();
- ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset();
-
- server.stop();
- }
-
public void testRemoveQueryChangeSet() throws Exception {
- String header = "";
- header += "package org.drools.test\n";
- header += "global java.util.List list\n\n";
+ this.fileManager.write("rules.drl", this.createCommonQuery("all the Strings", new String[]{"$strings : String()"}));
- String query1 = "";
- query1 += "query \"all the Strings\"\n";
- query1 += " $strings : String()\n";
- query1 += "end\n";
-
- File f1 = fileManager.newFile("rules.drl");
- Writer output = new BufferedWriter(new FileWriter(f1));
- output.write(header);
- output.write(query1);
- output.close();
-
String xml = "";
xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
@@ -100,15 +30,13 @@
xml += " <resource source='http://localhost:" + this.getPort() + "/rules.drl' type='DRL' />";
xml += " </add> ";
xml += "</change-set>";
- File fxml = fileManager.newFile("changeset.xml");
- output = new BufferedWriter(new FileWriter(fxml));
- output.write(xml);
- output.close();
+ File fxml = fileManager.write( "changeset.xml",
+ xml );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- KnowledgeAgent kagent = this.createKAgent(kbase);
- kagent.applyChangeSet(ResourceFactory.newUrlResource(fxml.toURI().toURL()));
- this.kbaseUpdated = false;
+ KnowledgeAgent kagent = this.createKAgent(kbase, false);
+
+ this.applyChangeSet(kagent, ResourceFactory.newUrlResource(fxml.toURI().toURL()));
assertEquals(1, kbase.getKnowledgePackages().iterator().next().getRules().size());
assertTrue(kbase.getKnowledgePackages().iterator().next().getRules().iterator().next().getName().equals("all the Strings"));
@@ -121,20 +49,11 @@
assertTrue(queryResults.size() == 1);
assertTrue(queryResults.iterator().next().get("$strings").equals("Some String"));
- Thread.sleep(2000);
- query1 = "";
- query1 += "query \"all the Strings 2\"\n";
- query1 += " $strings : String()\n";
- query1 += "end\n";
+ this.fileManager.write("rules.drl", this.createCommonQuery("all the Strings 2", new String[]{"$strings : String()"}));
- output = new BufferedWriter(new FileWriter(f1));
- output.write(header);
- output.write(query1);
- output.close();
+ this.scan(kagent);
- this.waitUntilKBaseUpdate();
-
assertEquals(1, kbase.getKnowledgePackages().iterator().next().getRules().size());
assertTrue(kbase.getKnowledgePackages().iterator().next().getRules().iterator().next().getName().equals("all the Strings 2"));
@@ -145,69 +64,6 @@
ksession.dispose();
-
}
-
- private KnowledgeAgent createKAgent(KnowledgeBase kbase) {
- ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
- sconf.setProperty("drools.resource.scanner.interval", "2");
- ResourceFactory.getResourceChangeScannerService().configure(sconf);
-
- KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
- aconf.setProperty("drools.agent.scanDirectories", "true");
- aconf.setProperty("drools.agent.scanResources", "true");
- // Testing incremental build here
- aconf.setProperty("drools.agent.newInstance", "false");
- KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent(
- "test agent", kbase, aconf);
-
- kagent.addEventListener(new KnowledgeAgentEventListener() {
-
- public void beforeChangeSetApplied(BeforeChangeSetAppliedEvent event) {
- }
-
- public void afterChangeSetApplied(AfterChangeSetAppliedEvent event) {
- }
-
- public void beforeChangeSetProcessed(BeforeChangeSetProcessedEvent event) {
- }
-
- public void afterChangeSetProcessed(AfterChangeSetProcessedEvent event) {
- }
-
- public void beforeResourceProcessed(BeforeResourceProcessedEvent event) {
- }
-
- public void afterResourceProcessed(AfterResourceProcessedEvent event) {
- }
-
- public void knowledgeBaseUpdated(KnowledgeBaseUpdatedEvent event) {
- System.out.println("KBase was updated");
- synchronized (lock) {
- kbaseUpdated = true;
- lock.notifyAll();
- }
- }
-
- public void resourceCompilationFailed(ResourceCompilationFailedEvent event) {
- }
- });
-
- assertEquals("test agent", kagent.getName());
-
- return kagent;
- }
-
- private void waitUntilKBaseUpdate() {
- synchronized (lock) {
- while (!kbaseUpdated) {
- try {
- lock.wait();
- } catch (InterruptedException e) {
- }
- System.out.println("Waking up!");
- }
- kbaseUpdated = false;
- }
- }
+
}
More information about the jboss-svn-commits
mailing list