public void Run(RegressionEnvironment env) { var path = new RegressionPath(); var stmtOrigText = "@Name('split') on SupportBean " + "insert into AStream2SP select * where IntPrimitive=1 " + "insert into BStream2SP select * where IntPrimitive=1 or IntPrimitive=2"; env.CompileDeploy(stmtOrigText, path).AddListener("split"); TryAssertion(env, path); path.Clear(); // statement object model var model = new EPStatementObjectModel(); model.Annotations = Collections.SingletonList(new AnnotationPart("Audit")); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean")); model.InsertInto = InsertIntoClause.Create("AStream2SP"); model.SelectClause = SelectClause.CreateWildcard(); model.WhereClause = Expressions.Eq("IntPrimitive", 1); var clause = OnClause.CreateOnInsertSplitStream(); model.OnExpr = clause; var item = OnInsertSplitStreamItem.Create( InsertIntoClause.Create("BStream2SP"), SelectClause.CreateWildcard(), Expressions.Or(Expressions.Eq("IntPrimitive", 1), Expressions.Eq("IntPrimitive", 2))); clause.AddItem(item); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("split")); Assert.AreEqual(stmtOrigText, model.ToEPL()); env.CompileDeploy(model, path).AddListener("split"); TryAssertion(env, path); path.Clear(); env.EplToModelCompileDeploy(stmtOrigText, path).AddListener("split"); TryAssertion(env, path); }
public void Run(RegressionEnvironment env) { var model = new EPStatementObjectModel(); model.SelectClause = SelectClause.Create("var1OM", "var2OM", "Id"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean_A")); var path = new RegressionPath(); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("s0")); env.CompileDeploy(model, path); var stmtText = "@Name('s0') select var1OM, var2OM, Id from SupportBean_A"; Assert.AreEqual(stmtText, model.ToEPL()); env.AddListener("s0"); var fieldsSelect = new string[] { "var1OM", "var2OM", "Id" }; SendSupportBean_A(env, "E1"); EPAssertionUtil.AssertProps(env.Listener("s0").AssertOneGetNewAndReset(), fieldsSelect, new object[] { 10d, 11L, "E1" }); model = new EPStatementObjectModel(); model.OnExpr = OnClause.CreateOnSet(Expressions.Eq(Expressions.Property("var1OM"), Expressions.Property("IntPrimitive"))) .AddAssignment(Expressions.Eq(Expressions.Property("var2OM"), Expressions.Property("IntBoxed"))); model.FromClause = FromClause.Create(FilterStream.Create(nameof(SupportBean))); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("set")); var stmtTextSet = "@Name('set') on SupportBean set var1OM=IntPrimitive, var2OM=IntBoxed"; env.CompileDeploy(model, path).AddListener("set"); Assert.AreEqual(stmtTextSet, model.ToEPL()); var typeSet = env.Statement("set").EventType; Assert.AreEqual(typeof(double?), typeSet.GetPropertyType("var1OM")); Assert.AreEqual(typeof(long?), typeSet.GetPropertyType("var2OM")); Assert.AreEqual(typeof(IDictionary <string, object>), typeSet.UnderlyingType); var fieldsVar = new string[] { "var1OM", "var2OM" }; EPAssertionUtil.AssertEqualsAnyOrder(fieldsVar, typeSet.PropertyNames); EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("set"), fieldsVar, new object[][] { new object[] { 10d, 11L } }); SendSupportBean(env, "S1", 3, 4); EPAssertionUtil.AssertProps(env.Listener("set").AssertOneGetNewAndReset(), fieldsVar, new object[] { 3d, 4L }); EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("set"), fieldsVar, new object[][] { new object[] { 3d, 4L } }); SendSupportBean_A(env, "E2"); EPAssertionUtil.AssertProps(env.Listener("s0").AssertOneGetNewAndReset(), fieldsSelect, new object[] { 3d, 4L, "E2" }); env.UndeployModuleContaining("set"); env.UndeployModuleContaining("s0"); }
private void RunAssertion2SplitNoDefaultOutputFirst(EPServiceProvider epService) { var stmtOrigText = "@Audit on SupportBean " + "insert into AStream2SP select * where IntPrimitive=1 " + "insert into BStream2SP select * where IntPrimitive=1 or IntPrimitive=2"; var stmtOrig = epService.EPAdministrator.CreateEPL(stmtOrigText); TryAssertion(epService, stmtOrig); // statement object model var model = new EPStatementObjectModel(); model.Annotations = Collections.SingletonList(new AnnotationPart("Audit")); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean")); model.InsertInto = InsertIntoClause.Create("AStream2SP"); model.SelectClause = SelectClause.CreateWildcard(); model.WhereClause = Expressions.Eq("IntPrimitive", 1); var clause = OnClause.CreateOnInsertSplitStream(); model.OnExpr = clause; var item = OnInsertSplitStreamItem.Create( InsertIntoClause.Create("BStream2SP"), SelectClause.CreateWildcard(), Expressions.Or(Expressions.Eq("IntPrimitive", 1), Expressions.Eq("IntPrimitive", 2))); clause.AddItem(item); Assert.AreEqual(stmtOrigText, model.ToEPL()); stmtOrig = epService.EPAdministrator.Create(model); TryAssertion(epService, stmtOrig); var newModel = epService.EPAdministrator.CompileEPL(stmtOrigText); stmtOrig = epService.EPAdministrator.Create(newModel); Assert.AreEqual(stmtOrigText, newModel.ToEPL()); TryAssertion(epService, stmtOrig); SupportModelHelper.CompileCreate(epService, stmtOrigText + " output all"); epService.EPAdministrator.DestroyAllStatements(); }
/// <summary> /// Creates the delete trigger. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="serviceProvider">The service provider.</param> /// <param name="windowName">Name of the window.</param> /// <param name="asName">As name.</param> /// <param name="fromClause">From clause.</param> /// <param name="deferredWhereClause">The deferred where clause.</param> /// <returns></returns> public static EPStatement CreateDeleteTrigger <T>(EPServiceProvider serviceProvider, string windowName, string asName, EsperQuery <T> fromClause, Func <Expression> deferredWhereClause) { var deriveObjectModel = DeriveObjectModel(fromClause); using (ScopedInstance <EPStatementObjectModel> .Set(deriveObjectModel)) { deriveObjectModel.OnExpr = OnClause.CreateOnDelete(windowName, asName); if (deferredWhereClause != null) { var whereClause = deferredWhereClause.Invoke(); if (whereClause != null) { deriveObjectModel.WhereClause = whereClause; } } return(serviceProvider.EPAdministrator.Create(deriveObjectModel)); } }
public void TestOM() { var fields = new string[] { "key", "value" }; // create window object model var model = new EPStatementObjectModel(); model.CreateWindow = CreateWindowClause.Create("MyWindow").AddView("win", "keepall"); model.SelectClause = SelectClause.Create() .AddWithAsProvidedName("TheString", "key") .AddWithAsProvidedName("LongBoxed", "value"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean).FullName)); var stmtCreate = _epService.EPAdministrator.Create(model); stmtCreate.AddListener(_listenerWindow); var stmtTextCreate = "create window MyWindow.win:keepall() as select TheString as key, LongBoxed as value from " + typeof(SupportBean).FullName; Assert.AreEqual(stmtTextCreate, model.ToEPL()); var stmtTextInsert = "insert into MyWindow select TheString as key, LongBoxed as value from " + typeof(SupportBean).FullName; var modelInsert = _epService.EPAdministrator.CompileEPL(stmtTextInsert); var stmtInsert = _epService.EPAdministrator.Create(modelInsert); // Consumer statement object model model = new EPStatementObjectModel(); Expression multi = Expressions.Multiply(Expressions.Property("value"), Expressions.Constant(2)); model.SelectClause = SelectClause.Create().SetStreamSelector(StreamSelector.RSTREAM_ISTREAM_BOTH) .Add("key") .Add(multi, "value"); model.FromClause = FromClause.Create(FilterStream.Create("MyWindow", Expressions.IsNotNull("value"))); var stmtSelectOne = _epService.EPAdministrator.Create(model); stmtSelectOne.AddListener(_listenerStmtOne); var stmtTextSelectOne = "select irstream key, value*2 as value from MyWindow(value is not null)"; Assert.AreEqual(stmtTextSelectOne, model.ToEPL()); // send events SendSupportBean("E1", 10L); EPAssertionUtil.AssertProps(_listenerStmtOne.AssertOneGetNewAndReset(), fields, new object[] { "E1", 20L }); EPAssertionUtil.AssertProps(_listenerWindow.AssertOneGetNewAndReset(), fields, new object[] { "E1", 10L }); SendSupportBean("E2", 20L); EPAssertionUtil.AssertProps(_listenerStmtOne.AssertOneGetNewAndReset(), fields, new object[] { "E2", 40L }); EPAssertionUtil.AssertProps(_listenerWindow.AssertOneGetNewAndReset(), fields, new object[] { "E2", 20L }); // create delete stmt model = new EPStatementObjectModel(); model.OnExpr = OnClause.CreateOnDelete("MyWindow", "s1"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportMarketDataBean).FullName, "s0")); model.WhereClause = Expressions.EqProperty("s0.symbol", "s1.key"); _epService.EPAdministrator.Create(model); var stmtTextDelete = "on " + typeof(SupportMarketDataBean).FullName + " as s0 delete from MyWindow as s1 where s0.symbol=s1.key"; Assert.AreEqual(stmtTextDelete, model.ToEPL()); // send delete event SendMarketBean("E1"); EPAssertionUtil.AssertProps(_listenerStmtOne.AssertOneGetOldAndReset(), fields, new object[] { "E1", 20L }); EPAssertionUtil.AssertProps(_listenerWindow.AssertOneGetOldAndReset(), fields, new object[] { "E1", 10L }); // send delete event again, none deleted now SendMarketBean("E1"); Assert.IsFalse(_listenerStmtOne.IsInvoked); Assert.IsFalse(_listenerWindow.IsInvoked); // send delete event SendMarketBean("E2"); EPAssertionUtil.AssertProps(_listenerStmtOne.AssertOneGetOldAndReset(), fields, new object[] { "E2", 40L }); EPAssertionUtil.AssertProps(_listenerWindow.AssertOneGetOldAndReset(), fields, new object[] { "E2", 20L }); // On-select object model model = new EPStatementObjectModel(); model.OnExpr = OnClause.CreateOnSelect("MyWindow", "s1"); model.WhereClause = Expressions.EqProperty("s0.id", "s1.key"); model.FromClause = FromClause.Create(FilterStream.Create(typeof(SupportBean_B).FullName, "s0")); model.SelectClause = SelectClause.CreateStreamWildcard("s1"); var statement = _epService.EPAdministrator.Create(model); statement.AddListener(_listenerOnSelect); var stmtTextOnSelect = "on " + typeof(SupportBean_B).FullName + " as s0 select s1.* from MyWindow as s1 where s0.id=s1.key"; Assert.AreEqual(stmtTextOnSelect, model.ToEPL()); // send some more events SendSupportBean("E3", 30L); SendSupportBean("E4", 40L); _epService.EPRuntime.SendEvent(new SupportBean_B("B1")); Assert.IsFalse(_listenerOnSelect.IsInvoked); // trigger on-select _epService.EPRuntime.SendEvent(new SupportBean_B("E3")); EPAssertionUtil.AssertProps(_listenerOnSelect.AssertOneGetNewAndReset(), fields, new object[] { "E3", 30L }); stmtSelectOne.Dispose(); stmtInsert.Dispose(); stmtCreate.Dispose(); }
public void Run(RegressionEnvironment env) { string[] fields = {"key", "value"}; var path = new RegressionPath(); // create window object model var model = new EPStatementObjectModel(); model.CreateWindow = CreateWindowClause .Create("MyWindow") .AddView("keepall") .WithAsEventTypeName("SupportBean"); model.SelectClause = SelectClause.Create() .AddWithAsProvidedName("TheString", "key") .AddWithAsProvidedName("LongBoxed", "value"); var stmtTextCreate = "create window MyWindow#keepall as select TheString as key, LongBoxed as value from SupportBean"; Assert.AreEqual(stmtTextCreate, model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("create")); env.CompileDeploy(model, path).AddListener("create"); var stmtTextInsert = "insert into MyWindow select TheString as key, LongBoxed as value from SupportBean"; env.EplToModelCompileDeploy(stmtTextInsert, path); // Consumer statement object model model = new EPStatementObjectModel(); Expression multi = Expressions.Multiply(Expressions.Property("value"), Expressions.Constant(2)); model.SelectClause = SelectClause.Create() .SetStreamSelector(StreamSelector.RSTREAM_ISTREAM_BOTH) .Add("key") .Add(multi, "value"); model.FromClause = FromClause.Create(FilterStream.Create("MyWindow", Expressions.IsNotNull("value"))); var eplSelect = "select irstream key, value*2 as value from MyWindow(value is not null)"; Assert.AreEqual(eplSelect, model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("select")); env.CompileDeploy(model, path).AddListener("select"); // send events SendSupportBean(env, "E1", 10L); EPAssertionUtil.AssertProps( env.Listener("select").AssertOneGetNewAndReset(), fields, new object[] {"E1", 20L}); EPAssertionUtil.AssertProps( env.Listener("create").AssertOneGetNewAndReset(), fields, new object[] {"E1", 10L}); SendSupportBean(env, "E2", 20L); EPAssertionUtil.AssertProps( env.Listener("select").AssertOneGetNewAndReset(), fields, new object[] {"E2", 40L}); EPAssertionUtil.AssertProps( env.Listener("create").AssertOneGetNewAndReset(), fields, new object[] {"E2", 20L}); // create delete stmt model = new EPStatementObjectModel(); model.OnExpr = OnClause.CreateOnDelete("MyWindow", "S1"); model.FromClause = FromClause.Create(FilterStream.Create("SupportMarketDataBean", "S0")); model.WhereClause = Expressions.EqProperty("S0.Symbol", "S1.key"); var stmtTextDelete = "on SupportMarketDataBean as S0 delete from MyWindow as S1 where S0.Symbol=S1.key"; Assert.AreEqual(stmtTextDelete, model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("ondelete")); env.CompileDeploy(model, path).AddListener("ondelete"); // send delete event SendMarketBean(env, "E1"); EPAssertionUtil.AssertProps( env.Listener("select").AssertOneGetOldAndReset(), fields, new object[] {"E1", 20L}); EPAssertionUtil.AssertProps( env.Listener("create").AssertOneGetOldAndReset(), fields, new object[] {"E1", 10L}); // send delete event again, none deleted now SendMarketBean(env, "E1"); Assert.IsFalse(env.Listener("select").IsInvoked); Assert.IsFalse(env.Listener("create").IsInvoked); // send delete event SendMarketBean(env, "E2"); EPAssertionUtil.AssertProps( env.Listener("select").AssertOneGetOldAndReset(), fields, new object[] {"E2", 40L}); EPAssertionUtil.AssertProps( env.Listener("create").AssertOneGetOldAndReset(), fields, new object[] {"E2", 20L}); // On-select object model model = new EPStatementObjectModel(); model.OnExpr = OnClause.CreateOnSelect("MyWindow", "S1"); model.WhereClause = Expressions.EqProperty("S0.Id", "S1.key"); model.FromClause = FromClause.Create(FilterStream.Create("SupportBean_B", "S0")); model.SelectClause = SelectClause.CreateStreamWildcard("S1"); var stmtTextOnSelect = "on SupportBean_B as S0 select S1.* from MyWindow as S1 where S0.Id=S1.key"; Assert.AreEqual(stmtTextOnSelect, model.ToEPL()); model.Annotations = Collections.SingletonList(AnnotationPart.NameAnnotation("onselect")); env.CompileDeploy(model, path).AddListener("onselect"); // send some more events SendSupportBean(env, "E3", 30L); SendSupportBean(env, "E4", 40L); env.SendEventBean(new SupportBean_B("B1")); Assert.IsFalse(env.Listener("onselect").IsInvoked); // trigger on-select env.SendEventBean(new SupportBean_B("E3")); EPAssertionUtil.AssertProps( env.Listener("onselect").AssertOneGetNewAndReset(), fields, new object[] {"E3", 30L}); env.UndeployAll(); }