@Test public void testMultipleTimers() throws Exception { Reader source = new StringReader( SessionPseudoClock clock = ( SessionPseudoClock) session.getSessionClock(); clock.advanceTime( 300, TimeUnit.MILLISECONDS ); assertEquals(0, myList.size()); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(2, ((InternalProcessRuntime) ((InternalWorkingMemory) session).getProcessRuntime()).getTimerManager().getTimers().size()); clock = ( SessionPseudoClock) session.getSessionClock(); clock.advanceTime( 500, TimeUnit.MILLISECONDS ); assertEquals(1, myList.size()); assertEquals("Executing timer2", myList.get(0)); clock.advanceTime( 500, TimeUnit.MILLISECONDS ); assertEquals(2, myList.size());
private void advanceTime(long millis) { SessionPseudoClock pseudoClock = kieSession.getSessionClock(); pseudoClock.advanceTime(millis, TimeUnit.MILLISECONDS); } }
@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 test() { ksession.getCalendars().set("tuesday", TUESDAY); clock.advanceTime(4, TimeUnit.DAYS); // README now it is set to monday (test fails with NPE), when is set to tuesday (rule should fire) then test works ksession.fireAllRules(); }
@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 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); } }
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)); } } }
@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(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()); }
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)); }
@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); } }
@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 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
@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()); }
clock.advanceTime( 60, TimeUnit.SECONDS ); ksession.fireAllRules(); assertEquals( 1, results.size() ); clock.advanceTime( 5, TimeUnit.SECONDS ); ksession.fireAllRules(); assertEquals( 1, results.size() ); ksession.insert( new StockTick( seq++, clock.advanceTime( 5, TimeUnit.SECONDS ); ksession.fireAllRules(); assertEquals( 1, results.size() ); clock.advanceTime( 10, clock.advanceTime( 10, clock.advanceTime( 10, clock.advanceTime( 10, clock.advanceTime( 60,
@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 public void testMarshallWithTimedRule() { assertEquals( 1, ksession.getFactCount() ); ksession.fireAllRules(); assertEquals( 2, ksession.getFactCount() ); SessionPseudoClock clock = ksession.getSessionClock(); clock.advanceTime( 4, TimeUnit.SECONDS ); assertEquals( 2, ksession.getFactCount() ); ksession.fireAllRules(); assertEquals( 2, ksession.getFactCount() ); clock = ksession.getSessionClock(); clock.advanceTime( 4, TimeUnit.SECONDS ); assertEquals( 2, ksession.getFactCount() ); ksession.fireAllRules(); assertEquals( 0, ksession.getFactCount() );