private void RunAssertionAliasesAggregationOM(EPServiceProvider epService) { var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("symbol", "volume").Add(Expressions.Sum("price"), "mySum"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportMarketDataBean).FullName).AddView(View.Create("length", Expressions.Constant(20)))); model.GroupByClause = GroupByClause.Create("symbol"); model.OutputLimitClause = OutputLimitClause.Create(6); model.OrderByClause = OrderByClause.Create(Expressions.Sum("price")).Add("symbol", false); model = (EPStatementObjectModel)SerializableObjectCopier.Copy(epService.Container, model); string statementString = "select symbol, volume, sum(price) as mySum from " + typeof(SupportMarketDataBean).FullName + "#length(20) " + "group by symbol " + "output every 6 events " + "order by sum(price), symbol"; Assert.AreEqual(statementString, model.ToEPL()); var testListener = new SupportUpdateListener(); EPStatement statement = epService.EPAdministrator.Create(model); statement.Events += testListener.Update; TryAssertionDefault(epService, testListener); statement.Dispose(); }
private void RunAssertionOutputCrontabAtOMCreate(EPServiceProvider epService) { // every 15 minutes 8am to 5pm SendTimeEvent(epService, 1, 17, 10, 0, 0); string expression = "select * from MarketData#lastevent output at (*/15, 8:17, *, *, *)"; var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.CreateWildcard(); model.FromClause = FromClause.Create(FilterStream.Create("MarketData") .AddView("lastevent")); var crontabParams = new Expression[] { Expressions.CrontabScheduleFrequency(15), Expressions.CrontabScheduleRange(8, 17), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard() }; model.OutputLimitClause = OutputLimitClause.CreateSchedule(crontabParams); string epl = model.ToEPL(); Assert.AreEqual(expression, epl); EPStatement stmt = epService.EPAdministrator.Create(model); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; TryAssertionCrontab(epService, 1, stmt, listener); }
public void Run(RegressionEnvironment env) { var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("Symbol", "Volume").Add(Expressions.Sum("Price"), "mySum"); model.FromClause = FromClause.Create( FilterStream.Create(typeof(SupportMarketDataBean).Name) .AddView(View.Create("length", Expressions.Constant(20)))); model.GroupByClause = GroupByClause.Create("Symbol"); model.OutputLimitClause = OutputLimitClause.Create(6); model.OrderByClause = OrderByClause.Create(Expressions.Sum("Price")).Add("Symbol", false); model = env.CopyMayFail(model); var epl = "select Symbol, Volume, sum(Price) as mySum from " + "SupportMarketDataBean#length(20) " + "group by Symbol " + "output every 6 events " + "order by sum(Price), Symbol"; Assert.AreEqual(epl, model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); env.CompileDeploy(model).AddListener("s0"); TryAssertionDefault(env); env.UndeployAll(); }
public void Run(RegressionEnvironment env) { // every 15 minutes 8am to 5pm SendTimeEvent(env, 1, 17, 10, 0, 0); var expression = "select * from SupportMarketDataBean#lastevent output at (*/15, 8:17, *, *, *)"; var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.CreateWildcard(); model.FromClause = FromClause.Create(FilterStream.Create("SupportMarketDataBean").AddView("lastevent")); Expression[] crontabParams = { Expressions.CrontabScheduleFrequency(15), Expressions.CrontabScheduleRange(8, 17), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard() }; model.OutputLimitClause = OutputLimitClause.CreateSchedule(crontabParams); var epl = model.ToEPL(); Assert.AreEqual(expression, epl); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); env.CompileDeploy(model).AddListener("s0"); TryAssertionCrontab(env, 1); }
public void Run(RegressionEnvironment env) { var milestone = new AtomicLong(); SendTimer(env, 0); var stmtText = "select TheString from SupportBean#keepall output after " + "0.0d days " + "0.0d hours " + "0.0d minutes " + "20.0d seconds " + "0.0d milliseconds " + "every " + "0.0d days " + "0.0d hours " + "0.0d minutes " + "5.0d seconds " + "0.0d milliseconds"; env.CompileDeploy("@Name('s0') " + stmtText).AddListener("s0"); TryAssertionEveryPolicy(env, milestone); env.UndeployAll(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("keepall")); model.OutputLimitClause = OutputLimitClause.Create(Expressions.TimePeriod(0, 0, 0, 5, 0)) .WithAfterTimePeriodExpression(Expressions.TimePeriod(0, 0, 0, 20, 0)); Assert.AreEqual(stmtText, model.ToEPL()); }
public void TestOutputCrontabAtOMCreate() { // every 15 minutes 8am to 5pm SendTimeEvent(1, 17, 10, 0, 0); var expression = "select * from MarketData.std:lastevent() output at (*/15, 8:17, *, *, *)"; var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.CreateWildcard(); model.FromClause = FromClause.Create(FilterStream.Create("MarketData").AddView("std", "lastevent")); var crontabParams = new Expression[] { Expressions.CrontabScheduleFrequency(15), Expressions.CrontabScheduleRange(8, 17), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard(), Expressions.CrontabScheduleWildcard() }; model.OutputLimitClause = OutputLimitClause.CreateSchedule(crontabParams); var epl = model.ToEPL(); Assert.AreEqual(expression, epl); var stmt = _epService.EPAdministrator.Create(model); stmt.AddListener(_listener); RunAssertionCrontab(1, stmt); }
public void TestAliasesAggregationOM() { var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("Symbol", "Volume").Add(Expressions.Sum("Price"), "mySum"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportMarketDataBean).FullName).AddView(View.Create("length", Expressions.Constant(20)))); model.GroupByClause = GroupByClause.Create("Symbol"); model.OutputLimitClause = OutputLimitClause.Create(6); model.OrderByClause = OrderByClause.Create(Expressions.Sum("Price")).Add("Symbol", false); model = (EPStatementObjectModel)SerializableObjectCopier.Copy(model); var statementString = "select Symbol, Volume, sum(Price) as mySum from " + typeof(SupportMarketDataBean).FullName + "#length(20) " + "group by Symbol " + "output every 6 events " + "order by sum(Price), Symbol"; Assert.AreEqual(statementString, model.ToEPL()); _testListener = new SupportUpdateListener(); var statement = _epService.EPAdministrator.Create(model); statement.AddListener(_testListener); RunAssertionDefault(); }
/// <summary> /// Limit the output of the query. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="esperQuery">The esper query.</param> /// <param name="selector">The selector.</param> /// <param name="frequency">The frequency.</param> /// <returns></returns> public static EsperQuery <T> OutputLimit <T>(this EsperQuery <T> esperQuery, OutputLimitSelector selector, double frequency) { var parentObjectModel = esperQuery.ObjectModel; var deriveObjectModel = parentObjectModel.ShallowCopy(); deriveObjectModel.OutputLimitClause = OutputLimitClause.Create(selector, frequency); return(new EsperQuery <T>(esperQuery.ServiceProvider, deriveObjectModel)); }
/// <summary> /// Limit the output of the query. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="esperQuery">The esper query.</param> /// <param name="selector">The selector.</param> /// <param name="timePeriodExpression">The time period expression.</param> /// <returns></returns> public static EsperQuery <T> OutputLimit <T>(this EsperQuery <T> esperQuery, OutputLimitSelector selector, TimePeriodExpression timePeriodExpression) { var parentObjectModel = esperQuery.ObjectModel; var deriveObjectModel = parentObjectModel.ShallowCopy(); deriveObjectModel.OutputLimitClause = OutputLimitClause.Create(selector, timePeriodExpression); return(new EsperQuery <T>(esperQuery.ServiceProvider, deriveObjectModel)); }
/// <summary> /// Limit the output of the query. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="esperQuery">The esper query.</param> /// <param name="frequencyVariable">is the variable name providing output rate frequency values</param> /// <returns>clause</returns> public static EsperQuery <T> OutputLimit <T>(this EsperQuery <T> esperQuery, String frequencyVariable) { var parentObjectModel = esperQuery.ObjectModel; var deriveObjectModel = parentObjectModel.ShallowCopy(); deriveObjectModel.OutputLimitClause = OutputLimitClause.Create(frequencyVariable); return(new EsperQuery <T>(esperQuery.ServiceProvider, deriveObjectModel)); }
/// <summary> /// Limit the output of the query. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="esperQuery">The esper query.</param> /// <param name="scheduleParameters">the crontab schedule parameters</param> /// <returns>clause</returns> public static EsperQuery <T> OutputLimit <T>(this EsperQuery <T> esperQuery, client.soda.Expression[] scheduleParameters) { var parentObjectModel = esperQuery.ObjectModel; var deriveObjectModel = parentObjectModel.ShallowCopy(); deriveObjectModel.OutputLimitClause = OutputLimitClause.CreateSchedule(scheduleParameters); return(new EsperQuery <T>(esperQuery.ServiceProvider, deriveObjectModel)); }
private void RunAssertionDirectNumberOfEvents(EPServiceProvider epService) { string[] fields = "TheString".Split(','); string stmtText = "select TheString from SupportBean#keepall output after 3 events"; EPStatement stmt = epService.EPAdministrator.CreateEPL(stmtText); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; SendEvent(epService, "E1"); SendEvent(epService, "E2"); SendEvent(epService, "E3"); Assert.IsFalse(listener.IsInvoked); SendEvent(epService, "E4"); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E4" }); SendEvent(epService, "E5"); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E5" }); stmt.Dispose(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("keepall")); model.OutputLimitClause = OutputLimitClause.CreateAfter(3); Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL()); stmt = epService.EPAdministrator.Create(model); stmt.Events += listener.Update; SendEvent(epService, "E1"); SendEvent(epService, "E2"); SendEvent(epService, "E3"); Assert.IsFalse(listener.IsInvoked); SendEvent(epService, "E4"); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E4" }); SendEvent(epService, "E5"); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E5" }); model = epService.EPAdministrator.CompileEPL("select TheString from SupportBean#keepall output after 3 events"); Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL()); stmt.Dispose(); }
public void TestEveryPolicy() { SendTimer(0); var stmtText = "select TheString from SupportBean.win:keepall() output after 0 days 0 hours 0 minutes 20 seconds 0 milliseconds every 0 days 0 hours 0 minutes 5 seconds 0 milliseconds"; var stmt = _epService.EPAdministrator.CreateEPL(stmtText); stmt.AddListener(_listener); RunAssertion(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("win", "keepall")); model.OutputLimitClause = OutputLimitClause.Create(Expressions.TimePeriod(0, 0, 0, 5, 0)).SetAfterTimePeriodExpression(Expressions.TimePeriod(0, 0, 0, 20, 0)); Assert.AreEqual(stmtText, model.ToEPL()); }
public void TestDirectNumberOfEvents() { String stmtText = "select TheString from SupportBean.win:keepall() output after 3 events"; EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText); stmt.Events += _listener.Update; SendEvent("E1"); SendEvent("E2"); SendEvent("E3"); Assert.IsFalse(_listener.IsInvoked); SendEvent("E4"); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), _fields, new Object[] { "E4" }); SendEvent("E5"); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), _fields, new Object[] { "E5" }); stmt.Dispose(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("win", "keepall")); model.OutputLimitClause = OutputLimitClause.CreateAfter(3); Assert.AreEqual("select TheString from SupportBean.win:keepall() output after 3 events ", model.ToEPL()); stmt = _epService.EPAdministrator.Create(model); stmt.Events += _listener.Update; SendEvent("E1"); SendEvent("E2"); SendEvent("E3"); Assert.IsFalse(_listener.IsInvoked); SendEvent("E4"); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), _fields, new Object[] { "E4" }); SendEvent("E5"); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), _fields, new Object[] { "E5" }); model = _epService.EPAdministrator.CompileEPL( "select TheString from SupportBean.win:keepall() output after 3 events"); Assert.AreEqual("select TheString from SupportBean.win:keepall() output after 3 events ", model.ToEPL()); }
public void TestOutputRateEventsAll_OM() { _epService.EPAdministrator.Configuration.AddVariable("var_output_limit", typeof(long), "3"); EPStatementObjectModel model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create().Add(Expressions.CountStar(), "cnt"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean).FullName)); model.OutputLimitClause = OutputLimitClause.Create(OutputLimitSelector.LAST, "var_output_limit"); String stmtTextSelect = "select count(*) as cnt from " + typeof(SupportBean).FullName + " output last every var_output_limit events"; EPStatement stmtSelect = _epService.EPAdministrator.Create(model); stmtSelect.Events += _listener.Update; Assert.AreEqual(stmtTextSelect, model.ToEPL()); RunAssertionOutputRateEventsAll(); }
public void Run(RegressionEnvironment env) { env.Runtime.VariableService.SetVariableValue(null, "var_output_limit", 3L); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create().Add(Expressions.CountStar(), "cnt"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean).Name)); model.OutputLimitClause = OutputLimitClause.Create(OutputLimitSelector.LAST, "var_output_limit"); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); var stmtTextSelect = "@Name('s0') select count(*) as cnt from SupportBean output last every var_output_limit events"; Assert.AreEqual(stmtTextSelect, model.ToEPL()); env.CompileDeploy(model, new RegressionPath()).AddListener("s0"); TryAssertionOutputRateEventsAll(env); env.UndeployAll(); }
private void RunAssertionOutputRateEventsAll_OM(EPServiceProvider epService) { epService.EPRuntime.SetVariableValue("var_output_limit", 3L); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create().Add(Expressions.CountStar(), "cnt"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean).FullName)); model.OutputLimitClause = OutputLimitClause.Create(OutputLimitSelector.LAST, "var_output_limit"); string stmtTextSelect = "select count(*) as cnt from " + typeof(SupportBean).FullName + " output last every var_output_limit events"; EPStatement stmtSelect = epService.EPAdministrator.Create(model); var listener = new SupportUpdateListener(); stmtSelect.Events += listener.Update; Assert.AreEqual(stmtTextSelect, model.ToEPL()); TryAssertionOutputRateEventsAll(epService, listener); stmtSelect.Dispose(); }
public void TestCreateFromOMComplete() { var model = new EPStatementObjectModel(); model.InsertInto = InsertIntoClause.Create("ReadyStreamAvg", "line", "avgAge"); model.SelectClause = SelectClause.Create() .Add("line") .Add(Expressions.Avg("age"), "avgAge"); var filter = Filter.Create(typeof(SupportBean).FullName, Expressions.In("line", 1, 8, 10)); model.FromClause = FromClause.Create(FilterStream.Create(filter, "RS").AddView("win", "time", Expressions.Constant(10))); model.WhereClause = Expressions.IsNotNull("waverId"); model.GroupByClause = GroupByClause.Create("line"); model.HavingClause = Expressions.Lt(Expressions.Avg("age"), Expressions.Constant(0)); model.OutputLimitClause = OutputLimitClause.Create(Expressions.TimePeriod(null, null, null, 10, null)); model.OrderByClause = OrderByClause.Create("line"); Assert.AreEqual("insert into ReadyStreamAvg(line, avgAge) select line, avg(age) as avgAge from com.espertech.esper.support.bean.SupportBean(line in (1,8,10)).win:time(10) as RS where waverId is not null group by line having avg(age)<0 output every 10 seconds order by line", model.ToEPL()); SerializableObjectCopier.Copy(model); }
public void Run(RegressionEnvironment env) { EPStatementObjectModel model = new EPStatementObjectModel(); model.SetInsertInto(InsertIntoClause.Create("ReadyStreamAvg", "line", "avgAge")); model.SetSelect(SelectClause.Create().Add("line").Add(Expressions.Avg("age"), "avgAge")); Filter filter = Filter.Create(typeof(SupportBean).FullName, Expressions.In("line", 1, 8, 10)); model.SetFrom(FromClause.Create(FilterStream.Create(filter, "RS").AddView("time", Expressions.Constant(10)))); model.SetWhere(Expressions.IsNotNull("waverId")); model.SetGroupBy(GroupByClause.Create("line")); model.SetHaving(Expressions.Lt(Expressions.Avg("age"), Expressions.Constant(0))); model.SetOutputLimit(OutputLimitClause.Create(Expressions.TimePeriod(null, null, null, 10, null))); model.SetOrderBy(OrderByClause.Create("line")); Assert.AreEqual( "insert into ReadyStreamAvg(line, avgAge) select line, avg(age) as avgAge from " + typeof(SupportBean).CleanName() + "(line in (1,8,10))#time(10) as RS where waverId is not null group by line having avg(age)<0 output every 10.0d seconds order by line", model.ToEPL()); SerializableObjectCopier.CopyMayFail(env.Container, model); }
private void RunAssertionEveryPolicy(EPServiceProvider epService) { SendTimer(epService, 0); string stmtText = "select TheString from SupportBean#keepall output after 0 days 0 hours 0 minutes 20 seconds 0 milliseconds every 0 days 0 hours 0 minutes 5 seconds 0 milliseconds"; EPStatement stmt = epService.EPAdministrator.CreateEPL(stmtText); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; TryAssertionEveryPolicy(epService, listener); stmt.Dispose(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("keepall")); model.OutputLimitClause = OutputLimitClause.Create(Expressions.TimePeriod(0, 0, 0, 5, 0)) .SetAfterTimePeriodExpression(Expressions.TimePeriod(0, 0, 0, 20, 0)); Assert.AreEqual(stmtText, model.ToEPL()); }
public void Run(RegressionEnvironment env) { env.Runtime.VariableService.SetVariableValue(null, "myvar", 0); SendTimeEvent(env, 1, 8, 0, 0, 0); env.CompileDeploy("on SupportBean set myvar = IntPrimitive"); var expression = "@Name('s0') select Symbol from SupportMarketDataBean#length(2) output when myvar=1 then set myvar=0, count_insert_var=count_insert"; var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("Symbol"); model.FromClause = FromClause.Create( FilterStream.Create("SupportMarketDataBean").AddView("length", Expressions.Constant(2))); model.OutputLimitClause = OutputLimitClause.Create(Expressions.Eq("myvar", 1)) .WithAddThenAssignment(Expressions.Eq(Expressions.Property("myvar"), Expressions.Constant(0))) .WithAddThenAssignment( Expressions.Eq(Expressions.Property("count_insert_var"), Expressions.Property("count_insert"))); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); var epl = model.ToEPL(); Assert.AreEqual(expression, epl); env.Runtime.VariableService.SetVariableValue(null, "myvar", 0); env.CompileDeploy(model).AddListener("s0"); env.UndeployAll(); }
public void TestOutputWhenThenExpression() { SendTimeEvent(1, 8, 0, 0, 0); _epService.EPAdministrator.Configuration.AddVariable("myvar", typeof(int), 0); _epService.EPAdministrator.Configuration.AddVariable("count_insert_var", typeof(int), 0); _epService.EPAdministrator.CreateEPL("on SupportBean set myvar = IntPrimitive"); var expression = "select Symbol from MarketData.win:length(2) output when myvar=1 then set myvar=0, count_insert_var=count_insert"; var stmt = _epService.EPAdministrator.CreateEPL(expression); RunAssertion(1, stmt); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("Symbol"); model.FromClause = FromClause.Create(FilterStream.Create("MarketData").AddView("win", "length", Expressions.Constant(2))); model.OutputLimitClause = OutputLimitClause.Create(Expressions.Eq("myvar", 1)) .AddThenAssignment(Expressions.Eq(Expressions.Property("myvar"), Expressions.Constant(0))) .AddThenAssignment(Expressions.Eq(Expressions.Property("count_insert_var"), Expressions.Property("count_insert"))); var epl = model.ToEPL(); Assert.AreEqual(expression, epl); stmt = _epService.EPAdministrator.Create(model); RunAssertion(2, stmt); model = _epService.EPAdministrator.CompileEPL(expression); Assert.AreEqual(expression, model.ToEPL()); stmt = _epService.EPAdministrator.Create(model); RunAssertion(3, stmt); var outputLast = "select Symbol from MarketData.win:length(2) output last when myvar=1 "; model = _epService.EPAdministrator.CompileEPL(outputLast); Assert.AreEqual(outputLast.Trim(), model.ToEPL().Trim()); // test same variable referenced multiple times JIRA-386 SendTimer(0); var listenerOne = new SupportUpdateListener(); var listenerTwo = new SupportUpdateListener(); var stmtOne = _epService.EPAdministrator.CreateEPL("select * from MarketData output last when myvar=100"); stmtOne.AddListener(listenerOne); var stmtTwo = _epService.EPAdministrator.CreateEPL("select * from MarketData output last when myvar=100"); stmtTwo.AddListener(listenerTwo); _epService.EPRuntime.SendEvent(new SupportMarketDataBean("ABC", "E1", 100)); _epService.EPRuntime.SendEvent(new SupportMarketDataBean("ABC", "E2", 100)); SendTimer(1000); Assert.IsFalse(listenerOne.IsInvoked); Assert.IsFalse(listenerTwo.IsInvoked); _epService.EPRuntime.SetVariableValue("myvar", 100); SendTimer(2000); Assert.IsTrue(listenerTwo.IsInvoked); Assert.IsTrue(listenerOne.IsInvoked); stmtOne.Dispose(); stmtTwo.Dispose(); // test when-then with condition triggered by output events SendTimeEvent(2, 8, 0, 0, 0); var eplToDeploy = "create variable boolean varOutputTriggered = false\n;" + "@Audit @Name('out') select * from SupportBean.std:lastevent() output snapshot when (count_insert > 1 and varOutputTriggered = false) then set varOutputTriggered = true;"; _epService.EPAdministrator.DeploymentAdmin.ParseDeploy(eplToDeploy); _epService.EPAdministrator.GetStatement("out").AddListener(_listener); _epService.EPRuntime.SendEvent(new SupportBean("E1", 1)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean("E2", 2)); Assert.AreEqual("E2", _listener.AssertOneGetNewAndReset().Get("TheString")); _epService.EPRuntime.SendEvent(new SupportBean("E3", 3)); _epService.EPRuntime.SendEvent(new SupportBean("E4", 4)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SetVariableValue("varOutputTriggered", false); // turns true right away as triggering output _epService.EPRuntime.SendEvent(new SupportBean("E5", 5)); SendTimeEvent(2, 8, 0, 1, 0); Assert.AreEqual("E5", _listener.AssertOneGetNewAndReset().Get("TheString")); _epService.EPRuntime.SendEvent(new SupportBean("E6", 6)); Assert.IsFalse(_listener.IsInvoked); _epService.EPAdministrator.DestroyAllStatements(); // test count_total for insert and remove _epService.EPAdministrator.CreateEPL("create variable int var_cnt_total = 3"); var expressionTotal = "select TheString from SupportBean.win:length(2) output when count_insert_total = var_cnt_total or count_remove_total > 2"; var stmtTotal = _epService.EPAdministrator.CreateEPL(expressionTotal); stmtTotal.AddListener(_listener); _epService.EPRuntime.SendEvent(new SupportBean("E1", 1)); _epService.EPRuntime.SendEvent(new SupportBean("E2", 1)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean("E3", 1)); EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), "TheString".Split(','), new object[][] { new object[] { "E1" }, new object[] { "E2" }, new object[] { "E3" } }); _epService.EPRuntime.SetVariableValue("var_cnt_total", -1); _epService.EPRuntime.SendEvent(new SupportBean("E4", 1)); Assert.IsFalse(_listener.GetAndClearIsInvoked()); _epService.EPRuntime.SendEvent(new SupportBean("E5", 1)); EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), "TheString".Split(','), new object[][] { new object[] { "E4" }, new object[] { "E5" } }); _epService.EPAdministrator.DestroyAllStatements(); }
public void Run(RegressionEnvironment env) { var fields = new [] { "TheString" }; var stmtText = "@Name('s0') select TheString from SupportBean#keepall output after 3 events"; env.CompileDeploy(stmtText).AddListener("s0"); SendEvent(env, "E1"); env.Milestone(0); SendEvent(env, "E2"); SendEvent(env, "E3"); Assert.IsFalse(env.Listener("s0").IsInvoked); env.Milestone(1); SendEvent(env, "E4"); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E4"}); SendEvent(env, "E5"); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E5"}); env.UndeployAll(); var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("TheString"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean").AddView("keepall")); model.OutputLimitClause = OutputLimitClause.CreateAfter(3); Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); env.CompileDeploy(model).AddListener("s0"); SendEvent(env, "E1"); SendEvent(env, "E2"); SendEvent(env, "E3"); Assert.IsFalse(env.Listener("s0").IsInvoked); SendEvent(env, "E4"); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E4"}); SendEvent(env, "E5"); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E5"}); model = env.EplToModel("select TheString from SupportBean#keepall output after 3 events"); Assert.AreEqual("select TheString from SupportBean#keepall output after 3 events ", model.ToEPL()); env.UndeployAll(); }