public void Run(RegressionEnvironment env) { var stmtText = "@Name('s0') select * from SupportBeanRange sbr, " + " sql:MyDBWithLRU100000 ['select mycol1, mycol3 from mytesttable_large'] as S1 where mycol3 between RangeStart and RangeEnd"; env.CompileDeploy(stmtText).AddListener("s0"); var startTime = PerformanceObserver.MilliTime; for (var i = 0; i < 1000; i++) { env.SendEventBean(new SupportBeanRange("R", 10, 12)); Assert.AreEqual(3, env.Listener("s0").GetAndResetLastNewData().Length); } var endTime = PerformanceObserver.MilliTime; var delta = endTime - startTime; // log.info("delta=" + delta); Assert.That(delta, Is.LessThan(500), "Delta=" + delta); // test coercion env.UndeployAll(); stmtText = "@Name('s0') select * from SupportBeanRange sbr, " + " sql:MyDBWithLRU100000 ['select mycol1, mycol3 from mytesttable_large'] as S1 where mycol3 between RangeStartLong and RangeEndLong"; env.CompileDeploy(stmtText).AddListener("s0"); env.SendEventBean(SupportBeanRange.MakeLong("R", "K", 10L, 12L)); Assert.AreEqual(3, env.Listener("s0").GetAndResetLastNewData().Length); env.UndeployAll(); }
private void RunAssertionJoinCoercionRange(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType <SupportBean>(); epService.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); string[] fields = "sbs,sbi,sbri".Split(','); string epl = "select sb.TheString as sbs, sb.IntPrimitive as sbi, sbr.id as sbri from SupportBean#length(10) sb, SupportBeanRange#length(10) sbr " + "where IntPrimitive between rangeStartLong and rangeEndLong"; EPStatement stmt = epService.EPAdministrator.CreateEPL(epl); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R1", "G", 100L, 200L)); epService.EPRuntime.SendEvent(new SupportBean("E1", 10)); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean("E2", 100)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E2", 100, "R1" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R2", "G", 90L, 100L)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E2", 100, "R2" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R3", "G", 1L, 99L)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E1", 10, "R3" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R4", "G", 2000L, 3000L)); epService.EPRuntime.SendEvent(new SupportBean("E1", 1000)); Assert.IsFalse(listener.IsInvoked); stmt.Dispose(); epl = "select sb.TheString as sbs, sb.IntPrimitive as sbi, sbr.id as sbri from SupportBean#length(10) sb, SupportBeanRange#length(10) sbr " + "where sbr.key = sb.TheString and IntPrimitive between rangeStartLong and rangeEndLong"; stmt = epService.EPAdministrator.CreateEPL(epl); stmt.Events += listener.Update; epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R1", "G", 100L, 200L)); epService.EPRuntime.SendEvent(new SupportBean("G", 10)); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean("G", 101)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "G", 101, "R1" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R2", "G", 90L, 102L)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "G", 101, "R2" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R3", "G", 1L, 99L)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "G", 10, "R3" }); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R4", "G", 2000L, 3000L)); epService.EPRuntime.SendEvent(new SupportBean("G", 1000)); Assert.IsFalse(listener.IsInvoked); stmt.Dispose(); }
private void RunAssertionPerfCoercion3wayRange(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType("SupportBean_ST0", typeof(SupportBean_ST0)); epService.EPAdministrator.Configuration.AddEventType("SupportBean_ST1", typeof(SupportBean_ST1)); epService.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); string stmtText = "select * from " + "SupportBeanRange#keepall sbr " + " left outer join " + "SupportBean_ST0#keepall s0 on s0.key0=sbr.key" + " left outer join " + "SupportBean_ST1#keepall s1 on s1.key1=s0.key0" + " where s0.p00 between sbr.rangeStartLong and sbr.rangeEndLong"; EPStatement stmt = epService.EPAdministrator.CreateEPL(stmtText); var listener = new SupportUpdateListener(); stmt.Events += listener.Update; // preload Log.Info("Preload"); for (int i = 0; i < 10; i++) { epService.EPRuntime.SendEvent(new SupportBean_ST1("ST1_" + i, "K", i)); } for (int i = 0; i < 10000; i++) { epService.EPRuntime.SendEvent(new SupportBean_ST0("ST0_" + i, "K", i)); } Log.Info("Preload done"); long startTime = DateTimeHelper.CurrentTimeMillis; for (int i = 0; i < 100; i++) { long index = 5000 + i; epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R", "K", index, index + 2)); Assert.AreEqual(30, listener.GetAndResetLastNewData().Length); } long endTime = DateTimeHelper.CurrentTimeMillis; long delta = endTime - startTime; epService.EPRuntime.SendEvent(new SupportBean_ST0("ST0X", "K", 5000)); Assert.AreEqual(10, listener.GetAndResetLastNewData().Length); epService.EPRuntime.SendEvent(new SupportBean_ST1("ST1X", "K", 5004)); Assert.AreEqual(301, listener.GetAndResetLastNewData().Length); Assert.IsTrue(delta < 500, "Failed perf test, delta=" + delta); stmt.Dispose(); }
public void TestPerfCoercion3WayRange() { _epService.EPAdministrator.Configuration.AddEventType("SupportBean_ST0", typeof(SupportBean_ST0)); _epService.EPAdministrator.Configuration.AddEventType("SupportBean_ST1", typeof(SupportBean_ST1)); _epService.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); String stmtText = "select * from " + "SupportBeanRange.win:keepall() sbr " + " left outer join " + "SupportBean_ST0.win:keepall() s0 on s0.key0=sbr.key" + " left outer join " + "SupportBean_ST1.win:keepall() s1 on s1.key1=s0.key0" + " where s0.P00 between sbr.rangeStartLong and sbr.rangeEndLong"; EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText); stmt.Events += _listener.Update; // preload log.Info("Preload"); for (int i = 0; i < 10; i++) { _epService.EPRuntime.SendEvent(new SupportBean_ST1("ST1_" + i, "K", i)); } for (int i = 0; i < 10000; i++) { _epService.EPRuntime.SendEvent(new SupportBean_ST0("ST0_" + i, "K", i)); } log.Info("Preload done"); long startTime = PerformanceObserver.MilliTime; for (int i = 0; i < 100; i++) { long index = 5000 + i; _epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R", "K", index, index + 2)); Assert.AreEqual(30, _listener.GetAndResetLastNewData().Length); } long endTime = PerformanceObserver.MilliTime; long delta = endTime - startTime; _epService.EPRuntime.SendEvent(new SupportBean_ST0("ST0X", "K", 5000)); Assert.AreEqual(10, _listener.GetAndResetLastNewData().Length); _epService.EPRuntime.SendEvent(new SupportBean_ST1("ST1X", "K", 5004)); Assert.AreEqual(301, _listener.GetAndResetLastNewData().Length); Assert.IsTrue(delta < 500, "Failed perf test, delta=" + delta); }
private void RunAssertionMultiRangeAndKey(EPServiceProvider epService, bool isNamedWindow) { epService.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); var eplCreate = isNamedWindow ? "create window MyInfraMRAK#keepall as SupportBeanRange" : "create table MyInfraMRAK(id string primary key, key string, keyLong long, rangeStartLong long primary key, rangeEndLong long primary key)"; epService.EPAdministrator.CreateEPL(eplCreate); var eplInsert = isNamedWindow ? "insert into MyInfraMRAK select * from SupportBeanRange" : "on SupportBeanRange t0 merge MyInfraMRAK t1 where t0.id = t1.id when not matched then insert select id, key, keyLong, rangeStartLong, rangeEndLong"; epService.EPAdministrator.CreateEPL(eplInsert); epService.EPAdministrator.CreateEPL( "create index idx1 on MyInfraMRAK(key hash, keyLong hash, rangeStartLong btree, rangeEndLong btree)"); var fields = "id".Split(','); var query1 = "select * from MyInfraMRAK where rangeStartLong > 1 and rangeEndLong > 2 and keyLong=1 and key='K1' order by id asc"; RunQueryAssertion(epService, query1, fields, null); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("E1", "K1", 1L, 2L, 3L)); RunQueryAssertion(epService, query1, fields, new[] {new object[] {"E1"}}); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("E2", "K1", 1L, 2L, 4L)); RunQueryAssertion(epService, query1, fields, new[] {new object[] {"E1"}, new object[] {"E2"}}); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("E3", "K1", 1L, 3L, 3L)); RunQueryAssertion( epService, query1, fields, new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}}); var query2 = "select * from MyInfraMRAK where rangeStartLong > 1 and rangeEndLong > 2 and keyLong=1 order by id asc"; RunQueryAssertion( epService, query2, fields, new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}}); Assert.AreEqual(isNamedWindow ? 1 : 2, GetIndexCount(epService, isNamedWindow, "MyInfraMRAK")); epService.EPAdministrator.DestroyAllStatements(); epService.EPAdministrator.Configuration.RemoveEventType("MyInfraMRAK", false); }
public void Run(RegressionEnvironment env) { var stmtText = "@Name('s0') select * from " + "SupportBeanRange#keepall sbr " + " left outer join " + "SupportBean_ST0#keepall S0 on S0.Key0=sbr.Key" + " left outer join " + "SupportBean_ST1#keepall S1 on S1.Key1=S0.Key0" + " where S0.P00 between sbr.RangeStartLong and sbr.RangeEndLong"; env.CompileDeployAddListenerMileZero(stmtText, "s0"); // preload log.Info("Preload"); for (var i = 0; i < 10; i++) { env.SendEventBean(new SupportBean_ST1("ST1_" + i, "K", i)); } for (var i = 0; i < 10000; i++) { env.SendEventBean(new SupportBean_ST0("ST0_" + i, "K", i)); } log.Info("Preload done"); var startTime = PerformanceObserver.MilliTime; for (var i = 0; i < 100; i++) { long index = 5000 + i; env.SendEventBean(SupportBeanRange.MakeLong("R", "K", index, index + 2)); Assert.AreEqual(30, env.Listener("s0").GetAndResetLastNewData().Length); } var endTime = PerformanceObserver.MilliTime; var delta = endTime - startTime; env.SendEventBean(new SupportBean_ST0("ST0X", "K", 5000)); Assert.AreEqual(10, env.Listener("s0").GetAndResetLastNewData().Length); env.SendEventBean(new SupportBean_ST1("ST1X", "K", 5004)); Assert.AreEqual(301, env.Listener("s0").GetAndResetLastNewData().Length); Assert.That(delta, Is.LessThan(500), "Failed perf test, delta=" + delta); env.UndeployAll(); }
private void RunAssertionKeyAndRangeIndex(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); var stmtText = "select * from SupportBeanRange sbr, " + " sql:MyDB ['select mycol1, mycol3 from mytesttable_large'] as s1 where mycol1 = key and mycol3 between rangeStart and rangeEnd"; var statement = epService.EPAdministrator.CreateEPL(stmtText); var listener = new SupportUpdateListener(); statement.AddListener(listener); var startTime = PerformanceObserver.MilliTime; for (var i = 0; i < 1000; i++) { epService.EPRuntime.SendEvent(new SupportBeanRange("R", "11", 10, 12)); Assert.AreEqual(1, listener.GetAndResetLastNewData().Length); } var endTime = PerformanceObserver.MilliTime; var delta = endTime - startTime; Log.Info("delta=" + delta); Assert.IsTrue(delta < 500, "Delta=" + delta); // test coercion statement.Dispose(); stmtText = "select * from SupportBeanRange sbr, " + " sql:MyDB ['select mycol1, mycol3 from mytesttable_large'] as s1 where mycol1 = key and mycol3 between rangeStartLong and rangeEndLong"; statement = epService.EPAdministrator.CreateEPL(stmtText); listener = new SupportUpdateListener(); statement.AddListener(listener); epService.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R", "11", 10L, 12L)); Assert.AreEqual(1, listener.GetAndResetLastNewData().Length); statement.Dispose(); }
public void TestRangeIndex() { _epServiceRetained.EPAdministrator.Configuration.AddEventType("SupportBeanRange", typeof(SupportBeanRange)); String stmtText = "select * from SupportBeanRange sbr, " + " sql:MyDB ['select mycol1, mycol3 from mytesttable_large'] as s1 where mycol3 between rangeStart and rangeEnd"; EPStatement statement = _epServiceRetained.EPAdministrator.CreateEPL(stmtText); _listener = new SupportUpdateListener(); statement.Events += _listener.Update; long startTime = PerformanceObserver.MilliTime; for (int i = 0; i < 1000; i++) { _epServiceRetained.EPRuntime.SendEvent(new SupportBeanRange("R", 10, 12)); Assert.AreEqual(3, _listener.GetAndResetLastNewData().Length); } long endTime = PerformanceObserver.MilliTime; long delta = endTime - startTime; Log.Info("delta=" + delta); Assert.IsTrue(delta < 500, "Delta=" + delta); // test coercion statement.Dispose(); stmtText = "select * from SupportBeanRange sbr, " + " sql:MyDB ['select mycol1, mycol3 from mytesttable_large'] as s1 where mycol3 between rangeStartLong and rangeEndLong"; statement = _epServiceRetained.EPAdministrator.CreateEPL(stmtText); _listener = new SupportUpdateListener(); statement.Events += _listener.Update; _epServiceRetained.EPRuntime.SendEvent(SupportBeanRange.MakeLong("R", "K", 10L, 12L)); Assert.AreEqual(3, _listener.GetAndResetLastNewData().Length); }
public void TestJoinAndLifecyle() { var stmt = _epService.EPAdministrator.CreateEPL("create window MyVDW.test:vdw(1, 'abc') as SupportBean"); // define some test data to return, via lookup var window = (SupportVirtualDW)GetFromContext("/virtualdw/MyVDW"); var supportBean = new SupportBean("S1", 100); supportBean.LongPrimitive = 50; window.Data = supportBean.AsSingleton(); Assert.NotNull(window.Context.EventFactory); Assert.AreEqual("MyVDW", window.Context.EventType.Name); Assert.NotNull(window.Context.StatementContext); Assert.AreEqual(2, window.Context.Parameters.Length); Assert.AreEqual(1, window.Context.Parameters[0]); Assert.AreEqual("abc", window.Context.Parameters[1]); Assert.AreEqual("MyVDW", window.Context.NamedWindowName); // test no-criteria join var fields = "st0.id,vdw.TheString,vdw.IntPrimitive".Split(','); var stmtJoinAll = _epService.EPAdministrator.CreateEPL("select * from MyVDW vdw, SupportBean_ST0.std:lastevent() st0"); stmtJoinAll.Events += _listener.Update; AssertIndexSpec(window.LastRequestedIndex, "", ""); _epService.EPRuntime.SendEvent(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { "E1", "S1", 100 }); EPAssertionUtil.AssertEqualsExactOrder(new Object[] { }, window.LastAccessKeys); stmtJoinAll.Dispose(); // test single-criteria join var stmtJoinSingle = _epService.EPAdministrator.CreateEPL("select * from MyVDW vdw, SupportBean_ST0.std:lastevent() st0 where vdw.TheString = st0.id"); stmtJoinSingle.Events += _listener.Update; AssertIndexSpec(window.LastRequestedIndex, "TheString=(String)", ""); _epService.EPRuntime.SendEvent(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertEqualsExactOrder(new Object[] { "E1" }, window.LastAccessKeys); Assert.IsFalse(_listener.IsInvoked); _epService.EPRuntime.SendEvent(new SupportBean_ST0("S1", 0)); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new Object[] { "S1", "S1", 100 }); EPAssertionUtil.AssertEqualsExactOrder(new Object[] { "S1" }, window.LastAccessKeys); stmtJoinSingle.Dispose(); // test multi-criteria join var stmtJoinMulti = _epService.EPAdministrator.CreateEPL("select vdw.TheString from MyVDW vdw, SupportBeanRange.std:lastevent() st0 " + "where vdw.TheString = st0.id and LongPrimitive = keyLong and IntPrimitive between rangeStart and rangeEnd"); stmtJoinMulti.Events += _listener.Update; AssertIndexSpec(window.LastRequestedIndex, "TheString=(String)|LongPrimitive=(Nullable<Int64>)", "IntPrimitive[,](Nullable<Int32>)"); _epService.EPRuntime.SendEvent(SupportBeanRange.MakeKeyLong("S1", 50L, 80, 120)); EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "vdw.TheString".Split(','), new Object[] { "S1" }); EPAssertionUtil.AssertEqualsExactOrder(new Object[] { "S1", 50L, new VirtualDataWindowKeyRange(80, 120) }, window.LastAccessKeys); // destroy stmt.Dispose(); Assert.IsNull(GetFromContext("/virtualdw/MyVDW")); Assert.IsTrue(window.IsDestroyed); }
private void RunAssertionJoinAndLifecyle(RegressionEnvironment env) { var path = new RegressionPath(); env.CompileDeploy("create window MyVDW.test:vdw(1, 'abc') as SupportBean", path); var fields = new [] { "st0.Id","vdw.TheString","vdw.IntPrimitive" }; // define some test data to return, via lookup var window = (SupportVirtualDW) GetFromContext(env, "/virtualdw/MyVDW"); var supportBean = new SupportBean("S1", 100); supportBean.LongPrimitive = 50; window.Data = Collections.SingletonSet<object>(supportBean); Assert.IsNotNull(window.Context.EventFactory); Assert.AreEqual("MyVDW", window.Context.EventType.Name); Assert.IsNotNull(window.Context.StatementContext); Assert.AreEqual(2, window.Context.Parameters.Length); Assert.AreEqual(1, window.Context.Parameters[0]); Assert.AreEqual("abc", window.Context.Parameters[1]); Assert.AreEqual("MyVDW", window.Context.NamedWindowName); // test no-criteria join env.CompileDeploy("@Name('s0') select * from MyVDW vdw, SupportBean_ST0#lastevent st0", path) .AddListener("s0"); AssertIndexSpec(window.LastRequestedLookup, "", ""); env.SendEventBean(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E1", "S1", 100}); EPAssertionUtil.AssertEqualsExactOrder(new object[] { }, window.LastAccessKeys); env.UndeployModuleContaining("s0"); // test single-criteria join env.CompileDeploy( "@Name('s0') select * from MyVDW vdw, SupportBean_ST0#lastevent st0 where vdw.TheString = st0.Id", path) .AddListener("s0"); AssertIndexSpec(window.RequestedLookups[1], "TheString=(System.String)", ""); env.SendEventBean(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertEqualsExactOrder(new object[] {"E1"}, window.LastAccessKeys); Assert.IsFalse(env.Listener("s0").IsInvoked); env.SendEventBean(new SupportBean_ST0("S1", 0)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"S1", "S1", 100}); EPAssertionUtil.AssertEqualsExactOrder(new object[] {"S1"}, window.LastAccessKeys); env.UndeployModuleContaining("s0"); // test multi-criteria join env.CompileDeploy( "@Name('s0') select vdw.TheString from MyVDW vdw, SupportBeanRange#lastevent st0 " + "where vdw.TheString = st0.Id and LongPrimitive = KeyLong and IntPrimitive between RangeStart and RangeEnd", path); env.AddListener("s0"); AssertIndexSpec( window.RequestedLookups[1], "TheString=(System.String)|LongPrimitive=(System.Nullable<System.Int64>)", "IntPrimitive[,](System.Nullable<System.Int32>)"); env.SendEventBean(SupportBeanRange.MakeKeyLong("S1", 50L, 80, 120)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), new [] { "vdw.TheString" }, new object[] {"S1"}); EPAssertionUtil.AssertEqualsExactOrder( new object[] {"S1", 50L, new VirtualDataWindowKeyRange(80, 120)}, window.LastAccessKeys); // destroy env.UndeployAll(); Assert.IsNull(GetFromContext(env, "/virtualdw/MyVDW")); Assert.IsTrue(window.IsDestroyed); env.UndeployAll(); }
public void Run(RegressionEnvironment env) { var milestone = new AtomicLong(); var fields = new[] {"sbs", "sbi", "sbri"}; var epl = "@Name('s0') select sb.TheString as sbs, sb.IntPrimitive as sbi, sbr.Id as sbri from SupportBean#length(10) sb, SupportBeanRange#length(10) sbr " + "where IntPrimitive between RangeStartLong and RangeEndLong"; env.CompileDeployAddListenerMile(epl, "s0", milestone.GetAndIncrement()); env.SendEventBean(SupportBeanRange.MakeLong("R1", "G", 100L, 200L)); env.SendEventBean(new SupportBean("E1", 10)); Assert.IsFalse(env.Listener("s0").IsInvoked); env.SendEventBean(new SupportBean("E2", 100)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E2", 100, "R1"}); env.SendEventBean(SupportBeanRange.MakeLong("R2", "G", 90L, 100L)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E2", 100, "R2"}); env.SendEventBean(SupportBeanRange.MakeLong("R3", "G", 1L, 99L)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"E1", 10, "R3"}); env.SendEventBean(SupportBeanRange.MakeLong("R4", "G", 2000L, 3000L)); env.SendEventBean(new SupportBean("E1", 1000)); Assert.IsFalse(env.Listener("s0").IsInvoked); env.UndeployAll(); epl = "@Name('s0') select sb.TheString as sbs, sb.IntPrimitive as sbi, sbr.Id as sbri from SupportBean#length(10) sb, SupportBeanRange#length(10) sbr " + "where sbr.Key = sb.TheString and IntPrimitive between RangeStartLong and RangeEndLong"; env.CompileDeployAddListenerMile(epl, "s0", milestone.GetAndIncrement()); env.SendEventBean(SupportBeanRange.MakeLong("R1", "G", 100L, 200L)); env.SendEventBean(new SupportBean("G", 10)); Assert.IsFalse(env.Listener("s0").IsInvoked); env.SendEventBean(new SupportBean("G", 101)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"G", 101, "R1"}); env.SendEventBean(SupportBeanRange.MakeLong("R2", "G", 90L, 102L)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"G", 101, "R2"}); env.SendEventBean(SupportBeanRange.MakeLong("R3", "G", 1L, 99L)); EPAssertionUtil.AssertProps( env.Listener("s0").AssertOneGetNewAndReset(), fields, new object[] {"G", 10, "R3"}); env.SendEventBean(SupportBeanRange.MakeLong("R4", "G", 2000L, 3000L)); env.SendEventBean(new SupportBean("G", 1000)); Assert.IsFalse(env.Listener("s0").IsInvoked); env.UndeployAll(); }
private void RunAssertionJoinAndLifecyle(EPServiceProvider epService) { EPStatement stmt = epService.EPAdministrator.CreateEPL("create window MyVDW.test:vdw(1, 'abc') as SupportBean"); // define some test data to return, via lookup SupportVirtualDW window = (SupportVirtualDW)GetFromContext(epService, "/virtualdw/MyVDW"); var supportBean = new SupportBean("S1", 100); supportBean.LongPrimitive = 50; window.Data = Collections.SingletonList <object>(supportBean); Assert.IsNotNull(window.Context.EventFactory); Assert.AreEqual("MyVDW", window.Context.EventType.Name); Assert.IsNotNull(window.Context.StatementContext); Assert.AreEqual(2, window.Context.Parameters.Length); Assert.AreEqual(1, window.Context.Parameters[0]); Assert.AreEqual("abc", window.Context.Parameters[1]); Assert.AreEqual("MyVDW", window.Context.NamedWindowName); // test no-criteria join string[] fields = "st0.id,vdw.TheString,vdw.IntPrimitive".Split(','); EPStatement stmtJoinAll = epService.EPAdministrator.CreateEPL("select * from MyVDW vdw, SupportBean_ST0#lastevent st0"); var listener = new SupportUpdateListener(); stmtJoinAll.Events += listener.Update; AssertIndexSpec(window.LastRequestedIndex, "", ""); epService.EPRuntime.SendEvent(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "E1", "S1", 100 }); EPAssertionUtil.AssertEqualsExactOrder(new object[] {}, window.LastAccessKeys); stmtJoinAll.Dispose(); // test single-criteria join EPStatement stmtJoinSingle = epService.EPAdministrator.CreateEPL("select * from MyVDW vdw, SupportBean_ST0#lastevent st0 where vdw.TheString = st0.Id"); stmtJoinSingle.Events += listener.Update; AssertIndexSpec(window.LastRequestedIndex, "TheString=(System.String)", ""); epService.EPRuntime.SendEvent(new SupportBean_ST0("E1", 0)); EPAssertionUtil.AssertEqualsExactOrder(new object[] { "E1" }, window.LastAccessKeys); Assert.IsFalse(listener.IsInvoked); epService.EPRuntime.SendEvent(new SupportBean_ST0("S1", 0)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), fields, new object[] { "S1", "S1", 100 }); EPAssertionUtil.AssertEqualsExactOrder(new object[] { "S1" }, window.LastAccessKeys); stmtJoinSingle.Dispose(); // test multi-criteria join EPStatement stmtJoinMulti = epService.EPAdministrator.CreateEPL("select vdw.TheString from MyVDW vdw, SupportBeanRange#lastevent st0 " + "where vdw.TheString = st0.id and LongPrimitive = keyLong and IntPrimitive between rangeStart and rangeEnd"); stmtJoinMulti.Events += listener.Update; AssertIndexSpec(window.LastRequestedIndex, "TheString=(System.String)|" + "LongPrimitive=(" + TypeHelper.GetCleanName <long?>() + ")", "IntPrimitive[,](" + TypeHelper.GetCleanName <int?>() + ")"); epService.EPRuntime.SendEvent(SupportBeanRange.MakeKeyLong("S1", 50L, 80, 120)); EPAssertionUtil.AssertProps(listener.AssertOneGetNewAndReset(), "vdw.TheString".Split(','), new object[] { "S1" }); EPAssertionUtil.AssertEqualsExactOrder(new object[] { "S1", 50L, new VirtualDataWindowKeyRange(80, 120) }, window.LastAccessKeys); // destroy stmt.Dispose(); Assert.IsNull(GetFromContext(epService, "/virtualdw/MyVDW")); Assert.IsTrue(window.IsDestroyed); DestroyStmtsRemoveTypes(epService); }
public void Run(RegressionEnvironment env) { var path = new RegressionPath(); var eplCreate = namedWindow ? "@Name('create') create window MyInfraMRAK#keepall as SupportBeanRange" : "@Name('create') create table MyInfraMRAK(Id string primary key, Key string, KeyLong long, RangeStartLong long primary key, RangeEndLong long primary key)"; env.CompileDeploy(eplCreate, path); var eplInsert = namedWindow ? "insert into MyInfraMRAK select * from SupportBeanRange" : "on SupportBeanRange t0 merge MyInfraMRAK t1 where t0.Id = t1.Id when not matched then insert select Id, Key, KeyLong, RangeStartLong, RangeEndLong"; env.CompileDeploy(eplInsert, path); env.CompileDeploy( "create index Idx1 on MyInfraMRAK(Key hash, KeyLong hash, RangeStartLong btree, RangeEndLong btree)", path); var fields = new [] { "Id" }; var query1 = "select * from MyInfraMRAK where RangeStartLong > 1 and RangeEndLong > 2 and KeyLong=1 and Key='K1' order by Id asc"; RunQueryAssertion(env, path, query1, fields, null); env.SendEventBean(SupportBeanRange.MakeLong("E1", "K1", 1L, 2L, 3L)); RunQueryAssertion( env, path, query1, fields, new[] {new object[] {"E1"}}); env.SendEventBean(SupportBeanRange.MakeLong("E2", "K1", 1L, 2L, 4L)); RunQueryAssertion( env, path, query1, fields, new[] {new object[] {"E1"}, new object[] {"E2"}}); env.Milestone(0); env.SendEventBean(SupportBeanRange.MakeLong("E3", "K1", 1L, 3L, 3L)); RunQueryAssertion( env, path, query1, fields, new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}}); var query2 = "select * from MyInfraMRAK where RangeStartLong > 1 and RangeEndLong > 2 and KeyLong=1 order by Id asc"; RunQueryAssertion( env, path, query2, fields, new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}}); Assert.AreEqual(namedWindow ? 1 : 2, GetIndexCount(env, namedWindow, "create", "MyInfraMRAK")); env.UndeployAll(); }