/* *************************************************************************************** * 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.resultset; import com.espertech.esper.client.EPServiceProvider; import com.espertech.esper.client.EPServiceProviderIsolated; import com.espertech.esper.client.EPStatement; import com.espertech.esper.client.scopetest.SupportUpdateListener; import com.espertech.esper.client.time.CurrentTimeEvent; import com.espertech.esper.supportregression.bean.SupportBean; import com.espertech.esper.supportregression.util.SupportEngineFactory; import junit.framework.TestCase; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Map; import java.util.concurrent.TimeUnit; public class TestOutputLimitMicrosecondResolution extends TestCase { private Map<TimeUnit, EPServiceProvider> epServices; public void setUp() { epServices = SupportEngineFactory.setupEnginesByTimeUnit(); } public void tearDown() { epServices = null; } public void testMicrosecond() { for (EPServiceProvider epService : epServices.values()) { epService.getEPAdministrator().getConfiguration().addEventType(SupportBean.class); } runAssertionOutputLimit(epServices.get(TimeUnit.MILLISECONDS), 0, "1", 1000, 1000); runAssertionOutputLimit(epServices.get(TimeUnit.MICROSECONDS), 0, "1", 1000000, 1000000); runAssertionOutputLimit(epServices.get(TimeUnit.MILLISECONDS), 789123456789L, "0.1", 789123456789L + 100, 100); runAssertionOutputLimit(epServices.get(TimeUnit.MICROSECONDS), 789123456789L, "0.1", 789123456789L + 100000, 100000); } private void runAssertionOutputLimit(EPServiceProvider epService, long startTime, String size, long flipTime, long repeatTime) { EPServiceProviderIsolated isolated = epService.getEPServiceIsolated("isolated"); isolated.getEPRuntime().sendEvent(new CurrentTimeEvent(startTime)); SupportUpdateListener listener = new SupportUpdateListener(); EPStatement stmt = isolated.getEPAdministrator().createEPL("select * from SupportBean output every " + size + " seconds", "s0", null); stmt.addListener(listener); isolated.getEPRuntime().sendEvent(new SupportBean("E1", 10)); isolated.getEPRuntime().sendEvent(new CurrentTimeEvent(flipTime - 1)); assertFalse(listener.isInvoked()); isolated.getEPRuntime().sendEvent(new CurrentTimeEvent(flipTime)); assertTrue(listener.getIsInvokedAndReset()); isolated.getEPRuntime().sendEvent(new SupportBean("E2", 10)); isolated.getEPRuntime().sendEvent(new CurrentTimeEvent(repeatTime + flipTime - 1)); assertFalse(listener.isInvoked()); isolated.getEPRuntime().sendEvent(new CurrentTimeEvent(repeatTime + flipTime)); assertTrue(listener.getIsInvokedAndReset()); isolated.destroy(); } }