/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.agent; import java.io.File; import junit.framework.TestCase; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; 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.drools.io.ResourceChangeScannerConfiguration; import org.drools.io.ResourceFactory; import org.drools.io.impl.ClassPathResource; import org.drools.io.impl.ResourceChangeNotifierImpl; import org.drools.io.impl.ResourceChangeScannerImpl; public class CompilerIndependenceTest extends TestCase { public void testFixme() { } // FIXME // private final Object lock = new Object(); // private volatile boolean kbaseUpdated; // // @Override // protected void setUp() throws Exception { // ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset(); // ResourceFactory.getResourceChangeNotifierService().start(); // ResourceFactory.getResourceChangeScannerService().start(); // } // // @Override // protected void tearDown() throws Exception { // ResourceFactory.getResourceChangeNotifierService().stop(); // ResourceFactory.getResourceChangeScannerService().stop(); // ((ResourceChangeNotifierImpl) ResourceFactory.getResourceChangeNotifierService()).reset(); // ((ResourceChangeScannerImpl) ResourceFactory.getResourceChangeScannerService()).reset(); // } // // public void testDRL() throws Exception { // // // 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 http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' >"; // xml += " <add> "; // xml += " <resource source='classpath:rules.drl' type='DRL' />"; // xml += " </add> "; // xml += "</change-set>"; // // // KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); // KnowledgeAgent kagent = this.createKAgent(kbase,true); // // try{ // kagent.applyChangeSet(ResourceFactory.newByteArrayResource(xml.getBytes())); // // fail("The agent shouldn't be able to compile the resource!"); // } catch(IllegalArgumentException ex){ // // } // // kagent.dispose(); // // } // // public void testPKG() throws Exception { // // // 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 http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' >"; // xml += " <add> "; // xml += " <resource source='classpath:pkg/mortgages.pkg' type='PKG' />"; // xml += " </add> "; // xml += "</change-set>"; // // // KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); // KnowledgeAgent kagent = this.createKAgent(kbase,true); // // kagent.applyChangeSet(ResourceFactory.newByteArrayResource(xml.getBytes())); // this.kbaseUpdated = false; // // assertEquals(1, kagent.getKnowledgeBase().getKnowledgePackages().size()); // // Thread.sleep(2000); // // ClassPathResource cpResource = (ClassPathResource)ResourceFactory.newClassPathResource("pkg/mortgages.pkg"); // // File f = new File(cpResource.getURL().getFile()); // assertTrue(f.exists()); // // long t = System.currentTimeMillis() ; // int count = 0; // boolean success = false; // while ( !(success = f.setLastModified(t)) && count < 10 ) { // count++; // System.gc(); // Thread.sleep( 100 ); // } // // if ( !success) { // fail( "Unable to setLastModified" ); // } // // this.waitUntilKBaseUpdate(); // assertEquals(1, kagent.getKnowledgeBase().getKnowledgePackages().size()); // // kagent.dispose(); // // } // // private KnowledgeAgent createKAgent(KnowledgeBase kbase, boolean newInstance) { // 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", ""+newInstance); // // // 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; // } // } }