[jboss-svn-commits] JBL Code SVN: r22816 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/agent and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Sep 16 09:55:36 EDT 2008
Author: Rikkola
Date: 2008-09-16 09:55:35 -0400 (Tue, 16 Sep 2008)
New Revision: 22816
Added:
labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
Log:
JBRULES-1334: Add RuleBase configuration options to rule agent properties file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java 2008-09-16 13:49:53 UTC (rev 22815)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/RuleAgent.java 2008-09-16 13:55:35 UTC (rev 22816)
@@ -3,7 +3,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@@ -12,7 +11,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.StringTokenizer;
import java.util.Timer;
import java.util.TimerTask;
@@ -182,12 +180,30 @@
if ( listener != null ) {
agent.listener = listener;
}
- agent.init( config );
+
+ if ( ruleBaseConf == null ) {
+ agent.init( config,
+ true );
+ } else {
+ agent.init( config );
+ }
+
return agent;
}
void init(Properties config) {
+ init( config,
+ false );
+ }
+ /**
+ *
+ * @param config
+ * @param lookForRuleBaseConfigurations true if config contains rule base configuration data that should be used.
+ */
+ void init(Properties config,
+ boolean lookForRuleBaseConfigurations) {
+
boolean newInstance = Boolean.valueOf( config.getProperty( NEW_INSTANCE,
"false" ) ).booleanValue();
int secondsToRefresh = Integer.parseInt( config.getProperty( POLL_INTERVAL,
@@ -201,16 +217,32 @@
List provs = new ArrayList();
+ Properties droolsProperties = new Properties();
+
for ( Iterator iter = config.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
- PackageProvider prov = getProvider( key,
- config );
- if ( prov != null ) {
- listener.info( "Configuring package provider : " + prov.toString() );
- provs.add( prov );
+
+ if ( ruleBaseConf != null && key.startsWith( "drools." ) ) {
+
+ droolsProperties.setProperty( key,
+ config.getProperty( key ) );
+
+ } else {
+
+ PackageProvider prov = getProvider( key,
+ config );
+ if ( prov != null ) {
+ listener.info( "Configuring package provider : " + prov.toString() );
+ provs.add( prov );
+ }
}
}
+ // If there is no ruleBase and config file had rule base properties, set properties.
+ if ( lookForRuleBaseConfigurations && !droolsProperties.isEmpty() ) {
+ ruleBaseConf = new RuleBaseConfiguration( droolsProperties );
+ }
+
configure( newInstance,
provs,
secondsToRefresh );
@@ -524,4 +556,7 @@
};
}
+ RuleBaseConfiguration getRuleBaseConfiguration() {
+ return ruleBaseConf;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2008-09-16 13:49:53 UTC (rev 22815)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/agent/RuleAgentTest.java 2008-09-16 13:55:35 UTC (rev 22816)
@@ -11,6 +11,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseConfiguration.SequentialAgenda;
import org.drools.common.InternalRuleBase;
import org.drools.rule.Package;
@@ -21,384 +22,455 @@
public void testLists() {
String s = "\tfoo.bar\n baz.bar\t whee ";
List result = RuleAgent.list( s );
- assertEquals(3, result.size());
- assertEquals("foo.bar", result.get( 0 ));
- assertEquals("baz.bar", result.get(1));
- assertEquals("whee", result.get(2));
+ assertEquals( 3,
+ result.size() );
+ assertEquals( "foo.bar",
+ result.get( 0 ) );
+ assertEquals( "baz.bar",
+ result.get( 1 ) );
+ assertEquals( "whee",
+ result.get( 2 ) );
s = null;
result = RuleAgent.list( s );
- assertNotNull(result);
- assertEquals(0, result.size());
+ assertNotNull( result );
+ assertEquals( 0,
+ result.size() );
s = "\"yeah man\" \"another one\"";
result = RuleAgent.list( s );
- assertEquals(2, result.size());
- assertEquals("yeah man", result.get( 0 ));
- assertEquals("another one", result.get(1));
+ assertEquals( 2,
+ result.size() );
+ assertEquals( "yeah man",
+ result.get( 0 ) );
+ assertEquals( "another one",
+ result.get( 1 ) );
s = "\"yeah man\"";
result = RuleAgent.list( s );
- assertEquals(1, result.size());
- assertEquals("yeah man", result.get( 0 ));
+ assertEquals( 1,
+ result.size() );
+ assertEquals( "yeah man",
+ result.get( 0 ) );
s = "YEAH";
result = RuleAgent.list( s );
- assertEquals(1, result.size());
- assertEquals("YEAH", result.get( 0 ));
+ assertEquals( 1,
+ result.size() );
+ assertEquals( "YEAH",
+ result.get( 0 ) );
}
public void testFiles() throws Exception {
File dir = RuleBaseAssemblerTest.getTempDirectory();
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p1.pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p1.pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
- Package p2 = new Package("p2");
- File p2f = new File(dir, "p2.pkg");
- RuleBaseAssemblerTest.writePackage( p2, p2f );
+ Package p2 = new Package( "p2" );
+ File p2f = new File( dir,
+ "p2.pkg" );
+ RuleBaseAssemblerTest.writePackage( p2,
+ p2f );
String path = dir.getPath() + "/" + "p1.pkg " + dir.getPath() + "/" + "p2.pkg";
Properties props = new Properties();
- props.setProperty( "file", path );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
+ props.setProperty( "file",
+ path );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
RuleBase rb = ag.getRuleBase();
- assertNotNull(rb);
- assertEquals(2, rb.getPackages().length);
+ assertNotNull( rb );
+ assertEquals( 2,
+ rb.getPackages().length );
- assertFalse(ag.isPolling());
+ assertFalse( ag.isPolling() );
- props.setProperty( "poll", "1" );
- ag = RuleAgent.newRuleAgent(props);
- assertTrue(ag.isPolling());
+ props.setProperty( "poll",
+ "1" );
+ ag = RuleAgent.newRuleAgent( props );
+ assertTrue( ag.isPolling() );
ag.stopPolling();
- assertFalse(ag.isPolling());
+ assertFalse( ag.isPolling() );
}
-// public void testSpaces() throws Exception {
-// File dir = RuleBaseAssemblerTest.getTempDirectory();
-// File dir_ = new File(dir, "whee waah");
-// dir_.mkdir();
-// System.err.println(dir_.getPath());
-//
-//
-// File x = new File("/tmp/__temp_test_drools_packages/whee waah");
-// assertTrue(x.exists());
-// }
+ // public void testSpaces() throws Exception {
+ // File dir = RuleBaseAssemblerTest.getTempDirectory();
+ // File dir_ = new File(dir, "whee waah");
+ // dir_.mkdir();
+ // System.err.println(dir_.getPath());
+ //
+ //
+ // File x = new File("/tmp/__temp_test_drools_packages/whee waah");
+ // assertTrue(x.exists());
+ // }
public void testPollingFilesRuleBaseUpdate() throws Exception {
//RuleBaseAssemblerTest.clearTempDirectory();
final File dir = RuleBaseAssemblerTest.getTempDirectory();
- Random rnd = new Random(System.currentTimeMillis());
+ Random rnd = new Random( System.currentTimeMillis() );
- final Package p1 = new Package("p1");
- final File p1f = new File(dir, rnd.nextLong() + ".pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ final Package p1 = new Package( "p1" );
+ final File p1f = new File( dir,
+ rnd.nextLong() + ".pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
String path = p1f.getPath();
Properties props = new Properties();
- props.setProperty( "file", path );
+ props.setProperty( "file",
+ path );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
-
RuleBase rb = ag.getRuleBase();
- assertEquals(1, rb.getPackages().length);
- assertEquals(0, rb.getPackages()[0].getGlobals().size());
+ assertEquals( 1,
+ rb.getPackages().length );
+ assertEquals( 0,
+ rb.getPackages()[0].getGlobals().size() );
- p1.addGlobal( "goo", String.class );
+ p1.addGlobal( "goo",
+ String.class );
Thread.sleep( 1000 );
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
RuleBase rb_ = ag.getRuleBase();
- assertSame(rb, rb_);
- assertEquals(1, rb.getPackages().length);
- assertEquals(0, rb.getPackages()[0].getGlobals().size());
+ assertSame( rb,
+ rb_ );
+ assertEquals( 1,
+ rb.getPackages().length );
+ assertEquals( 0,
+ rb.getPackages()[0].getGlobals().size() );
Thread.sleep( 1000 );
ag.refreshRuleBase();
RuleBase rb2 = ag.getRuleBase();
- assertSame(rb, rb2);
+ assertSame( rb,
+ rb2 );
- assertEquals(1, rb2.getPackages().length);
- assertEquals(1, rb2.getPackages()[0].getGlobals().size());
+ assertEquals( 1,
+ rb2.getPackages().length );
+ assertEquals( 1,
+ rb2.getPackages()[0].getGlobals().size() );
//now check subsequent changes
- p1.addGlobal( "goo2", String.class );
-// System.err.println("-->WRITING CHANGE");
+ p1.addGlobal( "goo2",
+ String.class );
+ // System.err.println("-->WRITING CHANGE");
Thread.sleep( 1000 );
- RuleBaseAssemblerTest.writePackage( p1, p1f );
-// System.err.println("-->WROTE CHANGE");
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
+ // System.err.println("-->WROTE CHANGE");
Thread.sleep( 1000 );
ag.refreshRuleBase();
RuleBase rb2_ = ag.getRuleBase();
- assertSame(rb2_, rb2);
- assertEquals(1, rb2_.getPackages().length);
- assertEquals(2, rb2_.getPackages()[0].getGlobals().size());
+ assertSame( rb2_,
+ rb2 );
+ assertEquals( 1,
+ rb2_.getPackages().length );
+ assertEquals( 2,
+ rb2_.getPackages()[0].getGlobals().size() );
ag.refreshRuleBase();
RuleBase rb3 = ag.getRuleBase();
- assertSame(rb3, rb2);
+ assertSame( rb3,
+ rb2 );
- assertEquals(1, rb3.getPackages().length);
- assertEquals(2, rb3.getPackages()[0].getGlobals().size());
+ assertEquals( 1,
+ rb3.getPackages().length );
+ assertEquals( 2,
+ rb3.getPackages()[0].getGlobals().size() );
ag.refreshRuleBase();
ag.refreshRuleBase();
- assertEquals(1, rb3.getPackages().length);
- assertEquals(2, rb3.getPackages()[0].getGlobals().size());
+ assertEquals( 1,
+ rb3.getPackages().length );
+ assertEquals( 2,
+ rb3.getPackages()[0].getGlobals().size() );
-
}
public void testPollingFilesRuleBaseReplace() throws Exception {
File dir = RuleBaseAssemblerTest.getTempDirectory();
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p43_.pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p43_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
- Package p2 = new Package("p2");
- File p2f = new File(dir, "p44_.pkg");
- RuleBaseAssemblerTest.writePackage( p2, p2f );
+ Package p2 = new Package( "p2" );
+ File p2f = new File( dir,
+ "p44_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p2,
+ p2f );
-
-
String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
Properties props = new Properties();
- props.setProperty( "file", path );
+ props.setProperty( "file",
+ path );
- props.setProperty( "newInstance", "true" );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
+ props.setProperty( "newInstance",
+ "true" );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
- assertTrue(ag.isNewInstance());
+ assertTrue( ag.isNewInstance() );
RuleBase rb = ag.getRuleBase();
- assertEquals(2, rb.getPackages().length);
+ assertEquals( 2,
+ rb.getPackages().length );
RuleBase rb_ = ag.getRuleBase();
- assertSame(rb, rb_);
+ assertSame( rb,
+ rb_ );
-
ag.refreshRuleBase();
- assertSame(rb, ag.getRuleBase());
+ assertSame( rb,
+ ag.getRuleBase() );
Thread.sleep( 1000 );
//only change one
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
Thread.sleep( 1000 );
ag.refreshRuleBase();
-
rb_ = ag.getRuleBase();
- assertNotSame( rb, rb_ );
+ assertNotSame( rb,
+ rb_ );
-
//check we will have 2
- assertEquals(2, rb_.getPackages().length);
+ assertEquals( 2,
+ rb_.getPackages().length );
ag.refreshRuleBase();
ag.refreshRuleBase();
RuleBase rb__ = ag.getRuleBase();
- assertSame(rb_, rb__);
+ assertSame( rb_,
+ rb__ );
+ }
+ public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p43_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
- }
-
- public void testPollingFilesRuleBaseRemoveNewInstanceFalse() throws Exception {
- File dir = RuleBaseAssemblerTest.getTempDirectory();
-
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p43_.pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
-
- Package p2 = new Package("p2");
- File p2f = new File(dir, "p44_.pkg");
- RuleBaseAssemblerTest.writePackage( p2, p2f );
-
- String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
-
- Properties props = new Properties();
- props.setProperty( "file", path );
-
- props.setProperty( "newInstance", "false" );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
-
- assertFalse(ag.isNewInstance());
-
- RuleBase rb = ag.getRuleBase();
- assertEquals(2, rb.getPackages().length);
-
+ Package p2 = new Package( "p2" );
+ File p2f = new File( dir,
+ "p44_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p2,
+ p2f );
- boolean success = p2f.delete();
- assertTrue(success);
-
- ag.refreshRuleBase();
+ String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
- assertEquals(1, rb.getPackages().length);
- Thread.sleep( 1000 );
- //only change one
- RuleBaseAssemblerTest.writePackage( p1, p1f );
- Thread.sleep( 1000 );
- ag.refreshRuleBase();
-
-
- //check we will have 2
- assertEquals(1, rb.getPackages().length);
-
- ag.refreshRuleBase();
- ag.refreshRuleBase();
-
- assertEquals(1, rb.getPackages().length);
-
-
-
-
+ Properties props = new Properties();
+ props.setProperty( "file",
+ path );
+
+ props.setProperty( "newInstance",
+ "false" );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+ assertFalse( ag.isNewInstance() );
+
+ RuleBase rb = ag.getRuleBase();
+ assertEquals( 2,
+ rb.getPackages().length );
+
+ boolean success = p2f.delete();
+ assertTrue( success );
+
+ ag.refreshRuleBase();
+
+ assertEquals( 1,
+ rb.getPackages().length );
+ Thread.sleep( 1000 );
+ //only change one
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
+ Thread.sleep( 1000 );
+ ag.refreshRuleBase();
+
+ //check we will have 2
+ assertEquals( 1,
+ rb.getPackages().length );
+
+ ag.refreshRuleBase();
+ ag.refreshRuleBase();
+
+ assertEquals( 1,
+ rb.getPackages().length );
+
}
-
+
public void testPollingFilesRuleBaseRemoveNewInstanceTrue() throws Exception {
- File dir = RuleBaseAssemblerTest.getTempDirectory();
-
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p43_.pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
-
- Package p2 = new Package("p2");
- File p2f = new File(dir, "p44_.pkg");
- RuleBaseAssemblerTest.writePackage( p2, p2f );
-
-
-
- String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
-
- Properties props = new Properties();
- props.setProperty( "file", path );
-
- props.setProperty( "newInstance", "true" );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
-
- assertTrue(ag.isNewInstance());
-
- RuleBase rb = ag.getRuleBase();
- assertEquals(2, rb.getPackages().length);
-
-
- boolean success = p2f.delete();
- assertTrue(success); // <-- does not work on windows
-
- ag.refreshRuleBase();
+ File dir = RuleBaseAssemblerTest.getTempDirectory();
- RuleBase rb_ = ag.getRuleBase();
-
- assertNotSame(rb, rb_);
-
- assertEquals(1, rb_.getPackages().length);
- Thread.sleep( 1000 );
- //only change one
- RuleBaseAssemblerTest.writePackage( p1, p1f );
- Thread.sleep( 1000 );
- ag.refreshRuleBase();
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p43_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
- RuleBase rb__ = ag.getRuleBase();
-
- assertNotSame(rb, rb__);
-
- //check we will have 2
- assertEquals(1, rb__.getPackages().length);
-
- ag.refreshRuleBase();
- ag.refreshRuleBase();
+ Package p2 = new Package( "p2" );
+ File p2f = new File( dir,
+ "p44_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p2,
+ p2f );
- RuleBase rb___ = ag.getRuleBase();
- assertEquals(1, rb___.getPackages().length);
-
-
-
-
+ String path = dir.getPath() + "/" + "p43_.pkg " + dir.getPath() + "/p44_.pkg";
+
+ Properties props = new Properties();
+ props.setProperty( "file",
+ path );
+
+ props.setProperty( "newInstance",
+ "true" );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
+
+ assertTrue( ag.isNewInstance() );
+
+ RuleBase rb = ag.getRuleBase();
+ assertEquals( 2,
+ rb.getPackages().length );
+
+ boolean success = p2f.delete();
+ assertTrue( success ); // <-- does not work on windows
+
+ ag.refreshRuleBase();
+
+ RuleBase rb_ = ag.getRuleBase();
+
+ assertNotSame( rb,
+ rb_ );
+
+ assertEquals( 1,
+ rb_.getPackages().length );
+ Thread.sleep( 1000 );
+ //only change one
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
+ Thread.sleep( 1000 );
+ ag.refreshRuleBase();
+
+ RuleBase rb__ = ag.getRuleBase();
+
+ assertNotSame( rb,
+ rb__ );
+
+ //check we will have 2
+ assertEquals( 1,
+ rb__.getPackages().length );
+
+ ag.refreshRuleBase();
+ ag.refreshRuleBase();
+
+ RuleBase rb___ = ag.getRuleBase();
+ assertEquals( 1,
+ rb___.getPackages().length );
+
}
-
public void testDirectory() throws Exception {
File dir = RuleBaseAssemblerTest.getTempDirectory();
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p43_.pkg");
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p43_.pkg" );
- File junk = new File(dir, "xxx.poo");
- FileOutputStream ojunk = new FileOutputStream(junk);
- ojunk.write("ignore me".getBytes());
+ File junk = new File( dir,
+ "xxx.poo" );
+ FileOutputStream ojunk = new FileOutputStream( junk );
+ ojunk.write( "ignore me".getBytes() );
ojunk.flush();
ojunk.close();
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
Properties props = new Properties();
- props.setProperty( RuleAgent.DIRECTORY, dir.getPath() );
- props.setProperty( RuleAgent.CONFIG_NAME, "goo" );
+ props.setProperty( RuleAgent.DIRECTORY,
+ dir.getPath() );
+ props.setProperty( RuleAgent.CONFIG_NAME,
+ "goo" );
+ RuleAgent ag = RuleAgent.newRuleAgent( props );
- RuleAgent ag = RuleAgent.newRuleAgent(props);
-
ag.refreshRuleBase();
RuleBase rb = ag.getRuleBase();
- assertNotNull(rb);
-// assertEquals(1, rb.getPackages().length);
+ assertNotNull( rb );
+ // assertEquals(1, rb.getPackages().length);
}
public void testCustomRuleBaseConfiguration() throws Exception {
final File dir = RuleBaseAssemblerTest.getTempDirectory();
- Random rnd = new Random(System.currentTimeMillis());
+ Random rnd = new Random( System.currentTimeMillis() );
- final Package p1 = new Package("p1");
- final File p1f = new File(dir, rnd.nextLong() + ".pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ final Package p1 = new Package( "p1" );
+ final File p1f = new File( dir,
+ rnd.nextLong() + ".pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
String path = p1f.getPath();
Properties props = new Properties();
- props.setProperty( "file", path );
+ props.setProperty( "file",
+ path );
// Check a default value for the RuleBase's RuleBaseConfiguration
RuleAgent agent = RuleAgent.newRuleAgent( props );
RuleBaseConfiguration conf = ((InternalRuleBase) agent.getRuleBase()).getConfiguration();
- assertEquals( false, conf.isSequential() );
+ assertEquals( false,
+ conf.isSequential() );
// Pass in a RuleBaseConfiguration and make sure the RuleBase was created with it
conf = new RuleBaseConfiguration();
conf.setSequential( true );
- agent = RuleAgent.newRuleAgent( props, conf );
+ agent = RuleAgent.newRuleAgent( props,
+ conf );
conf = ((InternalRuleBase) agent.getRuleBase()).getConfiguration();
- assertEquals( true, conf.isSequential() );
+ assertEquals( true,
+ conf.isSequential() );
}
public void testLoadSampleConfig() {
- RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
+ RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
Properties props = ag.loadFromProperties( "/sample-agent-config.properties" );
- assertEquals("10", props.getProperty( RuleAgent.POLL_INTERVAL ));
- assertEquals("/home/packages", props.getProperty( RuleAgent.DIRECTORY ));
- assertEquals("true", props.getProperty( RuleAgent.NEW_INSTANCE ));
- assertEqualsIgnoreWhitespace( "/foo/bar.pkg /wee/waa.pkg /wee/waa2.pkg", props.getProperty( RuleAgent.FILES ));
+ assertEquals( "10",
+ props.getProperty( RuleAgent.POLL_INTERVAL ) );
+ assertEquals( "/home/packages",
+ props.getProperty( RuleAgent.DIRECTORY ) );
+ assertEquals( "true",
+ props.getProperty( RuleAgent.NEW_INSTANCE ) );
+ assertEqualsIgnoreWhitespace( "/foo/bar.pkg /wee/waa.pkg /wee/waa2.pkg",
+ props.getProperty( RuleAgent.FILES ) );
}
private void assertEqualsIgnoreWhitespace(final String expected,
@@ -414,19 +486,23 @@
public void testEventListenerSetup() throws Exception {
RuleAgent ag = new RuleAgent( new RuleBaseConfiguration() );
- assertNotNull(ag.listener);
+ assertNotNull( ag.listener );
final String[] name = new String[1];
AgentEventListener list = new AgentEventListener() {
public void debug(String message) {
}
+
public void exception(Exception e) {
}
+
public void info(String message) {
}
+
public void warning(String message) {
}
+
public void setAgentName(String n) {
name[0] = n;
}
@@ -434,59 +510,67 @@
File dir = RuleBaseAssemblerTest.getTempDirectory();
- Package p1 = new Package("p1");
- File p1f = new File(dir, "p42_.pkg");
- RuleBaseAssemblerTest.writePackage( p1, p1f );
+ Package p1 = new Package( "p1" );
+ File p1f = new File( dir,
+ "p42_.pkg" );
+ RuleBaseAssemblerTest.writePackage( p1,
+ p1f );
String path = dir.getPath() + "/" + "p42_.pkg";
Properties props = new Properties();
- props.setProperty( "file", path );
- props.setProperty( "poll", "1" );
- props.setProperty( "name", "poo" );
- ag = RuleAgent.newRuleAgent(props, list);
+ props.setProperty( "file",
+ path );
+ props.setProperty( "poll",
+ "1" );
+ props.setProperty( "name",
+ "poo" );
+ ag = RuleAgent.newRuleAgent( props,
+ list );
- assertEquals(list, ag.listener);
- assertEquals("poo", name[0]);
+ assertEquals( list,
+ ag.listener );
+ assertEquals( "poo",
+ name[0] );
ag.stopPolling();
}
-
public void testPollSetup() throws Exception {
//this is the only method that will actually run the polling timer
-
Properties props = new Properties();
//props.setProperty( "file", "/foo/bar" );
- props.setProperty( "poll", "1" );
+ props.setProperty( "poll",
+ "1" );
MockRuleAgent ag = new MockRuleAgent();
- ag.init(props);
+ ag.init( props );
- assertTrue(ag.isPolling());
- assertTrue(ag.refreshCalled);
+ assertTrue( ag.isPolling() );
+ assertTrue( ag.refreshCalled );
ag.refreshCalled = false;
- assertFalse(ag.refreshCalled);
+ assertFalse( ag.refreshCalled );
Thread.sleep( 100 );
- assertFalse(ag.refreshCalled);
+ assertFalse( ag.refreshCalled );
Thread.sleep( 1500 );
- assertTrue(ag.refreshCalled);
+ assertTrue( ag.refreshCalled );
ag.refreshCalled = false;
Thread.sleep( 100 );
- assertFalse(ag.refreshCalled);
+ assertFalse( ag.refreshCalled );
Thread.sleep( 1500 );
- assertTrue(ag.refreshCalled);
+ assertTrue( ag.refreshCalled );
ag.stopPolling();
}
public void testProviderMap() throws Exception {
- assertEquals(3, RuleAgent.PACKAGE_PROVIDERS.size());
- assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "url" ));
- assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "file" ));
- assertTrue(RuleAgent.PACKAGE_PROVIDERS.containsKey( "dir" ));
- assertFalse(RuleAgent.PACKAGE_PROVIDERS.containsKey( "XXX" ));
- assertTrue(RuleAgent.PACKAGE_PROVIDERS.get( "url" ).equals( URLScanner.class ));
+ assertEquals( 3,
+ RuleAgent.PACKAGE_PROVIDERS.size() );
+ assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "url" ) );
+ assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "file" ) );
+ assertTrue( RuleAgent.PACKAGE_PROVIDERS.containsKey( "dir" ) );
+ assertFalse( RuleAgent.PACKAGE_PROVIDERS.containsKey( "XXX" ) );
+ assertTrue( RuleAgent.PACKAGE_PROVIDERS.get( "url" ).equals( URLScanner.class ) );
}
@@ -495,11 +579,13 @@
Map oldMap = ag.PACKAGE_PROVIDERS;
ag.PACKAGE_PROVIDERS = new HashMap();
- ag.PACKAGE_PROVIDERS.put( RuleAgent.URLS, MockProvider.class );
- ag.PACKAGE_PROVIDERS.put( RuleAgent.FILES, MockProvider.class );
- ag.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY, MockProvider.class );
+ ag.PACKAGE_PROVIDERS.put( RuleAgent.URLS,
+ MockProvider.class );
+ ag.PACKAGE_PROVIDERS.put( RuleAgent.FILES,
+ MockProvider.class );
+ ag.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY,
+ MockProvider.class );
-
Properties props = new Properties();
props.load( this.getClass().getResourceAsStream( "/rule-agent-config.properties" ) );
MockEventListener evl = new MockEventListener();
@@ -507,53 +593,91 @@
ag.init( props );
+ assertTrue( ag.newInstance );
+ assertEquals( 3,
+ ag.provs.size() );
+ assertEquals( 30,
+ ag.secondsToRefresh );
+ assertEquals( "MyConfig",
+ evl.name );
+ assertFalse( evl.exceptionCalled );
+ assertFalse( evl.warningCalled );
+ assertTrue( evl.infoCalled );
- assertTrue(ag.newInstance);
- assertEquals(3, ag.provs.size());
- assertEquals(30, ag.secondsToRefresh);
- assertEquals("MyConfig", evl.name);
- assertFalse(evl.exceptionCalled);
- assertFalse(evl.warningCalled);
- assertTrue(evl.infoCalled);
-
ag.PACKAGE_PROVIDERS = oldMap;
}
+ public void testLoadRuleBaseConfigurationProperties() throws Exception {
+ AnotherRuleAgentMock ag = new AnotherRuleAgentMock();
+ Map oldMap = ag.PACKAGE_PROVIDERS;
+ RuleAgent.PACKAGE_PROVIDERS = new HashMap();
+ RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.URLS,
+ MockProvider.class );
+ RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.FILES,
+ MockProvider.class );
+ RuleAgent.PACKAGE_PROVIDERS.put( RuleAgent.DIRECTORY,
+ MockProvider.class );
+ Properties props = new Properties();
+ MockEventListener evl = new MockEventListener();
+ ag.listener = evl;
+ props.load( this.getClass().getResourceAsStream( "/rule-agent-config.properties" ) );
+ ag.init( props,
+ true );
+
+ assertTrue( ag.getRuleBaseConfiguration().isMaintainTms() );
+ assertFalse( ag.getRuleBaseConfiguration().isSequential() );
+ assertTrue( ag.getRuleBaseConfiguration().getSequentialAgenda().equals( SequentialAgenda.SEQUENTIAL ) );
+ assertTrue( ag.getRuleBaseConfiguration().isShareAlphaNodes() );
+ assertTrue( ag.getRuleBaseConfiguration().isShareBetaNodes() );
+
+ props.load( this.getClass().getResourceAsStream( "/rule-base-rule-agent-config.properties" ) );
+
+ ag.init( props,
+ true );
+
+ assertTrue( ag.getRuleBaseConfiguration().isMaintainTms() );
+ assertFalse( ag.getRuleBaseConfiguration().isSequential() );
+ assertTrue( ag.getRuleBaseConfiguration().getSequentialAgenda().equals( SequentialAgenda.DYNAMIC ) );
+ assertFalse( ag.getRuleBaseConfiguration().isShareAlphaNodes() );
+ assertTrue( ag.getRuleBaseConfiguration().isShareBetaNodes() );
+
+ ag.PACKAGE_PROVIDERS = oldMap;
+ }
+
class AnotherRuleAgentMock extends RuleAgent {
- public int secondsToRefresh;
- public List provs;
+ public int secondsToRefresh;
+ public List provs;
public boolean newInstance;
public AnotherRuleAgentMock() {
super( new RuleBaseConfiguration() );
}
- synchronized void configure(boolean newInstance, List provs, int secondsToRefresh) {
+ synchronized void configure(boolean newInstance,
+ List provs,
+ int secondsToRefresh) {
this.newInstance = newInstance;
this.provs = provs;
this.secondsToRefresh = secondsToRefresh;
}
-
-
}
+ class MockEventListener
+ implements
+ AgentEventListener {
- class MockEventListener implements AgentEventListener {
-
-
public String name;
- boolean exceptionCalled = false;
- boolean infoCalled = false;
- boolean warningCalled;
+ boolean exceptionCalled = false;
+ boolean infoCalled = false;
+ boolean warningCalled;
public void debug(String message) {
-
}
public void exception(Exception e) {
@@ -561,7 +685,7 @@
}
public void info(String message) {
- if (message != null) this.infoCalled = true;
+ if ( message != null ) this.infoCalled = true;
}
public void setAgentName(String name) {
@@ -573,7 +697,6 @@
}
-
}
}
Added: labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/resources/rule-base-rule-agent-config.properties 2008-09-16 13:55:35 UTC (rev 22816)
@@ -0,0 +1,47 @@
+##
+## RuleAgent configuration file example
+##
+
+#setting this means the rulebase will be created fresh whenever there are
+#changes
+newInstance=true
+
+#this points to a binary compiled rule package, you can have spaces
+#seperating multiple files
+file=/foo/bar/boo.pkg /foo/bar/boo2.pkg
+
+#this specifies that packages may appear in a directory
+#it will pick up whatever files are dumped in there (.pkg files like above)
+dir=/my/dir
+
+#this specifies a list of urls for packages - these urls
+#are those that are exposed by the BRMS
+url=http://some.url/here http://some.url/here
+
+#the following can be used with the urls to keep a local cache
+#so if the runtime server is restarted, the BRMS does not need
+#to be available
+localCacheDir=/foo/bar/cache
+
+#this specifies the frequency at which the sources will be checked for
+#changes (in seconds). If you don't set this, it will mean that you have
+#to manually poll
+poll=30
+
+
+#this specifies the name of this config, necessary in case logging is used.
+name=MyConfig
+
+# Rule base configurations
+drools.maintainTms = true
+drools.sequential = false
+drools.sequential.agenda = dynamic
+drools.removeIdentities = true
+drools.shareAlphaNodes = false
+drools.shareBetaNodes = true
+drools.compositeKeyDepth = 2
+drools.indexLeftBetaMemory = true
+drools.indexRightBetaMemory = false
+drools.assertBehaviour = identity
+drools.logicalOverride = preserve
+drools.useStaticObjenesis = true
More information about the jboss-svn-commits
mailing list