[jboss-svn-commits] JBL Code SVN: r25400 - 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 Feb 23 19:26:59 EST 2009
Author: michael.neale at jboss.com
Date: 2009-02-23 19:26:59 -0500 (Mon, 23 Feb 2009)
New Revision: 25400
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentTest.java
Log:
GUVNOR-153 test case
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentTest.java 2009-02-23 23:08:59 UTC (rev 25399)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentTest.java 2009-02-24 00:26:59 UTC (rev 25400)
@@ -18,9 +18,11 @@
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
+import org.drools.compiler.PackageBuilder;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
+import org.drools.builder.impl.KnowledgeBuilderImpl;
import org.drools.io.ResourceChangeScannerConfiguration;
import org.drools.io.ResourceFactory;
import org.drools.io.impl.ResourceChangeScannerImpl;
@@ -294,7 +296,8 @@
assertTrue( list.contains( "rule2" ) );
kagent.monitorResourceChangeEvents( false );
}
-
+
+
public void testDeletePackageUrl() throws Exception {
String rule1 = "";
rule1 += "package org.drools.test1\n";
@@ -304,7 +307,7 @@
rule1 += "then\n";
rule1 += "list.add( drools.getRule().getName() );\n";
rule1 += "end\n";
-
+
String rule2 = "";
rule2 += "package org.drools.test2\n";
rule2 += "global java.util.List list\n";
@@ -313,22 +316,22 @@
rule2 += "then\n";
rule2 += "list.add( drools.getRule().getName() );\n";
rule2 += "end\n";
-
+
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newByteArrayResource( rule1.getBytes() ), ResourceType.DRL );
kbuilder.add( ResourceFactory.newByteArrayResource( rule2.getBytes() ), ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
fail( kbuilder.getErrors().toString() );
}
-
+
Map map = new HashMap();
for ( KnowledgePackage pkg : kbuilder.getKnowledgePackages() ) {
map.put( pkg.getName(), pkg );
}
writePackage( (KnowledgePackage) map.get( "org.drools.test1" ), fileManager.newFile( "pkg1.pkg" ) );
writePackage( (KnowledgePackage) map.get( "org.drools.test2" ), fileManager.newFile( "pkg2.pkg" ) );
-
-
+
+
String xml = "";
xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
@@ -338,14 +341,14 @@
xml += " <resource source='http://localhost:9000/pkg2.pkg' type='PKG' />";
xml += " </add> ";
xml += "</change-set>";
-
+
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-
+
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" );
@@ -356,26 +359,26 @@
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "test agent",
kbase,
aconf );
-
+
kagent.applyChangeSet( ResourceFactory.newByteArrayResource( xml.getBytes() ) );
-
+
StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
List list = new ArrayList();
ksession.setGlobal( "list",
list );
ksession.fireAllRules();
ksession.dispose();
-
+
assertEquals( 2,
list.size() );
assertTrue( list.contains( "rule1" ) );
assertTrue( list.contains( "rule2" ) );
-
+
list.clear();
-
+
// have to sleep here as linux lastModified does not do milliseconds http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=1&t=019789
Thread.sleep( 2000 );
-
+
xml = "";
xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
@@ -383,26 +386,110 @@
xml += " <remove> ";
xml += " <resource source='http://localhost:9000/pkg2.pkg' type='PKG' />";
xml += " </remove> ";
- xml += "</change-set>";
-
+ xml += "</change-set>";
+
kagent.applyChangeSet( ResourceFactory.newByteArrayResource( xml.getBytes() ) );
Thread.sleep( 3000 );
-
+
ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
list = new ArrayList();
ksession.setGlobal( "list",
list );
ksession.fireAllRules();
ksession.dispose();
-
+
assertEquals( 1,
list.size() );
-
+
assertTrue( list.contains( "rule1" ) );
kagent.monitorResourceChangeEvents( false );
- }
+ }
+ public void testOldSchoolPackageUrl() throws Exception {
+ String rule1 = "";
+ rule1 += "package org.drools.test\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule rule1\n";
+ rule1 += "when\n";
+ rule1 += "then\n";
+ rule1 += "list.add( drools.getRule().getName() );\n";
+ rule1 += "end\n";
+
+ String rule2 = "";
+ rule2 += "package org.drools.test\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule rule2\n";
+ rule2 += "when\n";
+ rule2 += "then\n";
+ rule2 += "list.add( drools.getRule().getName() );\n";
+ rule2 += "end\n";
+
+
+
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( rule1.getBytes() ), ResourceType.DRL );
+ kbuilder.add( ResourceFactory.newByteArrayResource( rule2.getBytes() ), ResourceType.DRL );
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBuilderImpl kbi = (KnowledgeBuilderImpl) kbuilder;
+
+ //KnowledgePackage pkg = ( KnowledgePackage ) kbuilder.getKnowledgePackages().iterator().next();
+ writePackage( kbi.getPackageBuilder().getPackage(), fileManager.newFile( "pkgold.pkg" ) );
+
+
+ String xml = "";
+ xml += "<change-set xmlns='http://drools.org/drools-5.0/change-set'";
+ xml += " xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'";
+ xml += " xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >";
+ xml += " <add> ";
+ xml += " <resource source='http://localhost:9000/pkgold.pkg' type='PKG' />";
+ xml += " </add> ";
+ xml += "</change-set>";
+ File fxml = fileManager.newFile( "changeset.xml" );
+ fxml.deleteOnExit();
+ Writer output = new BufferedWriter( new FileWriter( fxml ) );
+ output.write( xml );
+ output.close();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+ 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" );
+ aconf.setProperty( "drools.agent.newInstance",
+ "true" );
+ KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "test agent",
+ kbase,
+ aconf );
+
+ kagent.applyChangeSet( ResourceFactory.newUrlResource( fxml.toURI().toURL() ) );
+
+ StatefulKnowledgeSession ksession = kagent.getKnowledgeBase().newStatefulKnowledgeSession();
+ List list = new ArrayList();
+ ksession.setGlobal( "list",
+ list );
+ ksession.fireAllRules();
+ ksession.dispose();
+
+ assertEquals( 2,
+ list.size() );
+ assertTrue( list.contains( "rule1" ) );
+ assertTrue( list.contains( "rule2" ) );
+
+
+ }
+
public void testModifyFile() throws IOException,
InterruptedException {
String rule1 = "";
@@ -629,7 +716,7 @@
kagent.monitorResourceChangeEvents( false );
}
- private static void writePackage(KnowledgePackage pkg,
+ private static void writePackage(Object pkg,
File p1file) throws IOException,
FileNotFoundException {
FileOutputStream out = new FileOutputStream( p1file );
More information about the jboss-svn-commits
mailing list