示例#1
0
        private void RunAssertionSubSelect(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();

            EPStatement stmt = epService.EPAdministrator.CreateEPL("select TheString from SupportBean s0 where " +
                                                                   "exists (select * from OrderEvent[books][reviews]#unique(reviewId) where reviewId = s0.IntPrimitive)");
            var listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());

            epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            Assert.IsTrue(listener.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("E2", -1));
            Assert.IsFalse(listener.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("E2", 201));
            Assert.IsTrue(listener.GetAndClearIsInvoked());

            stmt.Dispose();
        }
示例#2
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "TheString","IntPrimitive" };
                var path = new RegressionPath();

                env.CompileDeploy("create window SupportBeanWindow#lastevent as SupportBean", path);
                env.CompileDeploy("insert into SupportBeanWindow select * from SupportBean", path);
                env.CompileDeploy("create window OrderWindowNWOT#lastevent as OrderBean", path);
                env.CompileDeploy("insert into OrderWindowNWOT select * from OrderBean", path);

                var stmtText =
                    "@Name('s0') on OrderWindowNWOT[Books] owb select sbw.* from SupportBeanWindow sbw where TheString = Title";
                env.CompileDeploy(stmtText, path).AddListener("s0");

                env.SendEventBean(new SupportBean("E1", 1));
                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean("Foundation 2", 2));
                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"Foundation 2", 2}});

                env.UndeployAll();
            }
示例#3
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "ReviewId" };

                var stmtText =
                    "@Name('s0') select ReviewId from OrderBean[Books][Reviews] bookReviews order by ReviewId asc";
                env.CompileDeploy(stmtText).AddListener("s0");
                AssertStatelessStmt(env, "s0", true);

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {1}, new object[] {2}, new object[] {10}});
                env.Listener("s0").Reset();

                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {201}});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
示例#4
0
        private void RunAssertionNamedWindowOnTrigger(EPServiceProvider epService)
        {
            string[] fields = "TheString,IntPrimitive".Split(',');
            epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();

            epService.EPAdministrator.CreateEPL("create window SupportBeanWindow#lastevent as SupportBean");
            epService.EPAdministrator.CreateEPL("insert into SupportBeanWindow select * from SupportBean");
            epService.EPAdministrator.CreateEPL("create window OrderWindowNWOT#lastevent as OrderEvent");
            epService.EPAdministrator.CreateEPL("insert into OrderWindowNWOT select * from OrderEvent");

            string      stmtText = "on OrderWindowNWOT[books] owb select sbw.* from SupportBeanWindow sbw where TheString = title";
            EPStatement stmt     = epService.EPAdministrator.CreateEPL(stmtText);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(listener.IsInvoked);

            epService.EPRuntime.SendEvent(new SupportBean("Foundation 2", 2));
            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "Foundation 2", 2 } });

            epService.EPAdministrator.DestroyAllStatements();
        }
示例#5
0
        public void TestUnidirectionalJoinCount()
        {
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            string stmtText = "select count(*) from " +
                              "OrderEvent orderEvent unidirectional, " +
                              "OrderEvent[books] as book, " +
                              "OrderEvent[orderdetail.items] item " +
                              "where book.bookId = item.productId order by book.bookId asc, item.amount asc";

            EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 3L });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 1L });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventThree());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 1L });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(_listener.IsInvoked);
        }
示例#6
0
        private void RunAssertionPatternSelect(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();

            EPStatement stmt = epService.EPAdministrator.CreateEPL("select * from pattern [" +
                                                                   "every r=OrderEvent[books][reviews] -> SupportBean(IntPrimitive = r[0].reviewId)]");
            var listener = new SupportUpdateListener();

            stmt.Events += listener.Update;


            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());

            epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            Assert.IsTrue(listener.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("E2", -1));
            Assert.IsFalse(listener.GetAndClearIsInvoked());

            epService.EPRuntime.SendEvent(new SupportBean("E2", 201));
            Assert.IsTrue(listener.GetAndClearIsInvoked());

            stmt.Dispose();
        }
示例#7
0
        private void RunAssertionPropertyEval(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType("OrderBean", typeof(OrderBean));

            string[] fields = "c1,c2".Split(',');
            epService.EPAdministrator.CreateEPL("create window MyWindowPE#keepall as (c1 string, c2 string)");

            string epl = "on OrderBean[books] " +
                         "merge MyWindowPE mw " +
                         "when not matched then " +
                         "insert select bookId as c1, title as c2 ";
            EPStatement stmt          = epService.EPAdministrator.CreateEPL(epl);
            var         mergeListener = new SupportUpdateListener();

            stmt.Events += mergeListener.Update;

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(mergeListener.LastNewData, fields, new object[][] {
                new object[] { "10020", "Enders Game" },
                new object[] { "10021", "Foundation 1" },
                new object[] { "10022", "Stranger in a Strange Land" }
            });

            epService.EPAdministrator.DestroyAllStatements();
        }
示例#8
0
        private void TryAssertionFromClauseAsMultiple(EPServiceProvider epService, bool soda)
        {
            var epl = "on OrderEvent as oe " +
                      "insert into StartEvent select oe.orderdetail.OrderId as oi " +
                      "insert into ThenEvent select * from [select oe.orderdetail.OrderId as oi, ItemId from orderdetail.Items] as item " +
                      "insert into MoreEvent select oe.orderdetail.OrderId as oi, item.ItemId as ItemId from [select oe, * from orderdetail.Items] as item " +
                      "output all";

            SupportModelHelper.CreateByCompileOrParse(epService, soda, epl);

            var listeners = GetListeners();

            epService.EPAdministrator.CreateEPL("select * from StartEvent").Events += listeners[0].Update;
            epService.EPAdministrator.CreateEPL("select * from ThenEvent").Events  += listeners[1].Update;
            epService.EPAdministrator.CreateEPL("select * from MoreEvent").Events  += listeners[2].Update;

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            var fieldsOrderId = "oi".Split(',');
            var fieldsItems   = "oi,ItemId".Split(',');

            EPAssertionUtil.AssertProps(listeners[0].AssertOneGetNewAndReset(), fieldsOrderId, new object[] { "PO200901" });
            var expected = new[] { new object[] { "PO200901", "A001" }, new object[] { "PO200901", "A002" }, new object[] { "PO200901", "A003" } };

            EPAssertionUtil.AssertPropsPerRow(listeners[1].GetAndResetDataListsFlattened().First, fieldsItems, expected);
            EPAssertionUtil.AssertPropsPerRow(listeners[2].GetAndResetDataListsFlattened().First, fieldsItems, expected);

            epService.EPAdministrator.DestroyAllStatements();
        }
示例#9
0
        public void TestJoin()
        {
            string[] fields = "book.bookId,item.itemId,amount".Split(',');
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            string stmtText = "select book.bookId,item.itemId,amount from " +
                              "OrderEvent[books]#firstunique(bookId) book, " +
                              "OrderEvent[orderdetail.items]#keepall item " +
                              "where book.bookId = item.productId " +
                              "order by book.bookId, item.itemId";

            EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "10020", "A001", 10 }, new object[] { "10020", "A003", 30 }, new object[] { "10021", "A002", 25 } });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { "10020", "A001", 10 }, new object[] { "10020", "A003", 30 }, new object[] { "10021", "A002", 25 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "10022", "B001", 5 } });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { "10020", "A001", 10 }, new object[] { "10020", "A003", 30 }, new object[] { "10021", "A002", 25 }, new object[] { "10022", "B001", 5 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventThree());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "10021", "C001", 50 } });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { "10020", "A001", 10 }, new object[] { "10020", "A003", 30 }, new object[] { "10021", "A002", 25 }, new object[] { "10021", "C001", 50 }, new object[] { "10022", "B001", 5 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(_listener.IsInvoked);
        }
示例#10
0
        public void TestJoinCount()
        {
            string[] fields = "count(*)".Split(',');
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            string stmtText = "select count(*) from " +
                              "OrderEvent[books]#unique(bookId) book, " +
                              "OrderEvent[orderdetail.items]#keepall item " +
                              "where book.bookId = item.productId";

            EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { 3L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 3L } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 4L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 4L } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventThree());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 5L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 5L } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), "count(*)".Split(','), new object[] { 8L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 8L } });
        }
示例#11
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "TheString","TotalPrice" };

                var path = new RegressionPath();
                env.CompileDeploy("create window OrderWindowNWS#lastevent as OrderBean", path);
                env.CompileDeploy("insert into OrderWindowNWS select * from OrderBean", path);

                var stmtText =
                    "@Name('s0') select *, (select sum(Price) from OrderWindowNWS[Books]) as TotalPrice from SupportBean";
                env.CompileDeploy(stmtText, path).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                env.SendEventBean(new SupportBean("E1", 1));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"E1", 24d + 35d + 27d}});
                env.Listener("s0").Reset();

                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                env.SendEventBean(new SupportBean("E2", 2));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"E2", 15d + 13d}});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
示例#12
0
        public void TestPropertyAccess()
        {
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));

            EPStatement stmtOne = _epService.EPAdministrator.CreateEPL("@IterableUnbound select bookId from OrderEvent[books]");

            stmtOne.AddListener(_listener);
            EPStatement stmtTwo = _epService.EPAdministrator.CreateEPL("@IterableUnbound select books[0].author as val from OrderEvent(books[0].bookId = '10020')");

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, "bookId".Split(','), new object[][] { new[] { "10020" }, new[] { "10021" }, new[] { "10022" } });
            _listener.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmtOne.GetEnumerator(), "bookId".Split(','), new object[][] { new[] { "10020" }, new[] { "10021" }, new[] { "10022" } });
            EPAssertionUtil.AssertPropsPerRow(stmtTwo.GetEnumerator(), "val".Split(','), new object[][] { new[] { "Orson Scott Card" } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, "bookId".Split(','), new object[][] { new[] { "10031" }, new[] { "10032" } });
            _listener.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmtOne.GetEnumerator(), "bookId".Split(','), new object[][] { new[] { "10031" }, new[] { "10032" } });
            EPAssertionUtil.AssertPropsPerRow(stmtTwo.GetEnumerator(), "val".Split(','), new object[][] { new[] { "Orson Scott Card" } });

            // add where clause
            stmtOne.Dispose();
            stmtTwo.Dispose();
            stmtOne = _epService.EPAdministrator.CreateEPL("select bookId from OrderEvent[books where author='Orson Scott Card']");
            stmtOne.AddListener(_listener);
            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, "bookId".Split(','), new object[][] { new[] { "10020" } });
            _listener.Reset();
        }
示例#13
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "ReviewId" };

                var path = new RegressionPath();
                env.CompileDeploy("create window OrderWindowNWF#lastevent as OrderBean", path);
                env.CompileDeploy("insert into OrderWindowNWF select * from OrderBean", path);

                var stmtText =
                    "@Name('s0') select ReviewId from OrderWindowNWF[Books][Reviews] bookReviews order by ReviewId asc";
                env.CompileDeploy(stmtText, path).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {1}, new object[] {2}, new object[] {10}});
                env.Listener("s0").Reset();

                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {201}});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
示例#14
0
        private void RunAssertionFromClauseBeginBodyEnd(bool soda)
        {
            String epl = "on OrderEvent " +
                         "insert into BeginEvent select orderdetail.OrderId as OrderId " +
                         "insert into OrderItem select * from [select orderdetail.OrderId as OrderId, * from orderdetail.Items] " +
                         "insert into EndEvent select orderdetail.OrderId as OrderId " +
                         "output all";

            SupportModelHelper.CreateByCompileOrParse(_epService, soda, epl);

            _epService.EPAdministrator.CreateEPL("select * from BeginEvent").AddListener(_listeners[0]);
            _epService.EPAdministrator.CreateEPL("select * from OrderItem").AddListener(_listeners[1]);
            _epService.EPAdministrator.CreateEPL("select * from EndEvent").AddListener(_listeners[2]);

            EventType typeOrderItem = _epService.EPAdministrator.Configuration.GetEventType("OrderItem");

            Assert.AreEqual("[Amount, ItemId, OrderId, Price, ProductId]", CompatExtensions.Render(Enumerable.OrderBy(typeOrderItem.PropertyNames, propName => propName)));

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            AssertFromClauseWContained("PO200901", new Object[][] { new Object[] { "PO200901", "A001" }, new Object[] { "PO200901", "A002" }, new Object[] { "PO200901", "A003" } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            AssertFromClauseWContained("PO200902", new Object[][] { new Object[] { "PO200902", "B001" } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            AssertFromClauseWContained("PO200904", new Object[0][]);

            _epService.EPAdministrator.DestroyAllStatements();
        }
示例#15
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "OrderId","BookId","ReviewId" };

                var stmtText =
                    "@Name('s0') select OrderDetail.OrderId as OrderId, BookFrag.BookId as BookId, reviewFrag.ReviewId as ReviewId " +
                    "from OrderBean[Books as Book][select myorder.*, Book.* as BookFrag, Review.* as reviewFrag from Reviews as Review] as myorder";
                env.CompileDeploy(stmtText).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {
                        new object[] {"PO200901", "10020", 1}, new object[] {"PO200901", "10020", 2},
                        new object[] {"PO200901", "10021", 10}
                    });
                env.Listener("s0").Reset();

                env.SendEventBean(OrderBeanFactory.MakeEventFour());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"PO200904", "10031", 201}});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
示例#16
0
        private void RunAssertionNamedWindowSubquery(EPServiceProvider epService)
        {
            string[] fields = "TheString,totalPrice".Split(',');
            epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();

            epService.EPAdministrator.CreateEPL("create window OrderWindowNWS#lastevent as OrderEvent");
            epService.EPAdministrator.CreateEPL("insert into OrderWindowNWS select * from OrderEvent");

            string      stmtText = "select *, (select sum(price) from OrderWindowNWS[books]) as totalPrice from SupportBean";
            EPStatement stmt     = epService.EPAdministrator.CreateEPL(stmtText);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E1", 24d + 35d + 27d } });
            listener.Reset();

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "E2", 15d + 13d } });
            listener.Reset();

            stmt.Dispose();
        }
示例#17
0
        private void RunAssertionUnderlyingSelect(EPServiceProvider epService)
        {
            string[] fields = "orderId,bookId,reviewId".Split(',');
            epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));

            string stmtText = "select orderdetail.orderId as orderId, bookFrag.bookId as bookId, reviewFrag.reviewId as reviewId " +
                              //string stmtText = "select * " +
                              "from OrderEvent[books as book][select myorder.*, book.* as bookFrag, review.* as reviewFrag from reviews as review] as myorder";
            EPStatement stmt     = epService.EPAdministrator.CreateEPL(stmtText);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] {
                new object[] { "PO200901", "10020", 1 },
                new object[] { "PO200901", "10020", 2 },
                new object[] { "PO200901", "10021", 10 }
            });
            listener.Reset();

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "PO200904", "10031", 201 } });
            listener.Reset();

            stmt.Dispose();
        }
示例#18
0
        private static void TryAssertionFromClauseOutputFirstWhere(
            RegressionEnvironment env,
            bool soda)
        {
            var path = new RegressionPath();
            var fieldsOrderId = new[] {"oe.OrderDetail.OrderId"};
            var epl = "on OrderBean as oe " +
                      "insert into HeaderEvent select OrderDetail.OrderId as OrderId where 1=2 " +
                      "insert into StreamOne select * from [select oe, * from OrderDetail.Items] where ProductId=\"10020\" " +
                      "insert into StreamTwo select * from [select oe, * from OrderDetail.Items] where ProductId=\"10022\" " +
                      "insert into StreamThree select * from [select oe, * from OrderDetail.Items] where ProductId in (\"10020\",\"10025\",\"10022\")";
            env.CompileDeploy(soda, epl, path);

            var listeners = GetListeners(env);
            string[] listenerEPL = {"select * from StreamOne", "select * from StreamTwo", "select * from StreamThree"};
            for (var i = 0; i < listenerEPL.Length; i++) {
                env.CompileDeploy("@Name('s" + i + "')" + listenerEPL[i], path).AddListener("s" + i, listeners[i]);
                listeners[i].Reset();
            }

            env.SendEventBean(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(
                listeners[0].AssertOneGetNewAndReset(),
                fieldsOrderId,
                new object[] {"PO200901"});
            Assert.IsFalse(listeners[1].IsInvoked);
            Assert.IsFalse(listeners[2].IsInvoked);

            env.SendEventBean(OrderBeanFactory.MakeEventTwo());
            Assert.IsFalse(listeners[0].IsInvoked);
            EPAssertionUtil.AssertProps(
                listeners[1].AssertOneGetNewAndReset(),
                fieldsOrderId,
                new object[] {"PO200902"});
            Assert.IsFalse(listeners[2].IsInvoked);

            env.SendEventBean(OrderBeanFactory.MakeEventThree());
            Assert.IsFalse(listeners[0].IsInvoked);
            Assert.IsFalse(listeners[1].IsInvoked);
            EPAssertionUtil.AssertProps(
                listeners[2].AssertOneGetNewAndReset(),
                fieldsOrderId,
                new object[] {"PO200903"});

            env.SendEventBean(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(listeners[0].IsInvoked);
            Assert.IsFalse(listeners[1].IsInvoked);
            Assert.IsFalse(listeners[2].IsInvoked);

            env.UndeployAll();
        }
示例#19
0
        private void RunAssertion()
        {
            string[] fields = "orderId,bookId,reviewId".Split(',');

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] {
                new object[] { "PO200901", "10020", 1 }, new object[] { "PO200901", "10020", 2 }, new object[] { "PO200901", "10021", 10 }
            });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "PO200904", "10031", 201 } });
            _listener.Reset();
        }
示例#20
0
        private void TryAssertionColumnSelect(EPServiceProvider epService, SupportUpdateListener listener)
        {
            string[] fields = "orderId,bookId,reviewId".Split(',');

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] {
                new object[] { "PO200901", "10020", 1 },
                new object[] { "PO200901", "10020", 2 },
                new object[] { "PO200901", "10021", 10 }
            });
            listener.Reset();

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(listener.LastNewData, fields, new object[][] { new object[] { "PO200904", "10031", 201 } });
            listener.Reset();
        }
示例#21
0
        private void RunAssertion()
        {
            string[] fields = "orderEvent.orderdetail.orderId,book.bookId,book.title,item.amount".Split(',');
            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            Assert.AreEqual(3, _listener.LastNewData.Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "PO200901", "10020", "Enders Game", 10 }, new object[] { "PO200901", "10020", "Enders Game", 30 }, new object[] { "PO200901", "10021", "Foundation 1", 25 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            Assert.AreEqual(1, _listener.LastNewData.Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "PO200902", "10022", "Stranger in a Strange Land", 5 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventThree());
            Assert.AreEqual(1, _listener.LastNewData.Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { "PO200903", "10021", "Foundation 1", 50 } });
        }
示例#22
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "ReviewId" };

                // try where in root
                var stmtText =
                    "@Name('s0') select ReviewId from OrderBean[Books where Title = 'Enders Game'][Reviews] bookReviews order by ReviewId asc";
                env.CompileDeploy(stmtText).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {1}, new object[] {2}});
                env.Listener("s0").Reset();

                // try where in different levels
                env.UndeployAll();
                stmtText =
                    "@Name('s0') select ReviewId from OrderBean[Books where Title = 'Enders Game'][Reviews where ReviewId in (1, 10)] bookReviews order by ReviewId asc";
                env.CompileDeploy(stmtText).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {1}});
                env.Listener("s0").Reset();

                // try where in combination
                env.UndeployAll();
                stmtText =
                    "@Name('s0') select ReviewId from OrderBean[Books as bc][Reviews as rw where rw.ReviewId in (1, 10) and bc.Title = 'Enders Game'] bookReviews order by ReviewId asc";
                env.CompileDeploy(stmtText).AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {1}});
                env.Listener("s0").Reset();
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.UndeployAll();
            }
示例#23
0
        public void TestAloneCount()
        {
            string[] fields = "count(*)".Split(',');
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));

            string      stmtText = "select count(*) from OrderEvent[books]";
            EPStatement stmt     = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { 3L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 3L } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { 5L });
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), fields, new object[][] { new object[] { 5L } });
        }
示例#24
0
        private static void TryAssertionFromClauseBeginBodyEnd(
            RegressionEnvironment env,
            bool soda)
        {
            var path = new RegressionPath();
            var epl = "@Name('split') on OrderBean " +
                      "insert into BeginEvent select OrderDetail.OrderId as OrderId " +
                      "insert into OrderItem select * from [select OrderDetail.OrderId as OrderId, * from OrderDetail.Items] " +
                      "insert into EndEvent select OrderDetail.OrderId as OrderId " +
                      "output all";
            env.CompileDeploy(soda, epl, path);
            Assert.AreEqual(
                StatementType.ON_SPLITSTREAM,
                env.Statement("split").GetProperty(StatementProperty.STATEMENTTYPE));

            var listeners = GetListeners(env);
            env.CompileDeploy("@Name('s0') select * from BeginEvent", path).AddListener("s0", listeners[0]);
            env.CompileDeploy("@Name('s1') select * from OrderItem", path).AddListener("s1", listeners[1]);
            env.CompileDeploy("@Name('s2') select * from EndEvent", path).AddListener("s2", listeners[2]);

            var orderItemType = env.Runtime.EventTypeService.GetEventType(env.DeploymentId("split"), "OrderItem");
            Assert.AreEqual("[\"Amount\", \"ItemId\", \"Price\", \"ProductId\", \"OrderId\"]", orderItemType.PropertyNames.RenderAny());

            env.SendEventBean(OrderBeanFactory.MakeEventOne());
            AssertFromClauseWContained(
                listeners,
                "PO200901",
                new[] {
                    new object[] {"PO200901", "A001"}, new object[] {"PO200901", "A002"},
                    new object[] {"PO200901", "A003"}
                });

            env.SendEventBean(OrderBeanFactory.MakeEventTwo());
            AssertFromClauseWContained(
                listeners,
                "PO200902",
                new[] {new object[] {"PO200902", "B001"}});

            env.SendEventBean(OrderBeanFactory.MakeEventFour());
            AssertFromClauseWContained(listeners, "PO200904", new object[0][]);

            env.UndeployAll();
        }
示例#25
0
        public void TestSimple()
        {
            string[] fields = "reviewId".Split(',');
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));

            string         stmtText = "select reviewId from OrderEvent[books][reviews] bookReviews order by reviewId asc";
            EPStatementSPI stmt     = (EPStatementSPI)_epService.EPAdministrator.CreateEPL(stmtText);

            Assert.IsTrue(stmt.StatementContext.IsStatelessSelect);
            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { 1 }, new object[] { 2 }, new object[] { 10 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { 201 } });
            _listener.Reset();
        }
示例#26
0
        private void TryAssertionFromClauseOutputFirstWhere(EPServiceProvider epService, bool soda)
        {
            var fieldsOrderId = "oe.orderdetail.OrderId".Split(',');
            var epl           = "on OrderEvent as oe " +
                                "insert into HeaderEvent select orderdetail.OrderId as OrderId where 1=2 " +
                                "insert into StreamOne select * from [select oe, * from orderdetail.Items] where productId=\"10020\" " +
                                "insert into StreamTwo select * from [select oe, * from orderdetail.Items] where productId=\"10022\" " +
                                "insert into StreamThree select * from [select oe, * from orderdetail.Items] where productId in (\"10020\",\"10025\",\"10022\")";

            SupportModelHelper.CreateByCompileOrParse(epService, soda, epl);

            var listeners   = GetListeners();
            var listenerEPL = new[] { "select * from StreamOne", "select * from StreamTwo", "select * from StreamThree" };

            for (var i = 0; i < listenerEPL.Length; i++)
            {
                epService.EPAdministrator.CreateEPL(listenerEPL[i]).Events += listeners[i].Update;
                listeners[i].Reset();
            }

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertProps(listeners[0].AssertOneGetNewAndReset(), fieldsOrderId, new object[] { "PO200901" });
            Assert.IsFalse(listeners[1].IsInvoked);
            Assert.IsFalse(listeners[2].IsInvoked);

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventTwo());
            Assert.IsFalse(listeners[0].IsInvoked);
            EPAssertionUtil.AssertProps(listeners[1].AssertOneGetNewAndReset(), fieldsOrderId, new object[] { "PO200902" });
            Assert.IsFalse(listeners[2].IsInvoked);

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventThree());
            Assert.IsFalse(listeners[0].IsInvoked);
            Assert.IsFalse(listeners[1].IsInvoked);
            EPAssertionUtil.AssertProps(listeners[2].AssertOneGetNewAndReset(), fieldsOrderId, new object[] { "PO200903" });

            epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsFalse(listeners[0].IsInvoked);
            Assert.IsFalse(listeners[1].IsInvoked);
            Assert.IsFalse(listeners[2].IsInvoked);

            epService.EPAdministrator.DestroyAllStatements();
        }
示例#27
0
        private static void TryAssertionColumnSelect(RegressionEnvironment env)
        {
            var fields = new [] { "OrderId","BookId","ReviewId" };

            env.SendEventBean(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(
                env.Listener("s0").LastNewData,
                fields,
                new[] {
                    new object[] {"PO200901", "10020", 1}, new object[] {"PO200901", "10020", 2},
                    new object[] {"PO200901", "10021", 10}
                });
            env.Listener("s0").Reset();

            env.SendEventBean(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(
                env.Listener("s0").LastNewData,
                fields,
                new[] {new object[] {"PO200904", "10031", 201}});
            env.Listener("s0").Reset();
        }
示例#28
0
        public void TestIRStreamArrayItem()
        {
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));
            string stmtText = "@IterableUnbound select irstream bookId from OrderEvent[books[0]]";

            EPStatement stmt = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, "bookId".Split(','), new object[][] { new[] { "10020" } });
            Assert.IsNull(_listener.LastOldData);
            _listener.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), "bookId".Split(','), new object[][] { new[] { "10020" } });

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            Assert.IsNull(_listener.LastOldData);
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, "bookId".Split(','), new object[][] { new[] { "10031" } });
            _listener.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), "bookId".Split(','), new object[][] { new[] { "10031" } });
        }
示例#29
0
        public void TestNamedWindowFilter()
        {
            string[] fields = "reviewId".Split(',');
            _epService.EPAdministrator.Configuration.AddEventType("OrderEvent", typeof(OrderBean));

            _epService.EPAdministrator.CreateEPL("create window OrderWindow#lastevent as OrderEvent");
            _epService.EPAdministrator.CreateEPL("insert into OrderWindow select * from OrderEvent");

            string      stmtText = "select reviewId from OrderWindow[books][reviews] bookReviews order by reviewId asc";
            EPStatement stmt     = _epService.EPAdministrator.CreateEPL(stmtText);

            stmt.AddListener(_listener);

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventOne());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { 1 }, new object[] { 2 }, new object[] { 10 } });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(OrderBeanFactory.MakeEventFour());
            EPAssertionUtil.AssertPropsPerRow(_listener.LastNewData, fields, new object[][] { new object[] { 201 } });
            _listener.Reset();
        }
示例#30
0
            public void Run(RegressionEnvironment env)
            {
                env.CompileDeploy(
                        "@Name('s0') select TheString from SupportBean S0 where " +
                        "exists (select * from OrderBean[Books][Reviews]#unique(ReviewId) where ReviewId = S0.IntPrimitive)")
                    .AddListener("s0");

                env.SendEventBean(OrderBeanFactory.MakeEventOne());
                env.SendEventBean(OrderBeanFactory.MakeEventFour());

                env.SendEventBean(new SupportBean("E1", 1));
                Assert.IsTrue(env.Listener("s0").GetAndClearIsInvoked());

                env.SendEventBean(new SupportBean("E2", -1));
                Assert.IsFalse(env.Listener("s0").GetAndClearIsInvoked());

                env.SendEventBean(new SupportBean("E2", 201));
                Assert.IsTrue(env.Listener("s0").GetAndClearIsInvoked());

                env.UndeployAll();
            }