/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * *************************************************************************************** */ package com.espertech.esper.regression.view; import com.espertech.esper.client.scopetest.EPAssertionUtil; import com.espertech.esper.client.scopetest.SupportUpdateListener; import com.espertech.esper.client.util.DateTime; import com.espertech.esper.metrics.instrumentation.InstrumentationHelper; import com.espertech.esper.supportregression.bean.SupportBean; import com.espertech.esper.supportregression.util.SupportMessageAssertUtil; import junit.framework.TestCase; import com.espertech.esper.client.*; import com.espertech.esper.client.time.CurrentTimeEvent; import com.espertech.esper.client.EventBean; import com.espertech.esper.supportregression.bean.SupportBeanTimestamp; import com.espertech.esper.supportregression.client.SupportConfigFactory; public class TestViewTimeOrderAndTimeToLive extends TestCase { private EPServiceProvider epService; private SupportUpdateListener listener; public void setUp() { listener = new SupportUpdateListener(); Configuration configuration = SupportConfigFactory.getConfiguration(); epService = EPServiceProviderManager.getDefaultProvider(configuration); epService.initialize(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.startTest(epService, this.getClass(), getName());} } protected void tearDown() throws Exception { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.endTest();} listener = null; } public void testTimeToLive() { epService.getEPAdministrator().getConfiguration().addEventType(SupportBeanTimestamp.class); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0)); String[] fields = "id".split(","); String epl = "select irstream * from SupportBeanTimestamp#timetolive(timestamp)"; EPStatement stmt = epService.getEPAdministrator().createEPL(epl); stmt.addListener(listener); sendEvent("E1", 1000); EPAssertionUtil.assertProps(listener.assertOneGetNewAndReset(), fields, new Object[] {"E1"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E1"}}); sendEvent("E2", 500); EPAssertionUtil.assertProps(listener.assertOneGetNewAndReset(), fields, new Object[] {"E2"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E2"}, {"E1"}}); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(499)); assertFalse(listener.getAndClearIsInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(500)); EPAssertionUtil.assertProps(listener.assertOneGetOldAndReset(), fields, new Object[] {"E2"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E1"}}); sendEvent("E3", 200); EPAssertionUtil.assertProps(listener.assertPairGetIRAndReset(), fields, new Object[] {"E3"}, new Object[] {"E3"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E1"}}); sendEvent("E4", 1200); EPAssertionUtil.assertProps(listener.assertOneGetNewAndReset(), fields, new Object[] {"E4"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E1"}, {"E4"}}); sendEvent("E5", 1000); EPAssertionUtil.assertProps(listener.assertOneGetNewAndReset(), fields, new Object[] {"E5"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E1"}, {"E4"}, {"E5"}}); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(999)); assertFalse(listener.getAndClearIsInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(1000)); EPAssertionUtil.assertPropsPerRowAnyOrder(listener.getAndResetDataListsFlattened(), fields, null, new Object[][] {{"E1"}, {"E5"}}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, new Object[][] {{"E4"}}); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(1199)); assertFalse(listener.getAndClearIsInvoked()); epService.getEPRuntime().sendEvent(new CurrentTimeEvent(1200)); EPAssertionUtil.assertProps(listener.assertOneGetOldAndReset(), fields, new Object[] {"E4"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, null); sendEvent("E6", 1200); EPAssertionUtil.assertProps(listener.assertPairGetIRAndReset(), fields, new Object[] {"E6"}, new Object[] {"E6"}); EPAssertionUtil.assertPropsPerRowAnyOrder(stmt.iterator(), fields, null); } public void testMonthScoped() { epService.getEPAdministrator().getConfiguration().addEventType(SupportBeanTimestamp.class); sendCurrentTime("2002-02-01T09:00:00.000"); EPStatement stmt = epService.getEPAdministrator().createEPL("select rstream * from SupportBeanTimestamp#time_order(timestamp, 1 month)"); stmt.addListener(listener); sendEvent("E1", DateTime.parseDefaultMSec("2002-02-01T09:00:00.000")); sendCurrentTimeWithMinus("2002-03-01T09:00:00.000", 1); assertFalse(listener.isInvoked()); sendCurrentTime("2002-03-01T09:00:00.000"); EPAssertionUtil.assertPropsPerRow(listener.getAndResetLastNewData(), "id".split(","), new Object[][] {{"E1"}}); } public void testTimeOrderRemoveStream() { sendTimer(1000); epService.getEPAdministrator().createEPL( "insert rstream into OrderedStream select rstream * from " + SupportBeanTimestamp.class.getName() + "#time_order(timestamp, 10 sec)"); EPStatement stmtTwo = epService.getEPAdministrator().createEPL( "select * from OrderedStream"); stmtTwo.addListener(listener); // 1st event at 21 sec sendTimer(21000); sendEvent("E1", 21000); // 2nd event at 22 sec sendTimer(22000); sendEvent("E2", 22000); // 3nd event at 28 sec sendTimer(28000); sendEvent("E3", 28000); // 4th event at 30 sec, however is 27 sec (old 3 sec) sendTimer(30000); sendEvent("E4", 27000); // 5th event at 30 sec, however is 22 sec (old 8 sec) sendEvent("E5", 22000); // flush one sendTimer(30999); assertFalse(listener.isInvoked()); sendTimer(31000); assertEquals(1, listener.getLastNewData().length); assertEquals("E1", listener.getLastNewData()[0].get("id")); listener.reset(); // 6th event at 31 sec, however is 21 sec (old 10 sec) sendEvent("E6", 21000); assertEquals(1, listener.getLastNewData().length); assertEquals("E6", listener.getLastNewData()[0].get("id")); listener.reset(); // 7th event at 31 sec, however is 21.3 sec (old 9.7 sec) sendEvent("E7", 21300); // flush one sendTimer(31299); assertFalse(listener.isInvoked()); sendTimer(31300); assertEquals(1, listener.getNewDataList().size()); assertEquals(1, listener.getLastNewData().length); assertEquals("E7", listener.getLastNewData()[0].get("id")); listener.reset(); // flush two sendTimer(31999); assertFalse(listener.isInvoked()); sendTimer(32000); EventBean[] result = listener.getNewDataListFlattened(); assertEquals(2, result.length); assertEquals("E2", result[0].get("id")); assertEquals("E5", result[1].get("id")); listener.reset(); // flush one sendTimer(36999); assertFalse(listener.isInvoked()); sendTimer(37000); assertEquals(1, listener.getNewDataList().size()); assertEquals(1, listener.getLastNewData().length); assertEquals("E4", listener.getLastNewData()[0].get("id")); listener.reset(); // rather old event sendEvent("E8", 21000); assertEquals(1, listener.getLastNewData().length); assertEquals("E8", listener.getLastNewData()[0].get("id")); listener.reset(); // 9-second old event for posting at 38 sec sendEvent("E9", 28000); // flush two sendTimer(37999); assertFalse(listener.isInvoked()); sendTimer(38000); result = listener.getNewDataListFlattened(); assertEquals(2, result.length); assertEquals("E3", result[0].get("id")); assertEquals("E9", result[1].get("id")); listener.reset(); } public void testTimeOrder() { sendTimer(1000); EPStatement stmt = epService.getEPAdministrator().createEPL( "select irstream * from " + SupportBeanTimestamp.class.getName() + "#time_order(timestamp, 10 sec)"); stmt.addListener(listener); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); sendTimer(21000); assertFalse(listener.isInvoked()); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); // 1st event at 21 sec sendEvent("E1", 21000); assertEquals("E1", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}}); // 2nd event at 22 sec sendTimer(22000); sendEvent("E2", 22000); assertEquals("E2", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}, {"E2"}}); // 3nd event at 28 sec sendTimer(28000); sendEvent("E3", 28000); assertEquals("E3", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}, {"E2"}, {"E3"}}); // 4th event at 30 sec, however is 27 sec (old 3 sec) sendTimer(30000); sendEvent("E4", 27000); assertEquals("E4", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}, {"E2"}, {"E4"}, {"E3"}}); // 5th event at 30 sec, however is 22 sec (old 8 sec) sendEvent("E5", 22000); assertEquals("E5", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}, {"E2"}, {"E5"}, {"E4"}, {"E3"}}); // flush one sendTimer(30999); assertFalse(listener.isInvoked()); sendTimer(31000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E1", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}, {"E5"}, {"E4"}, {"E3"}}); // 6th event at 31 sec, however is 21 sec (old 10 sec) sendEvent("E6", 21000); assertEquals(1, listener.getNewDataList().size()); assertEquals(1, listener.getLastNewData().length); assertEquals("E6", listener.getLastNewData()[0].get("id")); assertEquals(1, listener.getLastOldData().length); assertEquals("E6", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}, {"E5"}, {"E4"}, {"E3"}}); // 7th event at 31 sec, however is 21.3 sec (old 9.7 sec) sendEvent("E7", 21300); assertEquals("E7", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E7"}, {"E2"}, {"E5"}, {"E4"}, {"E3"}}); // flush one sendTimer(31299); assertFalse(listener.isInvoked()); sendTimer(31300); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E7", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}, {"E5"}, {"E4"}, {"E3"}}); // flush two sendTimer(31999); assertFalse(listener.isInvoked()); sendTimer(32000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(2, listener.getLastOldData().length); assertEquals("E2", listener.getLastOldData()[0].get("id")); assertEquals("E5", listener.getLastOldData()[1].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E4"}, {"E3"}}); // flush one sendTimer(36999); assertFalse(listener.isInvoked()); sendTimer(37000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E4", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E3"}}); // rather old event sendEvent("E8", 21000); assertEquals(1, listener.getNewDataList().size()); assertEquals(1, listener.getLastNewData().length); assertEquals("E8", listener.getLastNewData()[0].get("id")); assertEquals(1, listener.getLastOldData().length); assertEquals("E8", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E3"}}); // 9-second old event for posting at 38 sec sendEvent("E9", 28000); assertEquals("E9", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E3"}, {"E9"}}); // flush two sendTimer(37999); assertFalse(listener.isInvoked()); sendTimer(38000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(2, listener.getLastOldData().length); assertEquals("E3", listener.getLastOldData()[0].get("id")); assertEquals("E9", listener.getLastOldData()[1].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); // new event sendEvent("E10", 38000); assertEquals("E10", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E10"}}); // flush last sendTimer(47999); assertFalse(listener.isInvoked()); sendTimer(48000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E10", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); // last, in the future sendEvent("E11", 70000); assertEquals("E11", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E11"}}); sendTimer(80000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E11", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); sendTimer(100000); assertFalse(listener.isInvoked()); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); } public void testGroupedWindow() { sendTimer(20000); EPStatement stmt = epService.getEPAdministrator().createEPL( "select irstream * from " + SupportBeanTimestamp.class.getName() + "#groupwin(groupId)#time_order(timestamp, 10 sec)"); stmt.addListener(listener); // 1st event is old sendEvent("E1", "G1", 10000); assertEquals(1, listener.getNewDataList().size()); assertEquals(1, listener.getLastNewData().length); assertEquals("E1", listener.getLastNewData()[0].get("id")); assertEquals(1, listener.getLastOldData().length); assertEquals("E1", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); // 2nd just fits sendEvent("E2", "G2", 10001); assertEquals("E2", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}}); sendEvent("E3", "G3", 20000); assertEquals("E3", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}, {"E3"}}); sendEvent("E4", "G2", 20000); assertEquals("E4", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E2"}, {"E4"}, {"E3"}}); sendTimer(20001); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E2", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E4"}, {"E3"}}); sendTimer(22000); sendEvent("E5", "G2", 19000); assertEquals("E5", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E5"}, {"E4"}, {"E3"}}); sendTimer(29000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); assertEquals("E5", listener.getLastOldData()[0].get("id")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E4"}, {"E3"}}); sendTimer(30000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(2, listener.getLastOldData().length); EPAssertionUtil.assertPropsPerRowAnyOrder(listener.getLastOldData(), "id".split(","), new Object[][] {{"E4"}, {"E3"}}); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, null); sendTimer(100000); assertFalse(listener.isInvoked()); } public void testInvalid() { SupportMessageAssertUtil.tryInvalid(epService, "select * from " + SupportBeanTimestamp.class.getName() + "#time_order(bump, 10 sec)", "Error starting statement: Error attaching view to event stream: Invalid parameter expression 0 for Time-Order view: Failed to validate view parameter expression 'bump': Property named 'bump' is not valid in any stream ["); SupportMessageAssertUtil.tryInvalid(epService, "select * from " + SupportBeanTimestamp.class.getName() + "#time_order(10 sec)", "Error starting statement: Error attaching view to event stream: Time-Order view requires the expression supplying timestamp values, and a numeric or time period parameter for interval size ["); SupportMessageAssertUtil.tryInvalid(epService, "select * from " + SupportBeanTimestamp.class.getName() + "#time_order(timestamp, abc)", "Error starting statement: Error attaching view to event stream: Invalid parameter expression 1 for Time-Order view: Failed to validate view parameter expression 'abc': Property named 'abc' is not valid in any stream (did you mean 'id'?) ["); } public void testPreviousAndPrior() { sendTimer(1000); EPStatement stmt = epService.getEPAdministrator().createEPL( "select irstream id, " + " prev(0, id) as prevIdZero, " + " prev(1, id) as prevIdOne, " + " prior(1, id) as priorIdOne," + " prevtail(0, id) as prevTailIdZero, " + " prevtail(1, id) as prevTailIdOne, " + " prevcount(id) as prevCountId, " + " prevwindow(id) as prevWindowId " + " from " + SupportBeanTimestamp.class.getName() + "#time_order(timestamp, 10 sec)"); String[] fields = new String[] {"id", "prevIdZero", "prevIdOne", "priorIdOne", "prevTailIdZero", "prevTailIdOne", "prevCountId"}; stmt.addListener(listener); sendTimer(20000); sendEvent("E1", 25000); assertEquals("E1", listener.assertOneGetNewAndReset().get("id")); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), new String[]{"id"}, new Object[][]{{"E1"}}); sendEvent("E2", 21000); EventBean theEvent = listener.assertOneGetNewAndReset(); assertEquals("E2", theEvent.get("id")); assertEquals("E2", theEvent.get("prevIdZero")); assertEquals("E1", theEvent.get("prevIdOne")); assertEquals("E1", theEvent.get("priorIdOne")); assertEquals("E1", theEvent.get("prevTailIdZero")); assertEquals("E2", theEvent.get("prevTailIdOne")); assertEquals(2L, theEvent.get("prevCountId")); EPAssertionUtil.assertEqualsExactOrder((Object[]) theEvent.get("prevWindowId"), new Object[]{"E2", "E1"}); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), fields, new Object[][]{{"E2", "E2", "E1", "E1", "E1", "E2", 2L}, {"E1", "E2", "E1", null, "E1", "E2", 2L}}); sendEvent("E3", 22000); theEvent = listener.assertOneGetNewAndReset(); assertEquals("E3", theEvent.get("id")); assertEquals("E2", theEvent.get("prevIdZero")); assertEquals("E3", theEvent.get("prevIdOne")); assertEquals("E2", theEvent.get("priorIdOne")); assertEquals("E1", theEvent.get("prevTailIdZero")); assertEquals("E3", theEvent.get("prevTailIdOne")); assertEquals(3L, theEvent.get("prevCountId")); EPAssertionUtil.assertEqualsExactOrder((Object[]) theEvent.get("prevWindowId"), new Object[]{"E2", "E3", "E1"}); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), fields, new Object[][]{{"E2", "E2", "E3", "E1", "E1", "E3", 3L}, {"E3", "E2", "E3", "E2", "E1", "E3", 3L}, {"E1", "E2", "E3", null, "E1", "E3", 3L}}); sendTimer(31000); assertNull(listener.getLastNewData()); assertEquals(1, listener.getOldDataList().size()); assertEquals(1, listener.getLastOldData().length); theEvent = listener.getLastOldData()[0]; assertEquals("E2", theEvent.get("id")); assertEquals(null, theEvent.get("prevIdZero")); assertEquals(null, theEvent.get("prevIdOne")); assertEquals("E1", theEvent.get("priorIdOne")); assertEquals(null, theEvent.get("prevTailIdZero")); assertEquals(null, theEvent.get("prevTailIdOne")); assertEquals(null, theEvent.get("prevCountId")); assertEquals(null, theEvent.get("prevWindowId")); listener.reset(); EPAssertionUtil.assertPropsPerRow(stmt.iterator(), fields, new Object[][]{{"E3", "E3", "E1", "E2", "E1", "E3", 2L}, {"E1", "E3", "E1", null, "E1", "E3", 2L}}); } private SupportBeanTimestamp sendEvent(String id, String groupId, long timestamp) { SupportBeanTimestamp theEvent = new SupportBeanTimestamp(id, groupId, timestamp); EPRuntime runtime = epService.getEPRuntime(); runtime.sendEvent(theEvent); return theEvent; } private SupportBeanTimestamp sendEvent(String id, long timestamp) { SupportBeanTimestamp theEvent = new SupportBeanTimestamp(id, timestamp); EPRuntime runtime = epService.getEPRuntime(); runtime.sendEvent(theEvent); return theEvent; } private void sendTimer(long timeInMSec) { CurrentTimeEvent theEvent = new CurrentTimeEvent(timeInMSec); EPRuntime runtime = epService.getEPRuntime(); runtime.sendEvent(theEvent); } private void sendCurrentTime(String time) { epService.getEPRuntime().sendEvent(new CurrentTimeEvent(DateTime.parseDefaultMSec(time))); } private void sendCurrentTimeWithMinus(String time, long minus) { epService.getEPRuntime().sendEvent(new CurrentTimeEvent(DateTime.parseDefaultMSec(time) - minus)); } }