public void TestLengthBatch() { String[] fields = new String[] { "TheString" }; EPStatement stmt = _epService.EPAdministrator.CreateEPL("select irstream * from SupportBean.win:expr_batch(current_count >= 3, true)"); stmt.Events += _listener.Update; _epService.EPRuntime.SendEvent(new SupportBean("E1", 1)); _epService.EPRuntime.SendEvent(new SupportBean("E2", 2)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean("E3", 3)); EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastNewData(), fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } }); _epService.EPRuntime.SendEvent(new SupportBean("E4", 4)); _epService.EPRuntime.SendEvent(new SupportBean("E5", 5)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean("E6", 6)); EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new Object[][] { new Object[] { "E4" }, new Object[] { "E5" }, new Object[] { "E6" } }); EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastOldData(), fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } }); _epService.EPRuntime.SendEvent(new SupportBean("E7", 7)); _epService.EPRuntime.SendEvent(new SupportBean("E8", 8)); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean("E9", 9)); EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new Object[][] { new Object[] { "E7" }, new Object[] { "E8" }, new Object[] { "E9" } }); EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetLastOldData(), fields, new Object[][] { new Object[] { "E4" }, new Object[] { "E5" }, new Object[] { "E6" } }); stmt.Dispose(); }
private void RunAssertionLengthBatch(EPServiceProvider epService) { var fields = new string[] { "TheString" }; EPStatement stmt = epService.EPAdministrator.CreateEPL("select irstream * from SupportBean#expr_batch(current_count >= 3, true)"); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; epService.EPRuntime.SendEvent(new SupportBean("E1", 1)); epService.EPRuntime.SendEvent(new SupportBean("E2", 2)); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean("E3", 3)); EPAssertionUtil.AssertPropsPerRow(listener.GetAndResetLastNewData(), fields, new object[][] { new object[] { "E1" }, new object[] { "E2" }, new object[] { "E3" } }); epService.EPRuntime.SendEvent(new SupportBean("E4", 4)); epService.EPRuntime.SendEvent(new SupportBean("E5", 5)); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean("E6", 6)); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E4" }, new object[] { "E5" }, new object[] { "E6" } }); EPAssertionUtil.AssertPropsPerRow(listener.GetAndResetLastOldData(), fields, new object[][] { new object[] { "E1" }, new object[] { "E2" }, new object[] { "E3" } }); epService.EPRuntime.SendEvent(new SupportBean("E7", 7)); epService.EPRuntime.SendEvent(new SupportBean("E8", 8)); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean("E9", 9)); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E7" }, new object[] { "E8" }, new object[] { "E9" } }); EPAssertionUtil.AssertPropsPerRow(listener.GetAndResetLastOldData(), fields, new object[][] { new object[] { "E4" }, new object[] { "E5" }, new object[] { "E6" } }); stmt.Dispose(); }
private void TryAssertionTimeBatchAndUnique(EPServiceProvider epService, SupportUpdateListener listener, long startTime) { string[] fields = "TheString,IntPrimitive".Split(','); listener.Reset(); SendEvent(epService, "E1", 1); SendEvent(epService, "E2", 2); SendEvent(epService, "E1", 3); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new CurrentTimeEvent(startTime + 1000)); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E2", 2 }, new object[] { "E1", 3 } }); Assert.IsNull(listener.GetAndResetLastOldData()); SendEvent(epService, "E3", 3); SendEvent(epService, "E3", 4); SendEvent(epService, "E3", 5); SendEvent(epService, "E4", 6); SendEvent(epService, "E3", 7); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new CurrentTimeEvent(startTime + 2000)); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E4", 6 }, new object[] { "E3", 7 } }); Assert.IsNull(listener.GetAndResetLastOldData()); }
private void RunAssertionUniqueAndBatch(EPStatement stmt) { var fields = new String[] { "TheString" }; SendEvent("E1", 1); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E1")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E2", 2); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E1", "E2")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E3", 3); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, null); EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } }); Assert.IsNull(_listener.GetAndResetLastOldData()); SendEvent("E4", 4); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E4")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E5", 4); // throws out E5 EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E5")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E6", 4); // throws out E6 EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E6")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E7", 5); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E6", "E7")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E8", 6); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, null); EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new Object[][] { new Object[] { "E6" }, new Object[] { "E7" }, new Object[] { "E8" } }); EPAssertionUtil.AssertPropsPerRow(_listener.LastOldData, fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } }); _listener.Reset(); SendEvent("E8", 7); SendEvent("E9", 9); SendEvent("E9", 9); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, ToArr("E8", "E9")); Assert.IsFalse(_listener.IsInvoked); SendEvent("E10", 11); EPAssertionUtil.AssertPropsPerRowAnyOrder(stmt.GetEnumerator(), fields, null); EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new Object[][] { new Object[] { "E10" }, new Object[] { "E8" }, new Object[] { "E9" } }); EPAssertionUtil.AssertPropsPerRow(_listener.LastOldData, fields, new Object[][] { new Object[] { "E6" }, new Object[] { "E7" }, new Object[] { "E8" } }); _listener.Reset(); }
public void TestTimeBatchRowPerGroupJoin() { SendTimer(0); String stmtText = "select irstream Symbol, sum(Price) as sumPrice " + " from MarketData.win:time_batch(1 sec) as S0, SupportBean.win:keepall() as S1" + " where S0.Symbol = S1.TheString " + " group by Symbol"; EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText); stmt.Events += _listener.Update; SendSupportEvent("DELL"); SendSupportEvent("IBM"); // send first batch SendMDEvent("DELL", 10, 0L); SendMDEvent("IBM", 15, 0L); SendMDEvent("DELL", 20, 0L); SendTimer(1000); String[] fields = "Symbol,sumPrice".Split(','); EPAssertionUtil.AssertPropsPerRowAnyOrder(_listener.GetAndResetLastNewData(), fields, new object[][] { new object[] { "DELL", 30d }, new object[] { "IBM", 15d } }); // send second batch SendMDEvent("IBM", 20, 600L); SendTimer(2000); EPAssertionUtil.AssertPropsPerRowAnyOrder(_listener.LastNewData, fields, new object[][] { new object[] { "DELL", null }, new object[] { "IBM", 20d } }); EPAssertionUtil.AssertPropsPerRowAnyOrder(_listener.GetAndResetLastOldData(), fields, new object[][] { new object[] { "DELL", 30d }, new object[] { "IBM", 15d } }); }
public void TestOnUpdateWTypeWiden() { SupportUpdateListener listenerUpdate = new SupportUpdateListener(); string[] fields = "keyOne,keyTwo,p0".Split(','); _epService.EPAdministrator.CreateEPL("create table varagg as (" + "keyOne string primary key, keyTwo int primary key, p0 long)"); _epService.EPAdministrator.CreateEPL("on SupportBean merge varagg where TheString = keyOne and " + "IntPrimitive = keyTwo when not matched then insert select TheString as keyOne, IntPrimitive as keyTwo, 1 as p0"); _epService.EPAdministrator.CreateEPL("select varagg[p00, id].p0 as value from SupportBean_S0").AddListener(_listener); EPStatement stmtUpdate = _epService.EPAdministrator.CreateEPL("on MyUpdateEvent update varagg set p0 = newValue " + "where k1 = keyOne and k2 = keyTwo"); stmtUpdate.AddListener(listenerUpdate); object[][] expectedType = new object[][] { new object[] { "keyOne", typeof(string) }, new object[] { "keyTwo", typeof(int) }, new object[] { "p0", typeof(long) } }; EventTypeAssertionUtil.AssertEventTypeProperties(expectedType, stmtUpdate.EventType, EventTypeAssertionEnum.NAME, EventTypeAssertionEnum.TYPE); _epService.EPRuntime.SendEvent(new SupportBean("G1", 10)); AssertValues(new object[][] { new object[] { "G1", 10 } }, new long?[] { 1L }); _epService.EPRuntime.SendEvent(new MyUpdateEvent("G1", 10, 2)); AssertValues(new object[][] { new object[] { "G1", 10 } }, new long?[] { 2L }); EPAssertionUtil.AssertProps(listenerUpdate.LastNewData[0], fields, new object[] { "G1", 10, 2L }); EPAssertionUtil.AssertProps(listenerUpdate.GetAndResetLastOldData()[0], fields, new object[] { "G1", 10, 1L }); // try property method invocation _epService.EPAdministrator.CreateEPL("create table MyTableSuppBean as (sb SupportBean)"); _epService.EPAdministrator.CreateEPL("on SupportBean_S0 update MyTableSuppBean sb set sb.set_LongPrimitive(10)"); }
private void RunAssertionTimeBatchRowPerGroupJoin(EPServiceProvider epService) { SendTimer(epService, 0); string stmtText = "select irstream symbol, sum(price) as sumPrice " + " from MarketData#time_batch(1 sec) as S0, SupportBean#keepall as S1" + " where S0.symbol = S1.TheString " + " group by symbol"; EPStatement stmt = epService.EPAdministrator.CreateEPL(stmtText); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; SendSupportEvent(epService, "DELL"); SendSupportEvent(epService, "IBM"); // send first batch SendMDEvent(epService, "DELL", 10, 0L); SendMDEvent(epService, "IBM", 15, 0L); SendMDEvent(epService, "DELL", 20, 0L); SendTimer(epService, 1000); string[] fields = "symbol,sumPrice".Split(','); EPAssertionUtil.AssertPropsPerRowAnyOrder(listener.GetAndResetLastNewData(), fields, new object[][] { new object[] { "DELL", 30d }, new object[] { "IBM", 15d } }); // send second batch SendMDEvent(epService, "IBM", 20, 600L); SendTimer(epService, 2000); EPAssertionUtil.AssertPropsPerRowAnyOrder(listener.LastNewData, fields, new object[][] { new object[] { "DELL", null }, new object[] { "IBM", 20d } }); EPAssertionUtil.AssertPropsPerRowAnyOrder(listener.GetAndResetLastOldData(), fields, new object[][] { new object[] { "DELL", 30d }, new object[] { "IBM", 15d } }); stmt.Dispose(); }
private void TryAssertionLengthBatchAndFirstUnique(EPServiceProvider epService, SupportUpdateListener listener) { string[] fields = "TheString,IntPrimitive".Split(','); SendEvent(epService, "E1", 1); SendEvent(epService, "E2", 2); SendEvent(epService, "E1", 3); Assert.IsFalse(listener.IsInvoked); SendEvent(epService, "E3", 4); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E1", 1 }, new object[] { "E2", 2 }, new object[] { "E3", 4 } }); Assert.IsNull(listener.GetAndResetLastOldData()); SendEvent(epService, "E1", 5); SendEvent(epService, "E4", 7); SendEvent(epService, "E1", 6); Assert.IsFalse(listener.IsInvoked); SendEvent(epService, "E5", 9); EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E1", 5 }, new object[] { "E4", 7 }, new object[] { "E5", 9 } }); EPAssertionUtil.AssertPropsPerRow(listener.GetAndResetLastOldData(), fields, new object[][] { new object[] { "E1", 1 }, new object[] { "E2", 2 }, new object[] { "E3", 4 } }); listener.Reset(); }
public override void Run(EPServiceProvider epService) { foreach (var clazz in new[] {typeof(SupportBean), typeof(SupportBean_S0), typeof(MyUpdateEvent)}) { epService.EPAdministrator.Configuration.AddEventType(clazz); } var listenerUpdate = new SupportUpdateListener(); var fields = "keyOne,keyTwo,p0".Split(','); epService.EPAdministrator.CreateEPL( "create table varagg as (" + "keyOne string primary key, keyTwo int primary key, p0 long)"); epService.EPAdministrator.CreateEPL( "on SupportBean merge varagg where TheString = keyOne and " + "IntPrimitive = keyTwo when not matched then insert select TheString as keyOne, IntPrimitive as keyTwo, 1 as p0"); var listener = new SupportUpdateListener(); epService.EPAdministrator.CreateEPL("select varagg[p00, id].p0 as value from SupportBean_S0") .Events += listener.Update; var stmtUpdate = epService.EPAdministrator.CreateEPL( "on MyUpdateEvent update varagg set p0 = newValue " + "where k1 = keyOne and k2 = keyTwo"); stmtUpdate.Events += listenerUpdate.Update; var expectedType = new[] { new object[] {"keyOne", typeof(string)}, new object[] {"keyTwo", typeof(int)}, new object[] {"p0", typeof(long)} }; SupportEventTypeAssertionUtil.AssertEventTypeProperties( expectedType, stmtUpdate.EventType, SupportEventTypeAssertionEnum.NAME, SupportEventTypeAssertionEnum.TYPE); epService.EPRuntime.SendEvent(new SupportBean("G1", 10)); AssertValues(epService, listener, new[] {new object[] {"G1", 10}}, new[] {1L}); epService.EPRuntime.SendEvent(new MyUpdateEvent("G1", 10, 2)); AssertValues(epService, listener, new[] {new object[] {"G1", 10}}, new[] {2L}); EPAssertionUtil.AssertProps(listenerUpdate.LastNewData[0], fields, new object[] {"G1", 10, 2L}); EPAssertionUtil.AssertProps( listenerUpdate.GetAndResetLastOldData()[0], fields, new object[] {"G1", 10, 1L}); // try property method invocation epService.EPAdministrator.CreateEPL("create table MyTableSuppBean as (sb SupportBean)"); epService.EPAdministrator.CreateEPL( "on SupportBean_S0 update MyTableSuppBean sb set sb.set_LongPrimitive(10)"); }
public void RunOnMergeInsertUpdDeleteSingleKey(EPServiceProvider epService, bool soda) { string[] fieldsTable = "key,p0,p1,p2,sumint".Split(','); string eplDeclare = "create table varaggMIU (key int primary key, p0 string, p1 int, p2 int[], sumint sum(int))"; SupportModelHelper.CreateByCompileOrParse(epService, soda, eplDeclare); string[] fields = "c0,c1,c2,c3".Split(','); string eplRead = "select varaggMIU[id].p0 as c0, varaggMIU[id].p1 as c1, varaggMIU[id].p2 as c2, varaggMIU[id].sumint as c3 from SupportBean_S0"; EPStatement stmtRead = SupportModelHelper.CreateByCompileOrParse(epService, soda, eplRead); var listener = new SupportUpdateListener(); stmtRead.Events += listener.Update; // assert selected column types var expectedAggType = new object[][] { new object[] { "c0", typeof(string) }, new object[] { "c1", typeof(int) }, new object[] { "c2", typeof(int[]) }, new object[] { "c3", typeof(int) } }; SupportEventTypeAssertionUtil.AssertEventTypeProperties(expectedAggType, stmtRead.EventType, SupportEventTypeAssertionEnum.NAME, SupportEventTypeAssertionEnum.TYPE); // assert no row epService.EPRuntime.SendEvent(new SupportBean_S0(10)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null, null, null }); // create merge string eplMerge = "on SupportBean merge varaggMIU" + " where IntPrimitive=key" + " when not matched then" + " insert select IntPrimitive as key, \"v1\" as p0, 1000 as p1, {1,2} as p2" + " when matched and TheString like \"U%\" then" + " update set p0=\"v2\", p1=2000, p2={3,4}" + " when matched and TheString like \"D%\" then" + " delete"; EPStatement stmtMerge = SupportModelHelper.CreateByCompileOrParse(epService, soda, eplMerge); var listenerMerge = new SupportUpdateListener(); stmtMerge.Events += listenerMerge.Update; // merge for varagg[10] epService.EPRuntime.SendEvent(new SupportBean("E1", 10)); EPAssertionUtil.AssertProps(listenerMerge.AssertOneGetNewAndReset(), fieldsTable, new object[] { 10, "v1", 1000, new int[] { 1, 2 }, null }); // assert key "10" epService.EPRuntime.SendEvent(new SupportBean_S0(10)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "v1", 1000, new int?[] { 1, 2 }, null }); // also aggregate-into the same key SupportModelHelper.CreateByCompileOrParse(epService, soda, "into table varaggMIU select sum(50) as sumint from SupportBean_S1 group by id"); epService.EPRuntime.SendEvent(new SupportBean_S1(10)); epService.EPRuntime.SendEvent(new SupportBean_S0(10)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "v1", 1000, new int?[] { 1, 2 }, 50 }); // update for varagg[10] epService.EPRuntime.SendEvent(new SupportBean("U2", 10)); EPAssertionUtil.AssertProps(listenerMerge.LastNewData[0], fieldsTable, new object[] { 10, "v2", 2000, new int[] { 3, 4 }, 50 }); EPAssertionUtil.AssertProps(listenerMerge.GetAndResetLastOldData()[0], fieldsTable, new object[] { 10, "v1", 1000, new int[] { 1, 2 }, 50 }); epService.EPRuntime.SendEvent(new SupportBean_S0(10)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "v2", 2000, new int?[] { 3, 4 }, 50 }); // delete for varagg[10] epService.EPRuntime.SendEvent(new SupportBean("D3", 10)); EPAssertionUtil.AssertProps(listenerMerge.AssertOneGetOldAndReset(), fieldsTable, new object[] { 10, "v2", 2000, new int[] { 3, 4 }, 50 }); epService.EPRuntime.SendEvent(new SupportBean_S0(10)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { null, null, null, null }); epService.EPAdministrator.DestroyAllStatements(); epService.EPAdministrator.Configuration.RemoveEventType("table_varaggMIU__internal", false); epService.EPAdministrator.Configuration.RemoveEventType("table_varaggMIU__public", false); }