protected long getCurrentTime() { if (clock != null) { return clock.getCurrentTime(); } else { return System.currentTimeMillis(); } }
private void advanceTime(long millis) { SessionPseudoClock pseudoClock = kieSession.getSessionClock(); pseudoClock.advanceTime(millis, TimeUnit.MILLISECONDS); } }
clock.advanceTime( 300, TimeUnit.MILLISECONDS ); clock.advanceTime( 500, TimeUnit.MILLISECONDS ); assertEquals(1, myList.size()); assertEquals("Executing timer2", myList.get(0)); clock.advanceTime( 500, TimeUnit.MILLISECONDS ); assertEquals(2, myList.size());
public Date hasNextFireTime() { Date date = orig.hasNextFireTime(); if (date == null) { return null; } long then = date.getTime(); long now = kruntime.getSessionClock().getCurrentTime(); // overdue timer if (then < now) { return new Date((now + OVERDUE_DELAY)); } else { return orig.hasNextFireTime(); } }
private void advanceTime(long amount, TimeUnit unit) throws InterruptedException { if (kieSession.getSessionClock() instanceof SessionPseudoClock) { SessionPseudoClock clock = kieSession.getSessionClock(); clock.advanceTime(amount, unit); } else { Thread.sleep(TimeUnit.MILLISECONDS.convert(amount, unit)); } } }
c.setTimeInMillis(this.clock.getCurrentTime());
private void populateSessionWithStocks() { final SessionPseudoClock clock = statefulSession.getSessionClock(); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST1", 0d)); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST2", 1d)); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST3", 0d)); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST4", 0d)); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST5", 0d)); clock.advanceTime(1, TimeUnit.SECONDS); statefulSession.insert(stockFactory.createStock("ST6", 1d)); }
new Date(ctx.getKnowledgeRuntime().<SessionClock> getSessionClock().getCurrentTime()));
@Test public void testDeclaredTimeWindowInRule() throws InterruptedException { final long results[] = new long[] { 1, 2, 3, 4, 5, 5, 5, 5, 5, 5 }; EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); List<Long> result = new ArrayList<Long>(); ksession.setGlobal("result", result); TestEvent event; for (int i = 0; i < 10; i++) { event = new TestEvent(null, "timeDec", null); entryPoint.insert(event); ksession.fireAllRules(); assertEquals(results[i], result.get(result.size() - 1).longValue()); clock.advanceTime(10, TimeUnit.MILLISECONDS); } }
kruntime.startOperation(); ctx.getTimer().setLastTriggered( new Date(ctx.getKnowledgeRuntime().<SessionClock> getSessionClock().getCurrentTime()));
@Test(timeout = 10000L) public void withResultTest() { secondEntryPoint.insert(new TestEvent("minusOne")); clock.advanceTime(5, TimeUnit.SECONDS); firstEntryPoint.insert(new TestEvent("zero")); secondEntryPoint.insert(new TestEvent("one")); clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("two")); clock.advanceTime(5, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("three")); QueryResults results = ksession.getQueryResults("ZeroToNineteenSeconds"); assertEquals(1, results.size()); }
public void deserialize(MarshallerReaderContext inCtx, Timer timer) throws ClassNotFoundException { JBPMMessages.ProcessTimer ptimer = timer.getExtension(JBPMMessages.procTimer); TimerService ts = inCtx.wm.getTimerService(); long processInstanceId = ptimer.getTimer().getProcessInstanceId(); Trigger trigger = ProtobufInputMarshaller.readTrigger(inCtx, ptimer.getTrigger()); TimerInstance timerInstance = ProtobufProcessMarshaller.readTimer(inCtx, ptimer.getTimer()); TimerManager tm = ((InternalProcessRuntime) inCtx.wm.getProcessRuntime()).getTimerManager(); // check if the timer instance is not already registered to avoid duplicated timers if (!tm.getTimerMap().containsKey(timerInstance.getId())) { ProcessJobContext pctx = new ProcessJobContext(timerInstance, trigger, processInstanceId, inCtx.wm.getKnowledgeRuntime(), false); Date date = trigger.hasNextFireTime(); if (date != null) { long then = date.getTime(); long now = pctx.getKnowledgeRuntime().getSessionClock().getCurrentTime(); // overdue timer if (then < now) { trigger = new OverdueTrigger(trigger, pctx.getKnowledgeRuntime()); } } JobHandle jobHandle = ts.scheduleJob(processJob, pctx, trigger); timerInstance.setJobHandle(jobHandle); pctx.setJobHandle(jobHandle); tm.getTimerMap().put(timerInstance.getId(), timerInstance); } } }
@Test public void withResultTest() { secondEntryPoint.insert(new TestEvent("minusOne")); clock.advanceTime(5, TimeUnit.SECONDS); firstEntryPoint.insert(new TestEvent("zero")); secondEntryPoint.insert(new TestEvent("one")); clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("two")); clock.advanceTime(5, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("three")); QueryResults results = ksession.getQueryResults("ZeroToNineteenSeconds"); assertEquals(1, results.size()); }
@Test public void withNoResultTest() { secondEntryPoint.insert(new TestEvent("minusOne")); clock.advanceTime(5, TimeUnit.SECONDS); firstEntryPoint.insert(new TestEvent("zero")); secondEntryPoint.insert(new TestEvent("one")); clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("two")); // the following expires event "zero" and "one", causing the query to no longer match clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("three")); QueryResults results = ksession.getQueryResults("ZeroToNineteenSeconds"); assertEquals(0, results.size()); }
@Test(timeout = 10000L) public void withNoResultTest() { secondEntryPoint.insert(new TestEvent("minusOne")); clock.advanceTime(5, TimeUnit.SECONDS); firstEntryPoint.insert(new TestEvent("zero")); secondEntryPoint.insert(new TestEvent("one")); clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("two")); // the following expires event "zero" and "one", causing the query to no longer match clock.advanceTime(10, TimeUnit.SECONDS); secondEntryPoint.insert(new TestEvent("three")); QueryResults results = ksession.getQueryResults("ZeroToNineteenSeconds"); assertEquals(0, results.size()); }
@Test public void withResultOfSize0Test() { prepare1(); clock.advanceTime(1, TimeUnit.SECONDS); ksession.insert(new SolicitFirePojo()); int fired = ksession.fireAllRules(); assertEquals(1, fired); assertEquals(1, myGlobal.size()); assertEquals(0, ((QueryResults) myGlobal.get(0)).size()); }
@Test public void testTimeWindow() throws InterruptedException { EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); final long results[] = new long[] { 1, 2, 3, 3, 3 }; TestEvent event; for (int i = 0; i < 5; i++) { event = new TestEvent(null, "time", null); entryPoint.insert(event); assertEquals(results[i], ksession.getQueryResults("TestTimeWindow") .iterator().next().get("$eventCount")); clock.advanceTime(100, TimeUnit.MILLISECONDS); } }
@Test public void withResultOfSize1Test() { prepare1(); clock.advanceTime(1, TimeUnit.SECONDS); ksession.insert(new QueryItemPojo()); ksession.insert(new SolicitFirePojo()); int fired = ksession.fireAllRules(); assertEquals(1, fired); assertEquals(1, myGlobal.size()); assertEquals(1, ((QueryResults) myGlobal.get(0)).size()); } @Test
@Test public void testDeclaredTimeWindowInQuery() throws InterruptedException { final long results[] = new long[] { 1, 2, 3, 4, 5, 5, 5, 5, 5, 5 }; EntryPoint entryPoint = ksession.getEntryPoint("EventStream"); TestEvent event; for (int i = 0; i < 10; i++) { event = new TestEvent(null, "timeDec", null); entryPoint.insert(event); assertEquals(results[i], ksession.getQueryResults("TestDeclaredTimeWindow") .iterator().next().get("$eventCount")); clock.advanceTime(10, TimeUnit.MILLISECONDS); } }
@Test public void withResultOfSize1AnotherTest() { prepare1(); clock.advanceTime(1, TimeUnit.SECONDS); ksession.insert(new SolicitFirePojo()); ksession.insert(new QueryItemPojo()); int fired = ksession.fireAllRules(); assertEquals(1, fired); assertEquals(1, myGlobal.size()); assertEquals(1, ((QueryResults) myGlobal.get(0)).size()); } @Test