コード例 #1
0
            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();
            }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
            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();
            }
コード例 #7
0
        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();
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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();
        }
コード例 #11
0
            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();
            }
コード例 #12
0
        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);
        }
コード例 #13
0
            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();
            }