package eu.play_project.dcep; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.HashMap; import org.apache.commons.io.IOUtils; import org.apache.jena.riot.RDFDataMgr; import org.apache.jena.riot.RDFLanguages; import org.etsi.uri.gcm.util.GCM; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.objectweb.fractal.adl.ADLException; import org.objectweb.fractal.adl.Factory; import org.objectweb.fractal.api.Component; import org.objectweb.fractal.api.NoSuchInterfaceException; import org.objectweb.fractal.api.control.IllegalLifeCycleException; import org.objectweb.proactive.ActiveObjectCreationException; import org.objectweb.proactive.api.PAActiveObject; import org.objectweb.proactive.core.component.adl.FactoryFactory; import org.objectweb.proactive.core.config.CentralPAPropertyRepository; import org.objectweb.proactive.core.node.NodeException; import org.ontoware.rdf2go.impl.jena.ModelImplJena; import org.ontoware.rdf2go.model.node.impl.URIImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.hp.hpl.jena.rdf.model.Model; import eu.play_project.dcep.distributedetalis.api.DistributedEtalisTestApi; import eu.play_project.dcep.distributedetalis.utils.EventCloudHelpers; import eu.play_project.play_platformservices.api.QueryDispatchApi; import eu.play_project.play_platformservices.api.QueryDispatchException; public class CommonsPatternTest2 { public static QueryDispatchApi queryDispatchApi; public static DistributedEtalisTestApi testApi; boolean start = false; static Component root; public static boolean test; private final Logger logger = LoggerFactory.getLogger(CommonsPatternTest2.class); @Test public void testThreeMissedCalls() throws QueryDispatchException, IOException { String queryString; // Get query. queryString = IOUtils.toString(this.getClass().getClassLoader().getResourceAsStream("patterns/play-bdpl-telco-orange-eval-v3-full.eprq")); // Compile query queryDispatchApi.registerQuery("example1", queryString); //Subscribe to get complex events. SimplePublishApiSubscriber subscriber = null; try { subscriber = PAActiveObject.newActive(SimplePublishApiSubscriber.class, new Object[] {}); } catch (ActiveObjectCreationException e) { e.printStackTrace(); } catch (NodeException e) { e.printStackTrace(); } testApi.attach(subscriber); logger.info("Publish events"); for (int i = 0; i < 5; i++) { Model call0 = RDFDataMgr.loadModel("events/call0.nq", RDFLanguages.NQ); testApi.publish(EventCloudHelpers.toCompoundEvent(new ModelImplJena(new URIImpl(call0.getGraph().toString()), call0))); Model call1 = RDFDataMgr.loadModel("events/call1.nq", RDFLanguages.NQ); testApi.publish(EventCloudHelpers.toCompoundEvent(new ModelImplJena(new URIImpl(call1.getGraph().toString()), call1))); Model call2 = RDFDataMgr.loadModel("events/call2.nq", RDFLanguages.NQ); testApi.publish(EventCloudHelpers.toCompoundEvent(new ModelImplJena(new URIImpl(call2.getGraph().toString()), call2))); } // Wait delay(); assertTrue(subscriber.getComplexEvents().size()==1); } @Before public void instantiatePlayPlatform() throws IllegalLifeCycleException, NoSuchInterfaceException, ADLException { CentralPAPropertyRepository.JAVA_SECURITY_POLICY .setValue("proactive.java.policy"); CentralPAPropertyRepository.GCM_PROVIDER .setValue("org.objectweb.proactive.core.component.Fractive"); Factory factory = FactoryFactory.getFactory(); HashMap<String, Object> context = new HashMap<String, Object>(); root = (Component) factory.newComponent("PsDcepComponent", context); GCM.getGCMLifeCycleController(root).startFc(); queryDispatchApi = ((QueryDispatchApi) root.getFcInterface(QueryDispatchApi.class.getSimpleName())); testApi = (DistributedEtalisTestApi) root.getFcInterface(DistributedEtalisTestApi.class.getSimpleName()); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } @After public void terminatPlayPlatform() { // Stop and terminate GCM Components try { GCM.getGCMLifeCycleController(root).stopFc(); // Terminate all subcomponents. for(Component subcomponent : GCM.getContentController(root).getFcSubComponents()){ GCM.getGCMLifeCycleController(subcomponent).terminateGCMComponent(); } } catch (IllegalLifeCycleException e) { e.printStackTrace(); } catch (NoSuchInterfaceException e) { e.printStackTrace(); } } private void delay(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } }