public void testCustomRuleBaseConfiguration() throws Exception { final File dir = RuleBaseAssemblerTest.getTempDirectory(); 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); String path = p1f.getPath(); Properties props = new Properties(); 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()); // Pass in a RuleBaseConfiguration and make sure the RuleBase was created with it conf = new RuleBaseConfiguration(); conf.setSequential(true); agent = RuleAgent.newRuleAgent(props, conf); conf = ((InternalRuleBase) agent.getRuleBase()).getConfiguration(); assertEquals(true, conf.isSequential()); }
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); 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 testFiles() throws Exception { File dir = RuleBaseAssemblerTest.getTempDirectory(); 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); String path = dir.getPath() + "/" + "p1.pkg " + dir.getPath() + "/" + "p2.pkg"; Properties props = new Properties(); props.setProperty("file", path); RuleAgent ag = RuleAgent.newRuleAgent(props); RuleBase rb = ag.getRuleBase(); assertNotNull(rb); assertEquals(2, rb.getPackages().length); assertFalse(ag.isPolling()); props.setProperty("poll", "1"); ag = RuleAgent.newRuleAgent(props); assertTrue(ag.isPolling()); ag.stopPolling(); assertFalse(ag.isPolling()); }
public void testDirectory() throws Exception { File dir = RuleBaseAssemblerTest.getTempDirectory(); 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()); ojunk.flush(); ojunk.close(); RuleBaseAssemblerTest.writePackage(p1, p1f); Properties props = new Properties(); props.setProperty(RuleAgent.DIRECTORY, dir.getPath()); props.setProperty(RuleAgent.CONFIG_NAME, "goo"); RuleAgent ag = RuleAgent.newRuleAgent(props); ag.refreshRuleBase(); RuleBase rb = ag.getRuleBase(); assertNotNull(rb); // assertEquals(1, rb.getPackages().length); }
public void testPollingFilesRuleBaseUpdate() throws Exception { // RuleBaseAssemblerTest.clearTempDirectory(); final File dir = RuleBaseAssemblerTest.getTempDirectory(); 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); String path = p1f.getPath(); Properties props = new Properties(); props.setProperty("file", path); RuleAgent ag = RuleAgent.newRuleAgent(props); RuleBase rb = ag.getRuleBase(); assertEquals(1, rb.getPackages().length); assertEquals(0, rb.getPackages()[0].getGlobals().size()); p1.addGlobal("goo", String.class); Thread.sleep(1000); RuleBaseAssemblerTest.writePackage(p1, p1f); RuleBase rb_ = ag.getRuleBase(); 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); 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"); Thread.sleep(1000); 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()); ag.refreshRuleBase(); RuleBase rb3 = ag.getRuleBase(); assertSame(rb3, rb2); 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()); }