Search in sources :

Example 11 with StockTick

use of org.drools.compiler.StockTick in project drools by kiegroup.

the class CepEspTest method testIdentityAssertBehaviorOnEntryPoints.

@Test(timeout = 10000)
public void testIdentityAssertBehaviorOnEntryPoints() throws IOException, ClassNotFoundException {
    StockTickInterface st1 = new StockTick(1, "RHT", 10, 10);
    StockTickInterface st2 = new StockTick(1, "RHT", 10, 10);
    StockTickInterface st3 = new StockTick(2, "RHT", 15, 20);
    final KieBaseConfiguration kbconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
    kbconf.setOption(EventProcessingOption.STREAM);
    kbconf.setOption(EqualityBehaviorOption.IDENTITY);
    final KieBase kbase1 = loadKnowledgeBase(kbconf, "test_CEP_AssertBehaviorOnEntryPoints.drl");
    final KieSession ksession = kbase1.newKieSession();
    AgendaEventListener ael1 = mock(AgendaEventListener.class);
    ksession.addEventListener(ael1);
    EntryPoint ep1 = ksession.getEntryPoint("stocktick stream");
    FactHandle fh1 = ep1.insert(st1);
    FactHandle fh1_2 = ep1.insert(st1);
    FactHandle fh2 = ep1.insert(st2);
    FactHandle fh3 = ep1.insert(st3);
    assertSame(fh1, fh1_2);
    assertNotSame(fh1, fh2);
    assertNotSame(fh1, fh3);
    assertNotSame(fh2, fh3);
    ksession.fireAllRules();
    // must have fired 3 times, one for each event identity
    verify(ael1, times(3)).afterMatchFired(any(AfterMatchFiredEvent.class));
    ksession.dispose();
}
Also used : KieBaseConfiguration(org.kie.api.KieBaseConfiguration) StockTickInterface(org.drools.compiler.StockTickInterface) StockTick(org.drools.compiler.StockTick) InternalFactHandle(org.drools.core.common.InternalFactHandle) EventFactHandle(org.drools.core.common.EventFactHandle) FactHandle(org.kie.api.runtime.rule.FactHandle) DefaultFactHandle(org.drools.core.common.DefaultFactHandle) KieBase(org.kie.api.KieBase) DefaultAgendaEventListener(org.kie.api.event.rule.DefaultAgendaEventListener) AgendaEventListener(org.kie.api.event.rule.AgendaEventListener) DebugAgendaEventListener(org.kie.api.event.rule.DebugAgendaEventListener) NamedEntryPoint(org.drools.core.common.NamedEntryPoint) EntryPoint(org.kie.api.runtime.rule.EntryPoint) KieSession(org.kie.api.runtime.KieSession) AfterMatchFiredEvent(org.kie.api.event.rule.AfterMatchFiredEvent) Test(org.junit.Test)

Example 12 with StockTick

use of org.drools.compiler.StockTick in project drools by kiegroup.

the class CepEspTest method testSerializationWithWindowLength.

@Test
public void testSerializationWithWindowLength() throws Exception {
    // DROOLS-953
    String drl = "import " + StockTick.class.getCanonicalName() + "\n" + "global java.util.List list\n" + "declare StockTick\n" + "    @role( event )\n" + "end\n" + "\n" + "rule ReportLastEvent when\n" + "    $e : StockTick() over window:length(1)\n" + "then\n" + "    list.add($e.getCompany());\n" + "end";
    KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    sessionConfig.setOption(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    KieHelper helper = new KieHelper();
    helper.addContent(drl, ResourceType.DRL);
    KieBase kbase = helper.build(EventProcessingOption.STREAM);
    KieSession ksession = kbase.newKieSession(sessionConfig, null);
    PseudoClockScheduler clock = ksession.getSessionClock();
    List<String> list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ksession.insert(new StockTick(1, "ACME", 50));
    ksession.insert(new StockTick(2, "DROO", 50));
    ksession.insert(new StockTick(3, "JBPM", 50));
    ksession.fireAllRules();
    assertEquals(1, list.size());
    assertEquals("JBPM", list.get(0));
    try {
        ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true, false);
    } catch (Exception e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
    list = new ArrayList<String>();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    System.out.println(list);
    assertEquals(0, list.size());
}
Also used : StockTick(org.drools.compiler.StockTick) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) PseudoClockScheduler(org.drools.core.time.impl.PseudoClockScheduler) IOException(java.io.IOException) ParseException(java.text.ParseException) Test(org.junit.Test)

Example 13 with StockTick

use of org.drools.compiler.StockTick in project drools by kiegroup.

the class CepEspTest method testCloudModeExpiration.

@Test(timeout = 10000)
public void testCloudModeExpiration() throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, InterruptedException {
    String str = "package org.drools.cloud\n" + "import org.drools.compiler.*\n" + "declare Event\n" + "        @role ( event )\n" + "        name : String\n" + "        value : Object\n" + "end\n" + "declare AnotherEvent\n" + "        @role ( event )\n" + "        message : String\n" + "        type : String\n" + "end\n" + "declare StockTick\n" + "        @role ( event )\n" + "end\n" + "rule \"two events\"\n" + "    when\n" + "        Event( value != null ) from entry-point X\n" + "        StockTick( company != null ) from entry-point X\n" + "    then\n" + "end";
    KieBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
    config.setOption(EventProcessingOption.CLOUD);
    KieBase kbase = loadKnowledgeBaseFromString(config, str);
    KieSession ksession = createKnowledgeSession(kbase);
    EntryPoint ep = ksession.getEntryPoint("X");
    ep.insert(new StockTick(1, "RHT", 10, 1000));
    int rulesFired = ksession.fireAllRules();
    assertEquals(0, rulesFired);
    org.kie.api.definition.type.FactType event = kbase.getFactType("org.drools.cloud", "Event");
    Object e1 = event.newInstance();
    event.set(e1, "name", "someKey");
    event.set(e1, "value", "someValue");
    ep.insert(e1);
    rulesFired = ksession.fireAllRules();
    assertEquals(1, rulesFired);
    // let some time be spent
    Thread.currentThread().sleep(1000);
    // check both events are still in memory as we are running in CLOUD mode
    assertEquals(2, ep.getFactCount());
}
Also used : KieBaseConfiguration(org.kie.api.KieBaseConfiguration) StockTick(org.drools.compiler.StockTick) KieBase(org.kie.api.KieBase) NamedEntryPoint(org.drools.core.common.NamedEntryPoint) EntryPoint(org.kie.api.runtime.rule.EntryPoint) KieSession(org.kie.api.runtime.KieSession) FactType(org.kie.api.definition.type.FactType) NamedEntryPoint(org.drools.core.common.NamedEntryPoint) EntryPoint(org.kie.api.runtime.rule.EntryPoint) Test(org.junit.Test)

Example 14 with StockTick

use of org.drools.compiler.StockTick in project drools by kiegroup.

the class CepEspTest method testRetractFromWindow.

@Test
public void testRetractFromWindow() throws Exception {
    // DROOLS-636
    String drl = "import org.drools.compiler.StockTick;\n " + "declare StockTick\n" + " @role( event )\n" + "end\n" + "rule R1 when\n" + "    $i: Integer()\n" + "    $s: StockTick( price > 10 )\n" + "then\n" + "    modify($s) { setPrice(8) };\n" + "end\n" + "rule R2 when\n" + "    $s: StockTick( price > 15 ) over window:length(1)\n" + "then\n" + "end";
    KieHelper helper = new KieHelper();
    helper.addContent(drl, ResourceType.DRL);
    KieSession ksession = helper.build(EventProcessingOption.STREAM).newKieSession();
    ksession.insert(42);
    ksession.insert(new StockTick(1L, "DROOLS", 20));
    ksession.fireAllRules();
}
Also used : StockTick(org.drools.compiler.StockTick) KieHelper(org.kie.internal.utils.KieHelper) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 15 with StockTick

use of org.drools.compiler.StockTick in project drools by kiegroup.

the class CepEspTest method testTimeRelationalOperators.

@Test(timeout = 10000)
public void testTimeRelationalOperators() throws Exception {
    // read in the source
    KieBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
    conf.setOption(EventProcessingOption.STREAM);
    final KieBase kbase = loadKnowledgeBase(conf, "test_CEP_TimeRelationalOperators.drl");
    KieSessionConfiguration sconf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    sconf.setOption(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
    KieSession wm = createKnowledgeSession(kbase, sconf);
    final PseudoClockScheduler clock = (PseudoClockScheduler) wm.getSessionClock();
    clock.setStartupTime(1000);
    final List results_coincides = new ArrayList();
    final List results_before = new ArrayList();
    final List results_after = new ArrayList();
    final List results_meets = new ArrayList();
    final List results_met_by = new ArrayList();
    final List results_overlaps = new ArrayList();
    final List results_overlapped_by = new ArrayList();
    final List results_during = new ArrayList();
    final List results_includes = new ArrayList();
    final List results_starts = new ArrayList();
    final List results_started_by = new ArrayList();
    final List results_finishes = new ArrayList();
    final List results_finished_by = new ArrayList();
    wm.setGlobal("results_coincides", results_coincides);
    wm.setGlobal("results_before", results_before);
    wm.setGlobal("results_after", results_after);
    wm.setGlobal("results_meets", results_meets);
    wm.setGlobal("results_met_by", results_met_by);
    wm.setGlobal("results_overlaps", results_overlaps);
    wm.setGlobal("results_overlapped_by", results_overlapped_by);
    wm.setGlobal("results_during", results_during);
    wm.setGlobal("results_includes", results_includes);
    wm.setGlobal("results_starts", results_starts);
    wm.setGlobal("results_started_by", results_started_by);
    wm.setGlobal("results_finishes", results_finishes);
    wm.setGlobal("results_finished_by", results_finished_by);
    StockTickInterface tick1 = new StockTick(1, "DROO", 50, System.currentTimeMillis(), 3);
    StockTickInterface tick2 = new StockTick(2, "ACME", 10, System.currentTimeMillis(), 3);
    StockTickInterface tick3 = new StockTick(3, "ACME", 10, System.currentTimeMillis(), 3);
    StockTickInterface tick4 = new StockTick(4, "DROO", 50, System.currentTimeMillis(), 5);
    StockTickInterface tick5 = new StockTick(5, "ACME", 10, System.currentTimeMillis(), 5);
    StockTickInterface tick6 = new StockTick(6, "ACME", 10, System.currentTimeMillis(), 3);
    StockTickInterface tick7 = new StockTick(7, "ACME", 10, System.currentTimeMillis(), 5);
    StockTickInterface tick8 = new StockTick(8, "ACME", 10, System.currentTimeMillis(), 3);
    InternalFactHandle handle1 = (InternalFactHandle) wm.insert(tick1);
    clock.advanceTime(4, TimeUnit.MILLISECONDS);
    InternalFactHandle handle2 = (InternalFactHandle) wm.insert(tick2);
    clock.advanceTime(4, TimeUnit.MILLISECONDS);
    InternalFactHandle handle3 = (InternalFactHandle) wm.insert(tick3);
    clock.advanceTime(4, TimeUnit.MILLISECONDS);
    InternalFactHandle handle4 = (InternalFactHandle) wm.insert(tick4);
    InternalFactHandle handle5 = (InternalFactHandle) wm.insert(tick5);
    clock.advanceTime(1, TimeUnit.MILLISECONDS);
    InternalFactHandle handle6 = (InternalFactHandle) wm.insert(tick6);
    InternalFactHandle handle7 = (InternalFactHandle) wm.insert(tick7);
    clock.advanceTime(2, TimeUnit.MILLISECONDS);
    InternalFactHandle handle8 = (InternalFactHandle) wm.insert(tick8);
    assertNotNull(handle1);
    assertNotNull(handle2);
    assertNotNull(handle3);
    assertNotNull(handle4);
    assertNotNull(handle5);
    assertNotNull(handle6);
    assertNotNull(handle7);
    assertNotNull(handle8);
    assertTrue(handle1.isEvent());
    assertTrue(handle2.isEvent());
    assertTrue(handle3.isEvent());
    assertTrue(handle4.isEvent());
    assertTrue(handle6.isEvent());
    assertTrue(handle7.isEvent());
    assertTrue(handle8.isEvent());
    // wm  = SerializationHelper.serializeObject(wm);
    wm.fireAllRules();
    assertEquals(1, results_coincides.size());
    assertEquals(tick5, results_coincides.get(0));
    assertEquals(1, results_before.size());
    assertEquals(tick2, results_before.get(0));
    assertEquals(1, results_after.size());
    assertEquals(tick3, results_after.get(0));
    assertEquals(1, results_meets.size());
    assertEquals(tick3, results_meets.get(0));
    assertEquals(1, results_met_by.size());
    assertEquals(tick2, results_met_by.get(0));
    assertEquals(1, results_met_by.size());
    assertEquals(tick2, results_met_by.get(0));
    assertEquals(1, results_overlaps.size());
    assertEquals(tick4, results_overlaps.get(0));
    assertEquals(1, results_overlapped_by.size());
    assertEquals(tick8, results_overlapped_by.get(0));
    assertEquals(1, results_during.size());
    assertEquals(tick6, results_during.get(0));
    assertEquals(1, results_includes.size());
    assertEquals(tick4, results_includes.get(0));
    assertEquals(1, results_starts.size());
    assertEquals(tick6, results_starts.get(0));
    assertEquals(1, results_started_by.size());
    assertEquals(tick7, results_started_by.get(0));
    assertEquals(1, results_finishes.size());
    assertEquals(tick8, results_finishes.get(0));
    assertEquals(1, results_finished_by.size());
    assertEquals(tick7, results_finished_by.get(0));
}
Also used : KieBaseConfiguration(org.kie.api.KieBaseConfiguration) StockTickInterface(org.drools.compiler.StockTickInterface) StockTick(org.drools.compiler.StockTick) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) InternalFactHandle(org.drools.core.common.InternalFactHandle) KieSessionConfiguration(org.kie.api.runtime.KieSessionConfiguration) PseudoClockScheduler(org.drools.core.time.impl.PseudoClockScheduler) Test(org.junit.Test)

Aggregations

StockTick (org.drools.compiler.StockTick)64 Test (org.junit.Test)61 KieSession (org.kie.api.runtime.KieSession)60 KieBase (org.kie.api.KieBase)47 KieSessionConfiguration (org.kie.api.runtime.KieSessionConfiguration)40 ArrayList (java.util.ArrayList)37 KieBaseConfiguration (org.kie.api.KieBaseConfiguration)31 EntryPoint (org.kie.api.runtime.rule.EntryPoint)27 StockTickInterface (org.drools.compiler.StockTickInterface)22 InternalFactHandle (org.drools.core.common.InternalFactHandle)16 List (java.util.List)15 SessionPseudoClock (org.kie.api.time.SessionPseudoClock)14 NamedEntryPoint (org.drools.core.common.NamedEntryPoint)13 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)13 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)11 AgendaEventListener (org.kie.api.event.rule.AgendaEventListener)11 AfterMatchFiredEvent (org.kie.api.event.rule.AfterMatchFiredEvent)9 EventFactHandle (org.drools.core.common.EventFactHandle)8 IOException (java.io.IOException)7 ParseException (java.text.ParseException)7