public void TestGroupByEventPerGroupBatchContextProp()
        {
            _epService.EPAdministrator.CreateEPL("@Name('context') create context SegmentedByString partition by TheString from SupportBean");

            var fieldsOne = "IntPrimitive,count(*)".Split(',');
            var stmtOne   = _epService.EPAdministrator.CreateEPL("@Name('A') context SegmentedByString select IntPrimitive, Count(*) from SupportBean.win:length_batch(2) group by IntPrimitive order by IntPrimitive asc");

            stmtOne.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            _epService.EPRuntime.SendEvent(new SupportBean("G2", 200));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 11));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsOne, new Object[] { 10, 1L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsOne, new Object[] { 11, 1L });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 200));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { 200, 2L });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsOne, new Object[] { 10, 2L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsOne, new Object[] { 11, 0L });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 10));
            _epService.EPRuntime.SendEvent(new SupportBean("G2", 10));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsOne, new Object[] { 10, 2L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsOne, new Object[] { 200, 0L });

            stmtOne.Dispose();

            // add "string" : add context property
            var fieldsTwo = "TheString,IntPrimitive,count(*)".Split(',');
            var stmtTwo   = _epService.EPAdministrator.CreateEPL("@Name('B') context SegmentedByString select TheString, IntPrimitive, Count(*) from SupportBean.win:length_batch(2) group by IntPrimitive order by TheString, IntPrimitive asc");

            stmtTwo.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            _epService.EPRuntime.SendEvent(new SupportBean("G2", 200));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 11));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsTwo, new Object[] { "G1", 10, 1L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsTwo, new Object[] { "G1", 11, 1L });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 200));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsTwo, new Object[] { "G2", 200, 2L });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 10));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsTwo, new Object[] { "G1", 10, 2L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsTwo, new Object[] { "G1", 11, 0L });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 10));
            _epService.EPRuntime.SendEvent(new SupportBean("G2", 10));
            EPAssertionUtil.AssertProps(_listener.LastNewData[0], fieldsTwo, new Object[] { "G2", 10, 2L });
            EPAssertionUtil.AssertProps(_listener.GetAndResetLastNewData()[1], fieldsTwo, new Object[] { "G2", 200, 0L });
        }
        public void TestAggregation()
        {
            String[] fields = new String[] { "TheString" };

            // Test un-grouped
            EPStatement stmtUngrouped = _epService.EPAdministrator.CreateEPL("select irstream TheString from SupportBean.win:expr_batch(sum(IntPrimitive) > 100)");

            stmtUngrouped.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 90));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("E3", 10));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } }, null);

            _epService.EPRuntime.SendEvent(new SupportBean("E4", 101));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E4" } }, new Object[][] { new Object[] { "E1" }, new Object[] { "E2" }, new Object[] { "E3" } });

            _epService.EPRuntime.SendEvent(new SupportBean("E5", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E6", 99));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("E7", 1));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E5" }, new Object[] { "E6" }, new Object[] { "E7" } }, new Object[][] { new Object[] { "E4" } });
            stmtUngrouped.Dispose();

            // Test grouped
            EPStatement stmtGrouped = _epService.EPAdministrator.CreateEPL("select irstream TheString from SupportBean.std:groupwin(IntPrimitive).win:expr_batch(sum(LongPrimitive) > 100)");

            stmtGrouped.Events += _listener.Update;

            SendEvent("E1", 1, 10);
            SendEvent("E2", 2, 10);
            SendEvent("E3", 1, 90);
            SendEvent("E4", 2, 80);
            SendEvent("E5", 2, 10);
            Assert.IsFalse(_listener.IsInvoked);

            SendEvent("E6", 2, 1);
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E2" }, new Object[] { "E4" }, new Object[] { "E5" }, new Object[] { "E6" } }, null);

            SendEvent("E7", 2, 50);
            Assert.IsFalse(_listener.IsInvoked);

            SendEvent("E8", 1, 2);
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E3" }, new Object[] { "E8" } }, null);

            SendEvent("E9", 2, 50);
            SendEvent("E10", 1, 101);
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E10" } }, new Object[][] { new Object[] { "E1" }, new Object[] { "E3" }, new Object[] { "E8" } });

            SendEvent("E11", 2, 1);
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E7" }, new Object[] { "E9" }, new Object[] { "E11" } }, new Object[][] { new Object[] { "E2" }, new Object[] { "E4" }, new Object[] { "E5" }, new Object[] { "E6" } });

            SendEvent("E12", 1, 102);
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E12" } }, new Object[][] { new Object[] { "E10" } });
            stmtGrouped.Dispose();

            // Test on-delete
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean_A>();
            EPStatement stmt = _epService.EPAdministrator.CreateEPL("create window NW.win:expr_batch(sum(IntPrimitive) >= 10) as SupportBean");

            stmt.Events += _listener.Update;
            _epService.EPAdministrator.CreateEPL("insert into NW select * from SupportBean");

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 8));
            _epService.EPAdministrator.CreateEPL("on SupportBean_A delete from NW where TheString = id");
            _epService.EPRuntime.SendEvent(new SupportBean_A("E2"));

            _epService.EPRuntime.SendEvent(new SupportBean("E3", 8));
            Assert.IsFalse(_listener.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportBean("E4", 1));
            EPAssertionUtil.AssertPropsPerRow(_listener.GetAndResetDataListsFlattened(), fields, new Object[][] { new Object[] { "E1" }, new Object[] { "E3" }, new Object[] { "E4" } }, null);
        }
示例#3
0
            public void Run(RegressionEnvironment env)
            {
                var epl = "@Name('s0') select irstream * from SupportBean#sort(3, IntPrimitive desc, LongPrimitive)";
                env.CompileDeployAddListenerMileZero(epl, "s0");
                var fields = new[] {"TheString", "IntPrimitive", "LongPrimitive"};

                env.SendEventBean(MakeEvent("E1", 100, 0L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E1", 100, 0L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E1", 100, 0L}});

                env.SendEventBean(MakeEvent("E2", 99, 5L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E2", 99, 5L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E1", 100, 0L}, new object[] {"E2", 99, 5L}});

                env.SendEventBean(MakeEvent("E3", 100, -1L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E3", 100, -1L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3", 100, -1L}, new object[] {"E1", 100, 0L}, new object[] {"E2", 99, 5L}});

                env.SendEventBean(MakeEvent("E4", 100, 1L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertPairGetIRAndReset(),
                    fields,
                    new object[] {"E4", 100, 1L},
                    new object[] {"E2", 99, 5L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3", 100, -1L}, new object[] {"E1", 100, 0L}, new object[] {"E4", 100, 1L}});

                env.SendEventBean(MakeEvent("E5", 101, 10L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertPairGetIRAndReset(),
                    fields,
                    new object[] {"E5", 101, 10L},
                    new object[] {"E4", 100, 1L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E5", 101, 10L}, new object[] {"E3", 100, -1L}, new object[] {"E1", 100, 0L}});

                env.SendEventBean(MakeEvent("E6", 101, 11L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertPairGetIRAndReset(),
                    fields,
                    new object[] {"E6", 101, 11L},
                    new object[] {"E1", 100, 0L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"E5", 101, 10L}, new object[] {"E6", 101, 11L}, new object[] {"E3", 100, -1L}
                    });

                env.SendEventBean(MakeEvent("E6", 100, 0L));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertPairGetIRAndReset(),
                    fields,
                    new object[] {"E6", 100, 0L},
                    new object[] {"E6", 100, 0L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"E5", 101, 10L}, new object[] {"E6", 101, 11L}, new object[] {"E3", 100, -1L}
                    });

                env.UndeployAll();
            }
示例#4
0
        public void TestViewPush()
        {
            // Set up a feed for the view under test - it will have a depth of 3 trades
            SupportStreamImpl stream = new SupportStreamImpl(typeof(SupportBean_A), 3);

            stream.AddView(_myView);

            IDictionary <String, EventBean> events = EventFactoryHelper.MakeEventMap(
                new String[] { "a0", "b0", "b1", "c0", "c1", "d0", "e0", "e1", "e2", "f0", "f1",
                               "g0", "g1", "g2", "g3", "g4",
                               "h0", "h1", "h2", "h3", "h4", "h5", "h6",
                               "i0" });

            // Fill the window with events up to the depth of 5
            stream.Insert(MakeArray(events, new String[] { "a0" }));
            SupportViewDataChecker.CheckOldData(_childView, null);
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "a0" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "a0" }), _myView.GetEnumerator());

            stream.Insert(MakeArray(events, new String[] { "b0", "b1" }));
            SupportViewDataChecker.CheckOldData(_childView, null);
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "b0", "b1" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "a0", "b0", "b1" }), _myView.GetEnumerator());

            stream.Insert(MakeArray(events, new String[] { "c0", "c1" }));

            SupportViewDataChecker.CheckOldData(_childView, null);
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "c0", "c1" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "a0", "b0", "b1", "c0", "c1" }), _myView.GetEnumerator());

            // Send further events, expect to get events back that fall out of the window (a0)
            stream.Insert(MakeArray(events, new String[] { "d0" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "a0" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "d0" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "b0", "b1", "c0", "c1", "d0" }), _myView.GetEnumerator());

            stream.Insert(MakeArray(events, new String[] { "e0", "e1", "e2" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "b0", "b1", "c0" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "e0", "e1", "e2" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "c1", "d0", "e0", "e1", "e2" }), _myView.GetEnumerator());

            stream.Insert(MakeArray(events, new String[] { "f0", "f1" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "c1", "d0" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "f0", "f1" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "e0", "e1", "e2", "f0", "f1" }), _myView.GetEnumerator());

            // Push as many events as the window takes
            stream.Insert(MakeArray(events, new String[] { "g0", "g1", "g2", "g3", "g4" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "e0", "e1", "e2", "f0", "f1" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "g0", "g1", "g2", "g3", "g4" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "g0", "g1", "g2", "g3", "g4" }), _myView.GetEnumerator());

            // Push 2 more events then the window takes
            stream.Insert(MakeArray(events, new String[] { "h0", "h1", "h2", "h3", "h4", "h5", "h6" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "g0", "g1", "g2", "g3", "g4", "h0", "h1" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "h0", "h1", "h2", "h3", "h4", "h5", "h6" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "h2", "h3", "h4", "h5", "h6" }), _myView.GetEnumerator());

            // Push 1 last event to make sure the last overflow was handled correctly
            stream.Insert(MakeArray(events, new String[] { "i0" }));
            SupportViewDataChecker.CheckOldData(_childView, MakeArray(events, new String[] { "h2" }));
            SupportViewDataChecker.CheckNewData(_childView, MakeArray(events, new String[] { "i0" }));
            EPAssertionUtil.AssertEqualsExactOrder(MakeArray(events, new String[] { "h3", "h4", "h5", "h6", "i0" }), _myView.GetEnumerator());
        }
示例#5
0
        private void RunAssertionSubscribeAndIterate(EPServiceProvider epService)
        {
            string      stmtCreateTextOne = "create variable long var1SAI = null";
            EPStatement stmtCreateOne     = epService.EPAdministrator.CreateEPL(stmtCreateTextOne);

            Assert.AreEqual(StatementType.CREATE_VARIABLE, ((EPStatementSPI)stmtCreateOne).StatementMetadata.StatementType);
            var listenerCreateOne = new SupportUpdateListener();

            stmtCreateOne.Events += listenerCreateOne.Update;
            var fieldsVar1 = new string[] { "var1SAI" };

            EPAssertionUtil.AssertPropsPerRow(stmtCreateOne.GetEnumerator(), fieldsVar1, new object[][] { new object[] { null } });
            Assert.IsFalse(listenerCreateOne.IsInvoked);

            EventType typeSet = stmtCreateOne.EventType;

            Assert.AreEqual(typeof(long?), typeSet.GetPropertyType("var1SAI"));
            Assert.AreEqual(typeof(Map), typeSet.UnderlyingType);
            Assert.IsTrue(Collections.AreEqual(typeSet.PropertyNames, new string[] { "var1SAI" }));

            string      stmtCreateTextTwo = "create variable long var2SAI = 20";
            EPStatement stmtCreateTwo     = epService.EPAdministrator.CreateEPL(stmtCreateTextTwo);
            var         listenerCreateTwo = new SupportUpdateListener();

            stmtCreateTwo.Events += listenerCreateTwo.Update;
            var fieldsVar2 = new string[] { "var2SAI" };

            EPAssertionUtil.AssertPropsPerRow(stmtCreateTwo.GetEnumerator(), fieldsVar2, new object[][] { new object[] { 20L } });
            Assert.IsFalse(listenerCreateTwo.IsInvoked);

            string stmtTextSet = "on " + typeof(SupportBean).FullName + " set var1SAI = IntPrimitive * 2, var2SAI = var1SAI + 1";

            epService.EPAdministrator.CreateEPL(stmtTextSet);

            SendSupportBean(epService, "E1", 100);
            EPAssertionUtil.AssertProps(listenerCreateOne.LastNewData[0], fieldsVar1, new object[] { 200L });
            EPAssertionUtil.AssertProps(listenerCreateOne.LastOldData[0], fieldsVar1, new object[] { null });
            listenerCreateOne.Reset();
            EPAssertionUtil.AssertProps(listenerCreateTwo.LastNewData[0], fieldsVar2, new object[] { 201L });
            EPAssertionUtil.AssertProps(listenerCreateTwo.LastOldData[0], fieldsVar2, new object[] { 20L });
            listenerCreateOne.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmtCreateOne.GetEnumerator(), fieldsVar1, new object[][] { new object[] { 200L } });
            EPAssertionUtil.AssertPropsPerRow(stmtCreateTwo.GetEnumerator(), fieldsVar2, new object[][] { new object[] { 201L } });

            SendSupportBean(epService, "E2", 200);
            EPAssertionUtil.AssertProps(listenerCreateOne.LastNewData[0], fieldsVar1, new object[] { 400L });
            EPAssertionUtil.AssertProps(listenerCreateOne.LastOldData[0], fieldsVar1, new object[] { 200L });
            listenerCreateOne.Reset();
            EPAssertionUtil.AssertProps(listenerCreateTwo.LastNewData[0], fieldsVar2, new object[] { 401L });
            EPAssertionUtil.AssertProps(listenerCreateTwo.LastOldData[0], fieldsVar2, new object[] { 201L });
            listenerCreateOne.Reset();
            EPAssertionUtil.AssertPropsPerRow(stmtCreateOne.GetEnumerator(), fieldsVar1, new object[][] { new object[] { 400L } });
            EPAssertionUtil.AssertPropsPerRow(stmtCreateTwo.GetEnumerator(), fieldsVar2, new object[][] { new object[] { 401L } });

            stmtCreateTwo.Stop();
            stmtCreateTwo.Start();

            EPAssertionUtil.AssertPropsPerRow(stmtCreateOne.GetEnumerator(), fieldsVar1, new object[][] { new object[] { 400L } });
            EPAssertionUtil.AssertPropsPerRow(stmtCreateTwo.GetEnumerator(), fieldsVar2, new object[][] { new object[] { 20L } });
            epService.EPAdministrator.DestroyAllStatements();
        }
        public void TestLeftOuterJoin()
        {
            EPStatement outerJoinView = SetupStatement("left");

            // Send S1 events, no events expected
            SendEvent(_eventsS1[0]);
            SendEvent(_eventsS1[1]);
            SendEvent(_eventsS1[3]);
            Assert.IsNull(_listener.LastNewData); // No events expected
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields, null);

            // Send S0 event, expect event back from outer join
            SendEvent(_eventsS0[2]);
            EventBean theEvent = _listener.AssertOneGetNewAndReset();

            CompareEvent(theEvent, 102, "2", null, null);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { 102, "2", null, null } });

            // Send S1 event matching S0, expect event back
            SendEvent(_eventsS1[2]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, 102, "2", 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { 102, "2", 202, "2" } });

            // Send some more unmatched events
            SendEvent(_eventsS1[4]);
            SendEvent(_eventsS1[5]);
            SendEvent(_eventsS1[6]);
            Assert.IsNull(_listener.LastNewData); // No events expected
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { 102, "2", 202, "2" } });

            // Send event, expect a join result
            SendEvent(_eventsS0[5]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, 105, "5", 205, "5");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 105, "5", 205, "5" }
            });

            // Let S1[2] go out of the window (lenght 5), expected old join event
            SendEvent(_eventsS1[7]);
            SendEvent(_eventsS1[8]);
            theEvent = _listener.AssertOneGetOldAndReset();
            CompareEvent(theEvent, 102, "2", 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", null, null },
                new Object[] { 105, "5", 205, "5" }
            });

            // S0[9] should generate an outer join event
            SendEvent(_eventsS0[9]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, 109, "9", null, null);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", null, null },
                new Object[] { 109, "9", null, null },
                new Object[] { 105, "5", 205, "5" }
            });

            // S0[2] Should leave the window (length 3), should get OLD and NEW event
            SendEvent(_eventsS0[10]);
            EventBean oldEvent = _listener.LastOldData[0];
            EventBean newEvent = _listener.LastNewData[0];

            CompareEvent(oldEvent, 102, "2", null, null); // S1[2] has left the window already
            CompareEvent(newEvent, 110, "10", null, null);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 110, "10", null, null },
                new Object[] { 109, "9", null, null },
                new Object[] { 105, "5", 205, "5" }
            });
        }
示例#7
0
        public void TestMath()
        {
            var stmt = _epService.EPAdministrator.CreateEPL("select * from SupportBeanNumeric " +
                                                            "where DecimalOne+BigInt=100 or DecimalOne+1=2 or DecimalOne+2d=5.0 or BigInt+5L=8 or BigInt+5d=9.0");

            stmt.AddListener(_listener);

            SendBigNumEvent(50, 49);
            Assert.IsFalse(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(50, 50);
            Assert.IsTrue(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(0, 1);
            Assert.IsTrue(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(0, 2);
            Assert.IsFalse(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(0, 3);
            Assert.IsTrue(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(0, 0);
            Assert.IsFalse(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(3, 0);
            Assert.IsTrue(_listener.GetAndClearIsInvoked());

            SendBigNumEvent(4, 0);
            Assert.IsTrue(_listener.GetAndClearIsInvoked());
            stmt.Dispose();

            stmt = _epService.EPAdministrator.CreateEPL(
                "select DecimalOne+BigInt as v1, DecimalOne+2 as v2, DecimalOne+3d as v3, BigInt+5L as v4, BigInt+5d as v5 " +
                " from SupportBeanNumeric");
            stmt.AddListener(_listener);
            _listener.Reset();

            Assert.AreEqual(typeof(decimal?), stmt.EventType.GetPropertyType("v1"));
            Assert.AreEqual(typeof(decimal?), stmt.EventType.GetPropertyType("v2"));
            Assert.AreEqual(typeof(decimal?), stmt.EventType.GetPropertyType("v3"));
            Assert.AreEqual(typeof(BigInteger?), stmt.EventType.GetPropertyType("v4"));
            Assert.AreEqual(typeof(decimal?), stmt.EventType.GetPropertyType("v5"));

            SendBigNumEvent(1, 2);
            var theEvent = _listener.AssertOneGetNewAndReset();

            EPAssertionUtil.AssertProps(theEvent, "v1,v2,v3,v4,v5".Split(','),
                                        new object[] { 3m, 4m, 5m, new BigInteger(6), 6m });

            // test aggregation-sum, multiplication and division all together; test for ESPER-340
            stmt.Dispose();
            stmt = _epService.EPAdministrator.CreateEPL(
                "select (sum(DecimalTwo * DecimalOne)/sum(DecimalOne)) as avgRate from SupportBeanNumeric");
            stmt.AddListener(_listener);
            _listener.Reset();
            Assert.AreEqual(typeof(decimal?), stmt.EventType.GetPropertyType("avgRate"));
            SendBigNumEvent(0, 5);
            var avgRate = _listener.AssertOneGetNewAndReset().Get("avgRate");

            Assert.IsTrue(avgRate is decimal);
            Assert.AreEqual(5m, avgRate);
        }
示例#8
0
        public void TestRevision()
        {
            EPStatement consumerOne = _epService.EPAdministrator.CreateEPL("select * from RevQuote");

            consumerOne.Events += _listenerOne.Update;
            EPStatement consumerTwo = _epService.EPAdministrator.CreateEPL("select K0, count(*) as count, sum(Int64.Parse(P0)) as sum from RevQuote group by K0");

            consumerTwo.Events += _listenerTwo.Update;
            EPStatement consumerThree = _epService.EPAdministrator.CreateEPL("select * from RevQuote output every 2 events");

            consumerThree.Events += _listenerThree.Update;
            String[] agg = "K0,count,sum".Split(',');

            _epService.EPRuntime.SendEvent(new SupportRevisionFull("K00", "01", "P10", "20", "P30", "40", "50"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "01", "P10", "20", "P30", "40", "50" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "01", "P10", "20", "P30", "40", "50" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 1L });
            Assert.IsFalse(_listenerThree.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportDeltaThree("K00", "03", "41"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "03", "P10", "20", "P30", "41", "50" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "03", "P10", "20", "P30", "41", "50" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 3L });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[0], _fields, new Object[] { "K00", "01", "P10", "20", "P30", "40", "50" });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[1], _fields, new Object[] { "K00", "03", "P10", "20", "P30", "41", "50" });
            _listenerThree.Reset();

            _epService.EPRuntime.SendEvent(new SupportDeltaOne("K00", "P11", "51"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "03", "P11", "20", "P30", "41", "51" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "03", "P11", "20", "P30", "41", "51" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 3L });
            Assert.IsFalse(_listenerThree.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportDeltaTwo("K00", "04", "21", "P31"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "04", "P11", "21", "P31", "41", "51" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "04", "P11", "21", "P31", "41", "51" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 4L });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[0], _fields, new Object[] { "K00", "03", "P11", "20", "P30", "41", "51" });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[1], _fields, new Object[] { "K00", "04", "P11", "21", "P31", "41", "51" });
            _listenerThree.Reset();

            _epService.EPRuntime.SendEvent(new SupportDeltaFour("K00", "05", "22", "52"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "05", "P11", "22", "P31", "41", "52" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "05", "P11", "22", "P31", "41", "52" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 5L });
            Assert.IsFalse(_listenerThree.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportDeltaFive("K00", "P12", "53"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "05", "P12", "22", "P31", "41", "53" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "05", "P12", "22", "P31", "41", "53" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 5L });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[0], _fields, new Object[] { "K00", "05", "P11", "22", "P31", "41", "52" });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[1], _fields, new Object[] { "K00", "05", "P12", "22", "P31", "41", "53" });
            _listenerThree.Reset();

            _epService.EPRuntime.SendEvent(new SupportRevisionFull("K00", "06", "P13", "23", "P32", "42", "54"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "06", "P13", "23", "P32", "42", "54" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "06", "P13", "23", "P32", "42", "54" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 6L });
            Assert.IsFalse(_listenerThree.IsInvoked);

            _epService.EPRuntime.SendEvent(new SupportDeltaOne("K00", "P14", "55"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "K00", "06", "P14", "23", "P32", "42", "55" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), _fields, new Object[] { "K00", "06", "P14", "23", "P32", "42", "55" });
            EPAssertionUtil.AssertProps(_listenerTwo.AssertOneGetNewAndReset(), agg, new Object[] { "K00", 1L, 6L });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[0], _fields, new Object[] { "K00", "06", "P13", "23", "P32", "42", "54" });
            EPAssertionUtil.AssertProps(_listenerThree.LastNewData[1], _fields, new Object[] { "K00", "06", "P14", "23", "P32", "42", "55" });
            _listenerThree.Reset();
        }
示例#9
0
        public void TestOnDelete()
        {
            EPStatement consumerOne = _epService.EPAdministrator.CreateEPL("select irstream * from RevQuote");

            consumerOne.Events += _listenerOne.Update;

            _epService.EPAdministrator.CreateEPL("on SupportBean(IntPrimitive=2) as sb delete from RevQuote where TheString = P2");

            Log.Debug("a00");
            _epService.EPRuntime.SendEvent(new SupportRevisionFull("a", "a00", "a10", "a20", "a30", "a40", "a50"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "a", "a00", "a10", "a20", "a30", "a40", "a50" });

            _epService.EPRuntime.SendEvent(new SupportDeltaThree("x", "03", "41"));
            Assert.IsFalse(_listenerOne.IsInvoked);

            _epService.EPAdministrator.CreateEPL("on SupportBean(IntPrimitive=3) as sb delete from RevQuote where TheString = P3");

            Log.Debug("b00");
            _epService.EPRuntime.SendEvent(new SupportRevisionFull("b", "b00", "b10", "b20", "b30", "b40", "b50"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "b", "b00", "b10", "b20", "b30", "b40", "b50" });

            Log.Debug("a01");
            _epService.EPRuntime.SendEvent(new SupportDeltaThree("a", "a01", "a41"));
            EPAssertionUtil.AssertProps(_listenerOne.LastNewData[0], _fields, new Object[] { "a", "a01", "a10", "a20", "a30", "a41", "a50" });
            EPAssertionUtil.AssertProps(_listenerOne.LastOldData[0], _fields, new Object[] { "a", "a00", "a10", "a20", "a30", "a40", "a50" });
            _listenerOne.Reset();

            Log.Debug("c00");
            _epService.EPRuntime.SendEvent(new SupportRevisionFull("c", "c00", "c10", "c20", "c30", "c40", "c50"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "c", "c00", "c10", "c20", "c30", "c40", "c50" });

            _epService.EPAdministrator.CreateEPL("on SupportBean(IntPrimitive=0) as sb delete from RevQuote where TheString = P0");

            Log.Debug("c11");
            _epService.EPRuntime.SendEvent(new SupportDeltaFive("c", "c11", "c51"));
            EPAssertionUtil.AssertProps(_listenerOne.LastNewData[0], _fields, new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" });
            EPAssertionUtil.AssertProps(_listenerOne.LastOldData[0], _fields, new Object[] { "c", "c00", "c10", "c20", "c30", "c40", "c50" });
            _listenerOne.Reset();

            _epService.EPAdministrator.CreateEPL("on SupportBean(IntPrimitive=1) as sb delete from RevQuote where TheString = P1");

            Log.Debug("d00");
            _epService.EPRuntime.SendEvent(new SupportRevisionFull("d", "d00", "d10", "d20", "d30", "d40", "d50"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), _fields, new Object[] { "d", "d00", "d10", "d20", "d30", "d40", "d50" });

            Log.Debug("d01");
            _epService.EPRuntime.SendEvent(new SupportDeltaFour("d", "d01", "d21", "d51"));
            EPAssertionUtil.AssertProps(_listenerOne.LastNewData[0], _fields, new Object[] { "d", "d01", "d10", "d21", "d30", "d40", "d51" });
            EPAssertionUtil.AssertProps(_listenerOne.LastOldData[0], _fields, new Object[] { "d", "d00", "d10", "d20", "d30", "d40", "d50" });
            _listenerOne.Reset();

            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), _fields,
                                              new Object[][] { new Object[] { "b", "b00", "b10", "b20", "b30", "b40", "b50" }, new Object[] { "a", "a01", "a10", "a20", "a30", "a41", "a50" },
                                                               new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" }, new Object[] { "d", "d01", "d10", "d21", "d30", "d40", "d51" } });

            _epService.EPAdministrator.CreateEPL("on SupportBean(IntPrimitive=4) as sb delete from RevQuote where TheString = P4");

            _epService.EPRuntime.SendEvent(new SupportBean("abc", 1));
            Assert.IsFalse(_listenerOne.IsInvoked);

            Log.Debug("delete b");
            _epService.EPRuntime.SendEvent(new SupportBean("b40", 4));  // delete b
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetOldAndReset(), _fields, new Object[] { "b", "b00", "b10", "b20", "b30", "b40", "b50" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), _fields,
                                              new Object[][] { new Object[] { "a", "a01", "a10", "a20", "a30", "a41", "a50" }, new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" }, new Object[] { "d", "d01", "d10", "d21", "d30", "d40", "d51" } });

            Log.Debug("delete d");
            _epService.EPRuntime.SendEvent(new SupportBean("d21", 2)); // delete d
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetOldAndReset(), _fields, new Object[] { "d", "d01", "d10", "d21", "d30", "d40", "d51" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), _fields,
                                              new Object[][] { new Object[] { "a", "a01", "a10", "a20", "a30", "a41", "a50" }, new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" } });

            Log.Debug("delete a");
            _epService.EPRuntime.SendEvent(new SupportBean("a30", 3)); // delete a
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetOldAndReset(), _fields, new Object[] { "a", "a01", "a10", "a20", "a30", "a41", "a50" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), _fields, new Object[][] { new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" } });

            Log.Debug("delete c");
            _epService.EPRuntime.SendEvent(new SupportBean("c11", 1)); // delete c
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetOldAndReset(), _fields, new Object[] { "c", "c00", "c11", "c20", "c30", "c40", "c51" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), _fields, null);

            _epService.EPRuntime.SendEvent(new SupportBean("c11", 1));
            Assert.IsFalse(_listenerOne.IsInvoked);
        }
示例#10
0
        public void TestMinMaxBy()
        {
            String[] fields      = "val0,val1,val2,val3".SplitCsv();
            String   eplFragment = "select " +
                                   "contained.MinBy(x => p00) as val0," +
                                   "contained.MaxBy(x => p00) as val1," +
                                   "contained.MinBy(x => p00).id as val2," +
                                   "contained.MaxBy(x => p00).P00 as val3 " +
                                   "from Bean";
            EPStatement stmtFragment = _epService.EPAdministrator.CreateEPL(eplFragment);

            stmtFragment.Events += _listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtFragment.EventType, fields, new Type[] { typeof(SupportBean_ST0), typeof(SupportBean_ST0), typeof(string), typeof(int?) });

            SupportBean_ST0_Container bean = SupportBean_ST0_Container.Make2Value("E1,12", "E2,11", "E2,2");

            _epService.EPRuntime.SendEvent(bean);
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields,
                                        new Object[] { bean.Contained[2], bean.Contained[0], "E2", 12 });

            bean = SupportBean_ST0_Container.Make2Value("E1,12");
            _epService.EPRuntime.SendEvent(bean);
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields,
                                        new Object[] { bean.Contained[0], bean.Contained[0], "E1", 12 });

            _epService.EPRuntime.SendEvent(SupportBean_ST0_Container.Make2Value(null));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields,
                                        new Object[] { null, null, null, null });

            _epService.EPRuntime.SendEvent(SupportBean_ST0_Container.Make2Value());
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields,
                                        new Object[] { null, null, null, null });

            stmtFragment.Dispose();

            // test scalar-coll with lambda
            String[] fieldsLambda = "val0,val1".Split(',');
            _epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("extractNum", typeof(TestEnumMinMax.MyService).FullName, "ExtractNum");
            String eplLambda = "select " +
                               "Strvals.minBy(v => extractNum(v)) as val0, " +
                               "Strvals.maxBy(v => extractNum(v)) as val1 " +
                               "from SupportCollection";
            EPStatement stmtLambda = _epService.EPAdministrator.CreateEPL(eplLambda);

            stmtLambda.Events += _listener.Update;
            LambdaAssertionUtil.AssertTypes(stmtLambda.EventType, fieldsLambda, new [] { typeof(string), typeof(string) });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString("E2,E1,E5,E4"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { "E1", "E5" });

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString("E1"));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { "E1", "E1" });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString(null));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { null, null });
            _listener.Reset();

            _epService.EPRuntime.SendEvent(SupportCollection.MakeString(""));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsLambda, new Object[] { null, null });
        }
示例#11
0
        public void TestMultiPropertyMapMixin()
        {
            String[] fields = "K0,P1,P5,m0".Split(',');
            _stmtCreateWin =
                _epService.EPAdministrator.CreateEPL("create window RevMap#length(3) as select * from RevisableMap");
            _epService.EPAdministrator.CreateEPL("insert into RevMap select * from MyMap");
            _epService.EPAdministrator.CreateEPL("insert into RevMap select * from D1");
            _epService.EPAdministrator.CreateEPL("insert into RevMap select * from D5");

            EPStatement consumerOne = _epService.EPAdministrator.CreateEPL("select irstream * from RevMap order by K0");

            consumerOne.Events += _listenerOne.Update;

            _epService.EPRuntime.SendEvent(
                MakeMap(new Object[][]
            {
                new Object[] { "P5", "P5_1" }, new Object[] { "P1", "P1_1" }, new Object[] { "K0", "E1" },
                new Object[] { "m0", "M0" }
            }), "MyMap");
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields,
                                        new Object[] { "E1", "P1_1", "P5_1", "M0" });

            _epService.EPRuntime.SendEvent(new SupportDeltaFive("E2", "P1_1", "P5_1"));
            EPAssertionUtil.AssertProps(_listenerOne.LastNewData[0], fields,
                                        new Object[] { "E2", "P1_1", "P5_1", "M0" });
            EPAssertionUtil.AssertProps(_listenerOne.LastOldData[0], fields,
                                        new Object[] { "E1", "P1_1", "P5_1", "M0" });
            EPAssertionUtil.AssertProps(_stmtCreateWin.First(), fields, new Object[] { "E2", "P1_1", "P5_1", "M0" });
            _listenerOne.Reset();

            _epService.EPRuntime.SendEvent(
                MakeMap(new Object[][]
            {
                new Object[] { "P5", "P5_1" }, new Object[] { "P1", "P1_2" }, new Object[] { "K0", "E3" },
                new Object[] { "m0", "M1" }
            }), "MyMap");
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), fields,
                                              new Object[][]
            {
                new Object[] { "E2", "P1_1", "P5_1", "M0" },
                new Object[] { "E3", "P1_2", "P5_1", "M1" }
            });

            _epService.EPRuntime.SendEvent(new SupportDeltaFive("E4", "P1_1", "P5_1"));
            EPAssertionUtil.AssertProps(_listenerOne.LastNewData[0], fields,
                                        new Object[] { "E4", "P1_1", "P5_1", "M0" });
            EPAssertionUtil.AssertProps(_listenerOne.LastOldData[0], fields,
                                        new Object[] { "E2", "P1_1", "P5_1", "M0" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), fields,
                                              new Object[][]
            {
                new Object[] { "E3", "P1_2", "P5_1", "M1" },
                new Object[] { "E4", "P1_1", "P5_1", "M0" }
            });
            _listenerOne.Reset();

            _epService.EPRuntime.SendEvent(
                MakeMap(new Object[][]
            {
                new Object[] { "P5", "P5_2" }, new Object[] { "P1", "P1_1" }, new Object[] { "K0", "E5" },
                new Object[] { "m0", "M2" }
            }), "MyMap");
            EPAssertionUtil.AssertProps(_listenerOne.AssertOneGetNewAndReset(), fields,
                                        new Object[] { "E5", "P1_1", "P5_2", "M2" });
            EPAssertionUtil.AssertPropsPerRow(_stmtCreateWin.GetEnumerator(), fields,
                                              new Object[][]
            {
                new Object[] { "E3", "P1_2", "P5_1", "M1" },
                new Object[] { "E4", "P1_1", "P5_1", "M0" },
                new Object[] { "E5", "P1_1", "P5_2", "M2" }
            });

            _epService.EPRuntime.SendEvent(new SupportDeltaOne("E6", "P1_1", "P5_2"));
            EPAssertionUtil.AssertProps(_listenerOne.AssertPairGetIRAndReset(), fields,
                                        new Object[] { "E6", "P1_1", "P5_2", "M2" },
                                        new Object[] { "E5", "P1_1", "P5_2", "M2" });
        }
示例#12
0
 private void AssertReceived(SupportUpdateListener testListener, long newTrendCount, long?oldTrendCount)
 {
     EPAssertionUtil.AssertPropsPerRow(testListener.AssertInvokedAndReset(), "trendcount", new object[] { newTrendCount }, new object[] { oldTrendCount });
 }
示例#13
0
        public void TestGroupDelivery()
        {
            SendTimer(0);
            EPStatement stmt = _epService.EPAdministrator.CreateEPL("select * from SupportBean#time_batch(1) for grouped_delivery (IntPrimitive)");

            stmt.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            _epService.EPRuntime.SendEvent(new SupportBean("E3", 1));
            SendTimer(1000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            Assert.AreEqual(2, _listener.NewDataList[0].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E1", 1 }, new Object[] { "E3", 1 } });
            Assert.AreEqual(1, _listener.NewDataList[1].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E2", 2 } });

            // test sorted
            stmt.Dispose();
            stmt         = _epService.EPAdministrator.CreateEPL("select * from SupportBean#time_batch(1) order by IntPrimitive desc for grouped_delivery (IntPrimitive)");
            stmt.Events += _listener.Update;
            _listener.Reset();

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            _epService.EPRuntime.SendEvent(new SupportBean("E2", 2));
            _epService.EPRuntime.SendEvent(new SupportBean("E3", 1));
            SendTimer(2000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            Assert.AreEqual(1, _listener.NewDataList[0].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E2", 2 } });
            Assert.AreEqual(2, _listener.NewDataList[1].Length);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], "TheString,IntPrimitive".Split(','), new Object[][] { new Object[] { "E1", 1 }, new Object[] { "E3", 1 } });

            // test multiple criteria
            stmt.Dispose();
            String stmtText = "select TheString, DoubleBoxed, EnumValue from SupportBean#time_batch(1) order by TheString, DoubleBoxed, EnumValue for grouped_delivery(DoubleBoxed, EnumValue)";

            stmt         = _epService.EPAdministrator.CreateEPL(stmtText);
            stmt.Events += _listener.Update;
            _listener.Reset();

            SendEvent("E1", 10d, SupportEnum.ENUM_VALUE_2); // A (1)
            SendEvent("E2", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendEvent("E3", 9d, SupportEnum.ENUM_VALUE_2);  // C (3)
            SendEvent("E4", 10d, SupportEnum.ENUM_VALUE_2); // A
            SendEvent("E5", 10d, SupportEnum.ENUM_VALUE_1); // D (4)
            SendEvent("E6", 10d, SupportEnum.ENUM_VALUE_1); // D
            SendEvent("E7", 11d, SupportEnum.ENUM_VALUE_1); // B
            SendEvent("E8", 10d, SupportEnum.ENUM_VALUE_1); // D
            SendTimer(3000);
            Assert.AreEqual(4, _listener.NewDataList.Count);
            String[] fields = "TheString,DoubleBoxed,EnumValue".Split(',');
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], fields,
                                              new Object[][] { new Object[] { "E1", 10d, SupportEnum.ENUM_VALUE_2 }, new Object[] { "E4", 10d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], fields,
                                              new Object[][] { new Object[] { "E2", 11d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E7", 11d, SupportEnum.ENUM_VALUE_1 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[2], fields,
                                              new Object[][] { new Object[] { "E3", 9d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[3], fields,
                                              new Object[][] { new Object[] { "E5", 10d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E6", 10d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E8", 10d, SupportEnum.ENUM_VALUE_1 } });

            // test SODA
            stmt.Dispose();
            _listener.Reset();
            EPStatementObjectModel model = _epService.EPAdministrator.CompileEPL(stmtText);

            Assert.AreEqual(stmtText, model.ToEPL());
            stmt         = _epService.EPAdministrator.Create(model);
            stmt.Events += _listener.Update;

            SendEvent("E1", 10d, SupportEnum.ENUM_VALUE_2); // A (1)
            SendEvent("E2", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendEvent("E3", 11d, SupportEnum.ENUM_VALUE_1); // B (2)
            SendTimer(4000);
            Assert.AreEqual(2, _listener.NewDataList.Count);
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[0], fields,
                                              new Object[][] { new Object[] { "E1", 10d, SupportEnum.ENUM_VALUE_2 } });
            EPAssertionUtil.AssertPropsPerRow(_listener.NewDataList[1], fields,
                                              new Object[][] { new Object[] { "E2", 11d, SupportEnum.ENUM_VALUE_1 }, new Object[] { "E3", 11d, SupportEnum.ENUM_VALUE_1 } });
        }
        public void TestGroupByEventForAll()
        {
            _epService.EPAdministrator.CreateEPL("@Name('context') create context SegmentedByString partition by TheString from SupportBean");

            // test aggregation-only (no access)
            var fieldsOne = "col1".Split(',');
            var stmtOne   = _epService.EPAdministrator.CreateEPL("@Name('A') context SegmentedByString " +
                                                                 "select Sum(IntPrimitive) as col1 " +
                                                                 "from SupportBean");

            stmtOne.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 3));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { 3 });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 2));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { 2 });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 4));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { 7 });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 1));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { 3 });

            _epService.EPRuntime.SendEvent(new SupportBean("G3", -1));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsOne, new Object[] { -1 });

            stmtOne.Dispose();

            // test mixed with access
            var fieldsTwo = "col1,col2".Split(',');
            var stmtTwo   = _epService.EPAdministrator.CreateEPL("@Name('A') context SegmentedByString " +
                                                                 "select Sum(IntPrimitive) as col1, ToArray(window(*).SelectFrom(v=>v.IntPrimitive)) as col2 " +
                                                                 "from SupportBean.win:keepall()");

            stmtTwo.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 8));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsTwo, new Object[] { 8, new Object[] { 8 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 5));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsTwo, new Object[] { 5, new Object[] { 5 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 1));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsTwo, new Object[] { 9, new Object[] { 8, 1 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 2));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsTwo, new Object[] { 7, new Object[] { 5, 2 } });

            stmtTwo.Dispose();

            // test only access
            var fieldsThree = "col1".Split(',');
            var stmtThree   = _epService.EPAdministrator.CreateEPL("@Name('A') context SegmentedByString " +
                                                                   "select ToArray(window(*).SelectFrom(v=>v.IntPrimitive)) as col1 " +
                                                                   "from SupportBean.win:keepall()");

            stmtThree.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 8));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsThree, new Object[] { new Object[] { 8 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 5));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsThree, new Object[] { new Object[] { 5 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 1));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsThree, new Object[] { new Object[] { 8, 1 } });

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 2));
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fieldsThree, new Object[] { new Object[] { 5, 2 } });

            stmtThree.Dispose();

            // test subscriber
            var stmtFour = _epService.EPAdministrator.CreateEPL("@Name('A') context SegmentedByString " +
                                                                "select Count(*) as col1 " +
                                                                "from SupportBean");
            var subs = new SupportSubscriber();

            stmtFour.Subscriber = subs;

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 1));
            Assert.AreEqual(1L, subs.AssertOneGetNewAndReset());

            _epService.EPRuntime.SendEvent(new SupportBean("G1", 1));
            Assert.AreEqual(2L, subs.AssertOneGetNewAndReset());

            _epService.EPRuntime.SendEvent(new SupportBean("G2", 2));
            Assert.AreEqual(1L, subs.AssertOneGetNewAndReset());
        }
示例#15
0
        private void RunQueryAssertion(string epl, string[] fields, object[][] expected)
        {
            var result = _epService.EPRuntime.ExecuteQuery(epl);

            EPAssertionUtil.AssertPropsPerRow(result.Array, fields, expected);
        }
示例#16
0
        public void SetUp()
        {
            Configuration config = SupportConfigFactory.GetConfiguration();

            config.AddEventType("SupportBean", typeof(SupportBean));
            config.AddEventType("FullEvent", typeof(SupportRevisionFull));
            config.AddEventType("D1", typeof(SupportDeltaOne));
            config.AddEventType("D2", typeof(SupportDeltaTwo));
            config.AddEventType("D3", typeof(SupportDeltaThree));
            config.AddEventType("D4", typeof(SupportDeltaFour));
            config.AddEventType("D5", typeof(SupportDeltaFive));

            ConfigurationRevisionEventType configRev = new ConfigurationRevisionEventType();

            configRev.KeyPropertyNames = (new String[] { "K0" });
            configRev.AddNameBaseEventType("FullEvent");
            configRev.AddNameDeltaEventType("D1");
            configRev.AddNameDeltaEventType("D2");
            configRev.AddNameDeltaEventType("D3");
            configRev.AddNameDeltaEventType("D4");
            configRev.AddNameDeltaEventType("D5");
            config.AddRevisionEventType("RevisableQuote", configRev);

            _epService = EPServiceProviderManager.GetDefaultProvider(config);
            _epService.Initialize();

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.StartTest(_epService, GetType(), GetType().FullName);
            }

            _listenerOne   = new SupportUpdateListener();
            _listenerTwo   = new SupportUpdateListener();
            _listenerThree = new SupportUpdateListener();

            _stmtCreateWin = _epService.EPAdministrator.CreateEPL("create window RevQuote.win:keepall() as select * from RevisableQuote");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from FullEvent");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from D1");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from D2");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from D3");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from D4");
            _epService.EPAdministrator.CreateEPL("insert into RevQuote select * from D5");

            // assert type metadata
            EventTypeSPI type = (EventTypeSPI)((EPServiceProviderSPI)_epService).ValueAddEventService.GetValueAddProcessor("RevQuote").ValueAddEventType;

            Assert.AreEqual(null, type.Metadata.OptionalApplicationType);
            Assert.AreEqual(null, type.Metadata.OptionalSecondaryNames);
            Assert.AreEqual("RevisableQuote", type.Metadata.PrimaryName);
            Assert.AreEqual("RevisableQuote", type.Metadata.PublicName);
            Assert.AreEqual("RevisableQuote", type.Name);
            Assert.AreEqual(TypeClass.REVISION, type.Metadata.TypeClass);
            Assert.AreEqual(true, type.Metadata.IsApplicationConfigured);
            Assert.AreEqual(true, type.Metadata.IsApplicationPreConfigured);
            Assert.AreEqual(true, type.Metadata.IsApplicationPreConfiguredStatic);

            EventType[] valueAddTypes = ((EPServiceProviderSPI)_epService).ValueAddEventService.ValueAddedTypes;
            Assert.AreEqual(1, valueAddTypes.Length);
            Assert.AreSame(type, valueAddTypes[0]);

            EPAssertionUtil.AssertEqualsAnyOrder(new [] {
                new EventPropertyDescriptor("K0", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P0", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P1", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P2", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P3", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P4", typeof(string), typeof(char), false, false, true, false, false),
                new EventPropertyDescriptor("P5", typeof(string), typeof(char), false, false, true, false, false)
            }, type.PropertyDescriptors);
        }
示例#17
0
        public void TestFullOuterJoin()
        {
            EPStatement outerJoinView = SetupStatement("full");

            // Send S0[0]
            SendEvent(_eventsS0[0]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), 100, "0", null, null);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { 100, "0", null, null } });

            // Send S1[1]
            SendEvent(_eventsS1[1]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 201, "1");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 100, "0", null, null },
                new Object[] { null, null, 201, "1" }
            });

            // Send S1[2] and S0[2]
            SendEvent(_eventsS1[2]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 100, "0", null, null },
                new Object[] { null, null, 201, "1" },
                new Object[] { null, null, 202, "2" }
            });

            SendEvent(_eventsS0[2]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), 102, "2", 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 100, "0", null, null },
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" }
            });

            // Send S0[3] and S1[3]
            SendEvent(_eventsS0[3]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), 103, "3", null, null);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 100, "0", null, null },
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", null, null }
            });
            SendEvent(_eventsS1[3]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), 103, "3", 203, "3");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 100, "0", null, null },
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" }
            });

            // Send S0[4], pushes S0[0] out of window
            SendEvent(_eventsS0[4]);
            EventBean oldEvent = _listener.LastOldData[0];
            EventBean newEvent = _listener.LastNewData[0];

            CompareEvent(oldEvent, 100, "0", null, null);
            CompareEvent(newEvent, 104, "4", null, null);
            _listener.Reset();
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" },
                new Object[] { 104, "4", null, null }
            });

            // Send S1[4]
            SendEvent(_eventsS1[4]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), 104, "4", 204, "4");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" },
                new Object[] { 104, "4", 204, "4" }
            });

            // Send S1[5]
            SendEvent(_eventsS1[5]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 205, "5");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { null, null, 201, "1" },
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" },
                new Object[] { 104, "4", 204, "4" },
                new Object[] { null, null, 205, "5" }
            });

            // Send S1[6], pushes S1[1] out of window
            SendEvent(_eventsS1[5]);
            oldEvent = _listener.LastOldData[0];
            newEvent = _listener.LastNewData[0];
            CompareEvent(oldEvent, null, null, 201, "1");
            CompareEvent(newEvent, null, null, 205, "5");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" },
                new Object[] { 104, "4", 204, "4" },
                new Object[] { null, null, 205, "5" },
                new Object[] { null, null, 205, "5" }
            });
        }
            public void Run(RegressionEnvironment env)
            {
                // test 2-stream left outer join and SODA
                //
                var milestone = new AtomicLong();
                env.AdvanceTime(1000);

                var stmtTextLO = "@Name('s0') select sum(IntPrimitive) as c0, count(*) as c1 " +
                                 "from pattern [every timer:interval(1)] unidirectional " +
                                 "left outer join " +
                                 "SupportBean#keepall";
                env.CompileDeployAddListenerMile(stmtTextLO, "s0", milestone.GetAndIncrement());

                TryAssertionPatternUniOuterJoinNoOn(env, 0);

                env.UndeployAll();

                env.EplToModelCompileDeploy(stmtTextLO).AddListener("s0").Milestone(milestone.GetAndIncrement());

                TryAssertionPatternUniOuterJoinNoOn(env, 100000);

                env.UndeployAll();

                // test 2-stream inner join
                //
                var fieldsIJ = new[] {"c0", "c1"};
                var stmtTextIJ = "@Name('s0') select sum(IntPrimitive) as c0, count(*) as c1 " +
                                 "from SupportBean_S0 unidirectional " +
                                 "inner join " +
                                 "SupportBean#keepall";
                env.CompileDeployAddListenerMile(stmtTextIJ, "s0", milestone.GetAndIncrement());

                env.SendEventBean(new SupportBean_S0(1, "S0_1"));
                env.SendEventBean(new SupportBean("E1", 100));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean_S0(2, "S0_2"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsIJ,
                    new object[] {100, 1L});

                env.SendEventBean(new SupportBean("E2", 200));

                env.SendEventBean(new SupportBean_S0(3, "S0_3"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsIJ,
                    new object[] {300, 2L});
                env.UndeployAll();

                // test 2-stream inner join with group-by
                TryAssertion2StreamInnerWGroupBy(env);

                // test 3-stream inner join
                //
                var fields3IJ = new[] {"c0", "c1"};
                var stmtText3IJ = "@Name('s0') select sum(IntPrimitive) as c0, count(*) as c1 " +
                                  "from " +
                                  "SupportBean_S0#keepall " +
                                  "inner join " +
                                  "SupportBean_S1#keepall " +
                                  "inner join " +
                                  "SupportBean#keepall";
                env.CompileDeployAddListenerMile(stmtText3IJ, "s0", milestone.GetAndIncrement());

                env.SendEventBean(new SupportBean_S0(1, "S0_1"));
                env.SendEventBean(new SupportBean("E1", 50));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean_S1(10, "S1_1"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields3IJ,
                    new object[] {50, 1L});

                env.SendEventBean(new SupportBean("E2", 51));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields3IJ,
                    new object[] {101, 2L});

                env.UndeployAll();

                // test 3-stream full outer join
                //
                var fields3FOJ = new[] {"P00", "P10", "TheString"};
                var stmtText3FOJ = "@Name('s0') select P00, P10, TheString " +
                                   "from " +
                                   "SupportBean_S0#keepall " +
                                   "full outer join " +
                                   "SupportBean_S1#keepall " +
                                   "full outer join " +
                                   "SupportBean#keepall";
                env.CompileDeployAddListenerMile(stmtText3FOJ, "s0", milestone.GetAndIncrement());

                env.SendEventBean(new SupportBean_S0(1, "S0_1"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields3FOJ,
                    new object[] {"S0_1", null, null});

                env.SendEventBean(new SupportBean("E10", 0));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields3FOJ,
                    new object[] {null, null, "E10"});

                env.SendEventBean(new SupportBean_S0(2, "S0_2"));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields3FOJ,
                    new[] {new object[] {"S0_2", null, null}});

                env.SendEventBean(new SupportBean_S1(1, "S1_0"));
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields3FOJ,
                    new[] {new object[] {"S0_1", "S1_0", "E10"}, new object[] {"S0_2", "S1_0", "E10"}});

                env.SendEventBean(new SupportBean_S0(2, "S0_3"));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields3FOJ,
                    new[] {new object[] {"S0_3", "S1_0", "E10"}});

                env.SendEventBean(new SupportBean("E11", 0));
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields3FOJ,
                    new[] {
                        new object[] {"S0_1", "S1_0", "E11"}, new object[] {"S0_2", "S1_0", "E11"},
                        new object[] {"S0_3", "S1_0", "E11"}
                    });
                Assert.AreEqual(6, EPAssertionUtil.EnumeratorCount(env.GetEnumerator("s0")));

                env.UndeployAll();

                // test 3-stream full outer join with where-clause
                //
                var fields3FOJW = new[] {"P00", "P10", "TheString"};
                var stmtText3FOJW = "@Name('s0') select P00, P10, TheString " +
                                    "from " +
                                    "SupportBean_S0#keepall as S0 " +
                                    "full outer join " +
                                    "SupportBean_S1#keepall as S1 " +
                                    "full outer join " +
                                    "SupportBean#keepall as sb " +
                                    "where S0.P00 = S1.P10";
                env.CompileDeployAddListenerMile(stmtText3FOJW, "s0", milestone.GetAndIncrement());

                env.SendEventBean(new SupportBean_S0(1, "X1"));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean_S1(1, "Y1"));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean_S0(1, "Y1"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields3FOJW,
                    new object[] {"Y1", "Y1", null});

                env.UndeployAll();
            }
示例#19
0
        public void TestRightOuterJoin()
        {
            EPStatement outerJoinView = SetupStatement("right");

            // Send S0 events, no events expected
            SendEvent(_eventsS0[0]);
            SendEvent(_eventsS0[1]);
            Assert.IsFalse(_listener.IsInvoked);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields, null);

            // Send S1[2]
            SendEvent(_eventsS1[2]);
            EventBean theEvent = _listener.AssertOneGetNewAndReset();

            CompareEvent(theEvent, null, null, 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { null, null, 202, "2" } });

            // Send S0[2] events, joined event expected
            SendEvent(_eventsS0[2]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, 102, "2", 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[] { new Object[] { 102, "2", 202, "2" } });

            // Send S1[3]
            SendEvent(_eventsS1[3]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, null, null, 203, "3");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", 202, "2" },
                new Object[] { null, null, 203, "3" }
            });

            // Send some more S0 events
            SendEvent(_eventsS0[3]);
            theEvent = _listener.AssertOneGetNewAndReset();
            CompareEvent(theEvent, 103, "3", 203, "3");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" }
            });

            // Send some more S0 events
            SendEvent(_eventsS0[4]);
            Assert.IsFalse(_listener.IsInvoked);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 102, "2", 202, "2" },
                new Object[] { 103, "3", 203, "3" }
            });

            // Push S0[2] out of the window
            SendEvent(_eventsS0[5]);
            theEvent = _listener.AssertOneGetOldAndReset();
            CompareEvent(theEvent, 102, "2", 202, "2");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { null, null, 202, "2" },
                new Object[] { 103, "3", 203, "3" }
            });

            // Some more S1 events
            SendEvent(_eventsS1[6]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 206, "6");
            SendEvent(_eventsS1[7]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 207, "7");
            SendEvent(_eventsS1[8]);
            CompareEvent(_listener.AssertOneGetNewAndReset(), null, null, 208, "8");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { null, null, 202, "2" },
                new Object[] { 103, "3", 203, "3" },
                new Object[] { null, null, 206, "6" },
                new Object[] { null, null, 207, "7" },
                new Object[] { null, null, 208, "8" }
            });

            // Push S1[2] out of the window
            SendEvent(_eventsS1[9]);
            EventBean oldEvent = _listener.LastOldData[0];
            EventBean newEvent = _listener.LastNewData[0];

            CompareEvent(oldEvent, null, null, 202, "2");
            CompareEvent(newEvent, null, null, 209, "9");
            EPAssertionUtil.AssertPropsPerRowAnyOrder(outerJoinView.GetEnumerator(), Fields,
                                                      new[]
            {
                new Object[] { 103, "3", 203, "3" },
                new Object[] { null, null, 206, "6" },
                new Object[] { null, null, 207, "7" },
                new Object[] { null, null, 208, "8" },
                new Object[] { null, null, 209, "9" }
            });
        }
            public void Run(RegressionEnvironment env)
            {
                var stmtText = "@Name('s0') select irstream Symbol, count(*) as cnt " +
                               "from SupportMarketDataBean unidirectional, SupportBean#keepall " +
                               "where TheString = Symbol group by TheString, Symbol";
                env.CompileDeployAddListenerMileZero(stmtText, "s0");

                // send event, expect result
                SendEventMD(env, "E1", 1L);
                var fields = new[] {"Symbol", "cnt"};
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                SendEvent(env, "E1", 10);
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                SendEventMD(env, "E1", 2L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fields,
                    new object[] {"E1", 1L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastOldData[0],
                    fields,
                    new object[] {"E1", 0L});
                env.Listener("s0").Reset();

                SendEvent(env, "E1", 20);
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                SendEventMD(env, "E1", 3L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fields,
                    new object[] {"E1", 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastOldData[0],
                    fields,
                    new object[] {"E1", 0L});
                env.Listener("s0").Reset();

                try {
                    env.Statement("s0").GetEnumerator();
                    Assert.Fail();
                }
                catch (UnsupportedOperationException ex) {
                    Assert.AreEqual("Iteration over a unidirectional join is not supported", ex.Message);
                }
                // assure lock given up by sending more events

                SendEvent(env, "E2", 40);
                SendEventMD(env, "E2", 4L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fields,
                    new object[] {"E2", 1L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastOldData[0],
                    fields,
                    new object[] {"E2", 0L});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
示例#21
0
        public void TestReservedKeywordEscape()
        {
            var configuration = SupportConfigFactory.GetConfiguration();

            configuration.EngineDefaults.EventMetaConfig.ClassPropertyResolutionStyle =
                PropertyResolutionStyle.DEFAULT;
            configuration.EngineDefaults.EventMetaConfig.DefaultAccessorStyle =
                AccessorStyleEnum.NATIVE;

            _epService = EPServiceProviderManager.GetDefaultProvider(configuration);
            _epService.Initialize();
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.StartTest(_epService, GetType(), GetType().FullName);
            }

            _epService.EPAdministrator.Configuration.AddEventType <SupportBeanReservedKeyword>("SomeKeywords");
            _epService.EPAdministrator.Configuration.AddEventType <SupportBeanReservedKeyword>("Order");

            var listener = new SupportUpdateListener();
            var stmt     = _epService.EPAdministrator.CreateEPL("select `seconds`, `order` from SomeKeywords");

            stmt.Events += listener.Update;

            var theEvent = new SupportBeanReservedKeyword(1, 2);

            _epService.EPRuntime.SendEvent(theEvent);
            var eventBean = listener.AssertOneGetNewAndReset();

            Assert.AreEqual(1, eventBean.Get("seconds"));
            Assert.AreEqual(2, eventBean.Get("order"));

            stmt.Dispose();
            stmt         = _epService.EPAdministrator.CreateEPL("select * from `Order`");
            stmt.Events += listener.Update;

            _epService.EPRuntime.SendEvent(theEvent);
            eventBean = listener.AssertOneGetNewAndReset();
            Assert.AreEqual(1, eventBean.Get("seconds"));
            Assert.AreEqual(2, eventBean.Get("order"));

            stmt.Dispose();
            stmt = _epService.EPAdministrator.CreateEPL(
                "select timestamp.`hour` as val from SomeKeywords");
            stmt.Events += listener.Update;

            var bean = new SupportBeanReservedKeyword(1, 2);

            bean.Timestamp      = new SupportBeanReservedKeyword.Inner();
            bean.Timestamp.Hour = 10;
            _epService.EPRuntime.SendEvent(bean);
            eventBean = listener.AssertOneGetNewAndReset();
            Assert.AreEqual(10, eventBean.Get("val"));

            // test back-tick with spaces etc
            var defType = new Dictionary <string, object>();

            defType["candidate book"]   = typeof(string);
            defType["XML Message Type"] = typeof(string);
            defType["select"]           = typeof(int);
            defType["children's books"] = typeof(int[]);
            defType["my <> map"]        = typeof(Map);

            _epService.EPAdministrator.Configuration.AddEventType("MyType", defType);
            _epService.EPAdministrator.CreateEPL("select `candidate book` as c0, `XML Message Type` as c1, `select` as c2, `children's books`[0] as c3, `my <> map`('xx') as c4 from MyType")
            .Events += listener.Update;

            var defValues = new Dictionary <string, object>();

            defValues["candidate book"]   = "Enders Game";
            defValues["XML Message Type"] = "book";
            defValues["select"]           = 100;
            defValues["children's books"] = new int[] { 50, 51 };
            defValues["my <> map"]        = Collections.SingletonMap("xx", "abc");

            _epService.EPRuntime.SendEvent(defValues, "MyType");

            EPAssertionUtil.AssertProps(
                listener.AssertOneGetNewAndReset(),
                "c0,c1,c2,c3,c4".Split(','), new Object[]
            {
                "Enders Game", "book", 100, 50, "abc"
            });

            try {
                _epService.EPAdministrator.CreateEPL("select `select` from " + typeof(SupportBean).FullName);
                Assert.Fail();
            } catch (EPException ex) {
                Assert.AreEqual(
                    "Error starting statement: Failed to validate select-clause expression 'select': Property named 'select' is not valid in any stream [select `select` from com.espertech.esper.support.bean.SupportBean]",
                    ex.Message);
            }

            try {
                _epService.EPAdministrator.CreateEPL("select `ab cd` from " + typeof(SupportBean).FullName);
                Assert.Fail();
            } catch (EPException ex) {
                SupportMessageAssertUtil.AssertMessage(ex, "Error starting statement: Failed to validate select-clause expression 'ab cd': Failed to find property 'ab cd', the property name does not parse (are you sure?): Incorrect syntax near 'cd' at line 1 column 3 [ab cd] [select `ab cd` from com.espertech.esper.support.bean.SupportBean]");
            }

            // test resolution as nested property
            _epService.EPAdministrator.CreateEPL("create schema MyEvent as (customer string, `from` string)");
            _epService.EPAdministrator.CreateEPL("insert into DerivedStream select customer,`from` from MyEvent");
            _epService.EPAdministrator.CreateEPL("create window TheWindow.std:firstunique(customer,`from`) as DerivedStream");
            _epService.EPAdministrator.CreateEPL("on pattern [a=TheWindow -> timer:interval(12 hours)] as s0 delete from TheWindow as s1 where s0.a.`from`=s1.`from`");

            // test escape in column name
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            EPStatement stmtTwo = _epService.EPAdministrator.CreateEPL("select TheString as `order`, TheString as `price.for.goods` from SupportBean");

            stmtTwo.Events += listener.Update;
            Assert.AreEqual(typeof(string), stmtTwo.EventType.GetPropertyType("order"));
            Assert.AreEqual("price.for.goods", stmtTwo.EventType.PropertyDescriptors[1].PropertyName);

            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));
            var @out = (Map)listener.AssertOneGetNew().Underlying;

            Assert.AreEqual("E1", @out.Get("order"));
            Assert.AreEqual("E1", @out.Get("price.for.goods"));

            // try control character
            TryInvalidControlCharacter(listener.AssertOneGetNew());

            // try enum with keyword
            TryEnumWithKeyword();

            TryEnumItselfReserved();

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.EndTest();
            }
        }
示例#22
0
        public void TestEmpty()
        {
            IEnumerator <EventBean> enumerator = testMap.GetMultiLevelEnumerator();

            EPAssertionUtil.AssertEqualsExactOrder(null, enumerator);
        }
示例#23
0
        private void RunAssertion(bool namedWindow, bool enableIndexShareCreate, bool disableIndexShareConsumer, bool createExplicitIndex)
        {
            _epService.EPAdministrator.CreateEPL("create schema EventSchema(e0 string, e1 int, e2 string)");
            _epService.EPAdministrator.CreateEPL("create schema WindowSchema(col0 string, col1 long, col2 string)");

            string createEpl = namedWindow ?
                               "create window MyInfra.win:keepall() as WindowSchema" :
                               "create table MyInfra (col0 string primary key, col1 long, col2 string)";

            if (enableIndexShareCreate)
            {
                createEpl = "@Hint('enable_window_subquery_indexshare') " + createEpl;
            }
            _epService.EPAdministrator.CreateEPL(createEpl);
            _epService.EPAdministrator.CreateEPL("insert into MyInfra select * from WindowSchema");

            EPStatement stmtIndex = null;

            if (createExplicitIndex)
            {
                stmtIndex = _epService.EPAdministrator.CreateEPL("create index MyIndex on MyInfra (col2, col1)");
            }

            string[] fields     = "e0,val".Split(',');
            string   consumeEpl = "select e0, (select col0 from MyInfra where col2 = es.e2 and col1 = es.e1) as val from EventSchema es";

            if (disableIndexShareConsumer)
            {
                consumeEpl = "@Hint('disable_window_subquery_indexshare') " + consumeEpl;
            }
            EPStatement consumeStmt = _epService.EPAdministrator.CreateEPL(consumeEpl);

            consumeStmt.AddListener(_listener);

            SendWindow("W1", 10L, "c31");
            SendEvent("E1", 10, "c31");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E1", "W1" });

            SendEvent("E2", 11, "c32");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E2", null });

            SendWindow("W2", 11L, "c32");
            SendEvent("E3", 11, "c32");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E3", "W2" });

            SendWindow("W3", 11L, "c31");
            SendWindow("W4", 10L, "c32");

            SendEvent("E4", 11, "c31");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E4", "W3" });

            SendEvent("E5", 10, "c31");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E5", "W1" });

            SendEvent("E6", 10, "c32");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E6", "W4" });

            // test late start
            consumeStmt.Dispose();
            consumeStmt = _epService.EPAdministrator.CreateEPL(consumeEpl);
            consumeStmt.AddListener(_listener);

            SendEvent("E6", 10, "c32");
            EPAssertionUtil.AssertProps(_listener.AssertOneGetNewAndReset(), fields, new object[] { "E6", "W4" });

            if (stmtIndex != null)
            {
                stmtIndex.Dispose();
            }
            consumeStmt.Dispose();

            _epService.EPAdministrator.DestroyAllStatements();
            _epService.EPAdministrator.Configuration.RemoveEventType("MyInfra", false);
        }
        public void TestTransposeSingleColumnInsert()
        {
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            _epService.EPAdministrator.Configuration.AddEventType <SupportBeanNumeric>();
            _epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("customOne", typeof(SupportStaticMethodLib).FullName, "MakeSupportBean");
            _epService.EPAdministrator.Configuration.AddPlugInSingleRowFunction("customTwo", typeof(SupportStaticMethodLib).FullName, "MakeSupportBeanNumeric");

            // with transpose and same input and output
            String      stmtTextOne = "insert into SupportBean select Transpose(customOne('O' || TheString, 10)) from SupportBean(TheString like 'I%')";
            EPStatement stmtOne     = _epService.EPAdministrator.CreateEPL(stmtTextOne);

            Assert.AreEqual(typeof(SupportBean), stmtOne.EventType.UnderlyingType);
            stmtOne.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("I1", 1));
            EventBean resultOne = _listener.AssertOneGetNewAndReset();

            EPAssertionUtil.AssertProps(resultOne, "TheString,IntPrimitive".Split(','), new Object[] { "OI1", 10 });
            Assert.AreEqual("OI1", ((SupportBean)resultOne.Underlying).TheString);
            stmtOne.Dispose();

            // with transpose but different input and output (also test ignore column name)
            String      stmtTextTwo = "insert into SupportBeanNumeric select Transpose(customTwo(IntPrimitive, IntPrimitive+1)) as col1 from SupportBean(TheString like 'I%')";
            EPStatement stmtTwo     = _epService.EPAdministrator.CreateEPL(stmtTextTwo);

            Assert.AreEqual(typeof(SupportBeanNumeric), stmtTwo.EventType.UnderlyingType);
            stmtTwo.Events += _listener.Update;

            _epService.EPRuntime.SendEvent(new SupportBean("I2", 10));
            EventBean resultTwo = _listener.AssertOneGetNewAndReset();

            EPAssertionUtil.AssertProps(resultTwo, "intOne,intTwo".Split(','), new Object[] { 10, 11 });
            Assert.AreEqual(11, (int)((SupportBeanNumeric)resultTwo.Underlying).IntTwo);
            stmtTwo.Dispose();

            // invalid wrong-bean target
            try
            {
                _epService.EPAdministrator.CreateEPL("insert into SupportBeanNumeric select Transpose(customOne('O', 10)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Expression-returned value of type 'com.espertech.esper.support.bean.SupportBean' cannot be converted to target event type 'SupportBeanNumeric' with underlying type 'com.espertech.esper.support.bean.SupportBeanNumeric' [insert into SupportBeanNumeric select Transpose(customOne('O', 10)) from SupportBean]", ex.Message);
            }

            // invalid additional properties
            try
            {
                _epService.EPAdministrator.CreateEPL("insert into SupportBean select 1 as dummy, Transpose(customOne('O', 10)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Cannot transpose additional properties in the select-clause to target event type 'SupportBean' with underlying type 'com.espertech.esper.support.bean.SupportBean', the transpose function must occur alone in the select clause [insert into SupportBean select 1 as dummy, Transpose(customOne('O', 10)) from SupportBean]", ex.Message);
            }

            // invalid occurs twice
            try
            {
                _epService.EPAdministrator.CreateEPL("insert into SupportBean select Transpose(customOne('O', 10)), Transpose(customOne('O', 11)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: A column name must be supplied for all but one stream if multiple streams are selected via the stream.* notation [insert into SupportBean select Transpose(customOne('O', 10)), Transpose(customOne('O', 11)) from SupportBean]", ex.Message);
            }

            // invalid wrong-type target
            try
            {
                _epService.EPAdministrator.Configuration.AddEventType("SomeOtherStream", new Dictionary <String, Object>());
                _epService.EPAdministrator.CreateEPL("insert into SomeOtherStream select Transpose(customOne('O', 10)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Expression-returned value of type 'com.espertech.esper.support.bean.SupportBean' cannot be converted to target event type 'SomeOtherStream' with underlying type '" + Name.Of <IDictionary <string, object> >() + "' [insert into SomeOtherStream select Transpose(customOne('O', 10)) from SupportBean]", ex.Message);
            }

            // invalid two parameters
            try
            {
                _epService.EPAdministrator.CreateEPL("select transpose(customOne('O', 10), customOne('O', 10)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Failed to validate select-clause expression 'transpose(customOne(\"O\",10),customO...(46 chars)': The transpose function requires a single parameter expression [select transpose(customOne('O', 10), customOne('O', 10)) from SupportBean]", ex.Message);
            }

            // test not a top-level function or used in where-clause (possible but not useful)
            _epService.EPAdministrator.CreateEPL("select * from SupportBean where Transpose(customOne('O', 10)) is not null");
            _epService.EPAdministrator.CreateEPL("select Transpose(customOne('O', 10)) is not null from SupportBean");


            // invalid insert of object-array into undefined stream
            try
            {
                _epService.EPAdministrator.CreateEPL("insert into SomeOther select transpose(generateOA('a', 1)) from SupportBean");
                Assert.Fail();
            }
            catch (EPStatementException ex)
            {
                Assert.AreEqual("Error starting statement: Invalid expression return type '" + Name.Clean <object[]>() + "' for transpose function [insert into SomeOther select transpose(generateOA('a', 1)) from SupportBean]", ex.Message);
            }
        }
示例#25
0
        private static void RunFollowedByOp(
            RegressionEnvironment env,
            AtomicLong milestone,
            string pattern,
            bool matchDiscard)
        {
            var fields = new[] {"a1.Id", "a2.Id"};

            var epl = "@Name('s0') select * from pattern " +
                      (matchDiscard ? GetText(TargetEnum.DISCARD_ONLY) : "") +
                      "[" +
                      pattern +
                      "]";
            env.CompileDeploy(epl).AddListener("s0");

            SendAEvent(env, "E1");
            SendAEvent(env, "E2");
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {"E1", "E2"});

            env.MilestoneInc(milestone);

            SendAEvent(env, "E3");
            if (matchDiscard) {
                Assert.IsFalse(env.Listener("s0").IsInvoked);
            }
            else {
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E2", "E3"});
            }

            env.MilestoneInc(milestone);

            SendAEvent(env, "E4");
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {"E3", "E4"});

            env.MilestoneInc(milestone);

            SendAEvent(env, "E5");
            if (matchDiscard) {
                Assert.IsFalse(env.Listener("s0").IsInvoked);
            }
            else {
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E4", "E5"});
            }

            SendAEvent(env, "E6");
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {"E5", "E6"});

            env.UndeployAll();
        }
示例#26
0
            public void Run(RegressionEnvironment env)
            {
                var fields = "ro,rc,rho,rhc,nro,nrc,nrho,nrhc".SplitCsv();
                var eplOne =
                    "@Name('s0') select" +
                    " IntPrimitive in (2:4) as ro," +
                    " IntPrimitive in [2:4] as rc," +
                    " IntPrimitive in [2:4) as rho," +
                    " IntPrimitive in (2:4] as rhc," +
                    " IntPrimitive not in (2:4) as nro," +
                    " IntPrimitive not in [2:4] as nrc," +
                    " IntPrimitive not in [2:4) as nrho," +
                    " IntPrimitive not in (2:4] as nrhc " +
                    "from SupportBean";

                env.CompileDeploy(eplOne).AddListener("s0");

                env.SendEventBean(new SupportBean("E1", 1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    false,
                    false,
                    false,
                    false,
                    true,
                    true,
                    true,
                    true);

                env.SendEventBean(new SupportBean("E1", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    false,
                    true,
                    true,
                    false,
                    true,
                    false,
                    false,
                    true);

                env.SendEventBean(new SupportBean("E1", 3));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    true,
                    true,
                    true,
                    true,
                    false,
                    false,
                    false,
                    false);

                env.SendEventBean(new SupportBean("E1", 4));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    false,
                    true,
                    false,
                    true,
                    true,
                    false,
                    true,
                    false);

                env.SendEventBean(new SupportBean("E1", 5));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    false,
                    false,
                    false,
                    false,
                    true,
                    true,
                    true,
                    true);

                env.UndeployAll();

                var model = env.EplToModel(eplOne);
                var epl   = model.ToEPL();

                epl = epl.Replace("IntPrimitive between 2 and 4 as rc", "IntPrimitive in [2:4] as rc");
                epl = epl.Replace("IntPrimitive not between 2 and 4 as nrc", "IntPrimitive not in [2:4] as nrc");
                Assert.That(epl, Is.EqualTo(eplOne));

                // test range reversed
                var eplTwo = "@Name('s1') select IntPrimitive between 4 and 2 as r1, IntPrimitive in [4:2] as r2 from SupportBean";

                env.CompileDeployAddListenerMile(eplTwo, "s1", 1);

                fields = "r1,r2".SplitCsv();
                env.SendEventBean(new SupportBean("E1", 3));
                EPAssertionUtil.AssertProps(env.Listener("s1").AssertOneGetNewAndReset(), fields, true, true);

                env.UndeployAll();

                // test string type;
                fields = "ro".SplitCsv();
                var eplThree = "@Name('s2') select TheString in ('a':'d') as ro from SupportBean";

                env.CompileDeployAddListenerMile(eplThree, "s2", 2);

                env.SendEventBean(new SupportBean("a", 5));
                EPAssertionUtil.AssertProps(env.Listener("s2").AssertOneGetNewAndReset(), fields, false);

                env.SendEventBean(new SupportBean("b", 5));
                EPAssertionUtil.AssertProps(env.Listener("s2").AssertOneGetNewAndReset(), fields, true);

                env.SendEventBean(new SupportBean("c", 5));
                EPAssertionUtil.AssertProps(env.Listener("s2").AssertOneGetNewAndReset(), fields, true);

                env.SendEventBean(new SupportBean("d", 5));
                EPAssertionUtil.AssertProps(env.Listener("s2").AssertOneGetNewAndReset(), fields, false);

                env.UndeployAll();
            }
示例#27
0
        private void RunAsserts()
        {
            object[] s0Events;
            object[] s1Events;
            object[] s2Events;
            object[] s3Events;
            object[] s4Events;
            object[] s5Events;

            // Test s0 and s1=0, s2=0, s3=0, s4=0, s5=0
            //
            s0Events = SupportBean_S0.MakeS0("A", new string[] { "A-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s0 and s1=1, s2=0, s3=0, s4=0, s5=0
            //
            s1Events = SupportBean_S1.MakeS1("B", new string[] { "B-s1-1" });
            SendEvent(s1Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s0Events = SupportBean_S0.MakeS0("B", new string[] { "B-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s0 and s1=1, s2=1, s3=0, s4=0, s5=0
            //
            s1Events = SupportBean_S1.MakeS1("C", new string[] { "C-s1-1" });
            SendEvent(s1Events);

            s2Events = SupportBean_S2.MakeS2("C", new string[] { "C-s2-1" });
            SendEvent(s2Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s0Events = SupportBean_S0.MakeS0("C", new string[] { "C-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s0 and s1=1, s2=1, s3=1, s4=0, s5=0
            //
            s1Events = SupportBean_S1.MakeS1("D", new string[] { "D-s1-1" });
            SendEvent(s1Events);

            s2Events = SupportBean_S2.MakeS2("D", new string[] { "D-s2-1" });
            SendEvent(s2Events);

            s3Events = SupportBean_S3.MakeS3("D", new string[] { "D-s2-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            s0Events = SupportBean_S0.MakeS0("D", new string[] { "D-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s0 and s1=1, s2=1, s3=1, s4=1, s5=0
            //
            s1Events = SupportBean_S1.MakeS1("E", new string[] { "E-s1-1" });
            SendEvent(s1Events);

            s2Events = SupportBean_S2.MakeS2("E", new string[] { "E-s2-1" });
            SendEvent(s2Events);

            s3Events = SupportBean_S3.MakeS3("E", new string[] { "E-s2-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            s4Events = SupportBean_S4.MakeS4("E", new string[] { "E-s2-1" });
            SendEvent(s4Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, null, null, s4Events[0], null }
            }, GetAndResetNewEvents());

            s0Events = SupportBean_S0.MakeS0("E", new string[] { "E-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s0 and s1=2, s2=1, s3=1, s4=1, s5=1
            //
            s1Events = SupportBean_S1.MakeS1("F", new string[] { "F-s1-1" });
            SendEvent(s1Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s2Events = SupportBean_S2.MakeS2("F", new string[] { "F-s2-1" });
            SendEvent(s2Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s3Events = SupportBean_S3.MakeS3("F", new string[] { "F-s3-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            s4Events = SupportBean_S4.MakeS4("F", new string[] { "F-s2-1" });
            SendEvent(s4Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, null, null, s4Events[0], null }
            }, GetAndResetNewEvents());

            s5Events = SupportBean_S5.MakeS5("F", new string[] { "F-s2-1" });
            SendEvent(s5Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, s2Events[0], null, s4Events[0], s5Events[0] }
            }, GetAndResetNewEvents());

            s0Events = SupportBean_S0.MakeS0("F", new string[] { "F-s0-1" });
            SendEvent(s0Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s0 and s1=2, s2=2, s3=1, s4=1, s5=2
            //
            s1Events = SupportBean_S1.MakeS1("G", new string[] { "G-s1-1", "G-s1-2" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("G", new string[] { "G-s2-1", "G-s2-2" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("G", new string[] { "G-s3-1" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("G", new string[] { "G-s2-1" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("G", new string[] { "G-s5-1", "G-s5-2" });
            SendEventsAndReset(s5Events);

            s0Events = SupportBean_S0.MakeS0("G", new string[] { "G-s0-1" });
            SendEvent(s0Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s0 and s1=2, s2=2, s3=2, s4=2, s5=2
            //
            s1Events = SupportBean_S1.MakeS1("H", new string[] { "H-s1-1", "H-s1-2" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("H", new string[] { "H-s2-1", "H-s2-2" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("H", new string[] { "H-s3-1", "H-s3-2" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("H", new string[] { "H-s4-1", "H-s4-2" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("H", new string[] { "H-s5-1", "H-s5-2" });
            SendEventsAndReset(s5Events);

            s0Events = SupportBean_S0.MakeS0("H", new string[] { "H-s0-1" });
            SendEvent(s0Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[1], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[1], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[1], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[1], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[1], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[1], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[1], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[1], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[1], s4Events[1], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s0 and s1=2, s2=1, s3=1, s4=3, s5=1
            //
            s1Events = SupportBean_S1.MakeS1("I", new string[] { "I-s1-1", "I-s1-2" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("I", new string[] { "I-s2-1" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("I", new string[] { "I-s3-1" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("I", new string[] { "I-s4-1", "I-s4-2", "I-s4-3" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("I", new string[] { "I-s5-1" });
            SendEventsAndReset(s5Events);

            s0Events = SupportBean_S0.MakeS0("I", new string[] { "I-s0-1" });
            SendEvent(s0Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[2], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[2], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s1 and s3=0
            //
            s1Events = SupportBean_S1.MakeS1("J", new string[] { "J-s1-1" });
            SendEvent(s1Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            // Test s1 and s0=1, s2=0, s3=1, s4=1, s5=0
            //
            s0Events = SupportBean_S0.MakeS0("K", new string[] { "K-s0-1" });
            SendEvent(s0Events);

            s3Events = SupportBean_S3.MakeS3("K", new string[] { "K-s3-1" });
            SendEventsAndReset(s3Events);

            s1Events = SupportBean_S1.MakeS1("K", new string[] { "K-s1-1" });
            SendEvent(s1Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            // Test s1 and s0=1, s2=1, s3=1, s4=0, s5=1
            //
            s0Events = SupportBean_S0.MakeS0("L", new string[] { "L-s0-1" });
            SendEvent(s0Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s2Events = SupportBean_S2.MakeS2("L", new string[] { "L-s2-1" });
            SendEvent(s2Events);
            Assert.IsFalse(_updateListener.IsInvoked);

            s3Events = SupportBean_S3.MakeS3("L", new string[] { "L-s3-1" });
            SendEventsAndReset(s3Events);

            s5Events = SupportBean_S5.MakeS5("L", new string[] { "L-s5-1" });
            SendEventsAndReset(s5Events);

            s1Events = SupportBean_S1.MakeS1("L", new string[] { "L-s1-1" });
            SendEvent(s1Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            // Test s1 and s0=1, s2=1, s3=1, s4=2, s5=1
            //
            s0Events = SupportBean_S0.MakeS0("M", new string[] { "M-s0-1" });
            SendEvent(s0Events);

            s2Events = SupportBean_S2.MakeS2("M", new string[] { "M-s2-1" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("M", new string[] { "M-s3-1" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("M", new string[] { "M-s4-1", "M-s4-2" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("M", new string[] { "M-s5-1" });
            SendEventsAndReset(s5Events);

            s1Events = SupportBean_S1.MakeS1("M", new string[] { "M-s1-1" });
            SendEvent(s1Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s2 and s0=1, s1=0, s3=0, s4=1, s5=2
            //
            s0Events = SupportBean_S0.MakeS0("N", new string[] { "N-s0-1" });
            SendEvent(s0Events);

            s4Events = SupportBean_S4.MakeS4("N", new string[] { "N-s4-1" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("N", new string[] { "N-s5-1", "N-s5-2" });
            SendEventsAndReset(s5Events);

            s2Events = SupportBean_S2.MakeS2("N", new string[] { "N-s2-1" });
            SendEvent(s2Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, s2Events[0], null, s4Events[0], s5Events[0] },
                new object[] { null, null, s2Events[0], null, s4Events[0], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s2 and s0=1, s1=1, s3=3, s4=1, s5=2
            //
            s0Events = SupportBean_S0.MakeS0("O", new string[] { "O-s0-1" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("O", new string[] { "O-s1-1" });
            SendEvent(s1Events);

            s3Events = SupportBean_S3.MakeS3("O", new string[] { "O-s3-1", "O-s3-2", "O-s3-3" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("O", new string[] { "O-s4-1" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("O", new string[] { "O-s5-1", "O-s5-2" });
            SendEventsAndReset(s5Events);

            s2Events = SupportBean_S2.MakeS2("O", new string[] { "O-s2-1" });
            SendEvent(s2Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[2], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[2], s4Events[0], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s3 and s0=0, s1=0, s2=0, s4=0, s5=0
            //
            s3Events = SupportBean_S3.MakeS3("P", new string[] { "P-s1-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            // Test s3 and s0=0, s1=1, s2=0, s4=0, s5=0
            //
            s1Events = SupportBean_S1.MakeS1("Q", new string[] { "Q-s1-1" });
            SendEvent(s1Events);

            s3Events = SupportBean_S3.MakeS3("Q", new string[] { "Q-s1-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            // Test s3 and s0=1, s1=2, s2=2, s4=0, s5=0
            //
            s0Events = SupportBean_S0.MakeS0("R", new string[] { "R-s0-1" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("R", new string[] { "R-s1-1", "R-s1-2" });
            SendEvent(s1Events);

            s2Events = SupportBean_S2.MakeS2("R", new string[] { "R-s2-1", "R-s2-1" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("R", new string[] { "R-s3-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, s1Events[0], null, s3Events[0], null, null },
                new object[] { null, s1Events[1], null, s3Events[0], null, null }
            }, GetAndResetNewEvents());

            // Test s3 and s0=2, s1=2, s2=1, s4=2, s5=2
            //
            s0Events = SupportBean_S0.MakeS0("S", new string[] { "S-s0-1", "S-s0-2" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("S", new string[] { "S-s1-1", "S-s1-2" });
            SendEvent(s1Events);

            s2Events = SupportBean_S2.MakeS2("S", new string[] { "S-s2-1", "S-s2-1" });
            SendEventsAndReset(s2Events);

            s4Events = SupportBean_S4.MakeS4("S", new string[] { "S-s4-1", "S-s4-2" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("S", new string[] { "S-s5-1", "S-s5-2" });
            SendEventsAndReset(s5Events);

            s3Events = SupportBean_S3.MakeS3("S", new string[] { "s-s3-1" });
            SendEvent(s3Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[1], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[1], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[1], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[1], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[1], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[1], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[1], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[1], s1Events[0], s2Events[1], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[1], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[1], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[1], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[1], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[1], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[1], s1Events[1], s2Events[0], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[1], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[1] },
                new object[] { s0Events[1], s1Events[1], s2Events[1], s3Events[0], s4Events[1], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s4 and s0=1, s1=0, s2=1, s3=0, s5=0
            //
            s0Events = SupportBean_S0.MakeS0("U", new string[] { "U-s0-1" });
            SendEventsAndReset(s0Events);

            s2Events = SupportBean_S2.MakeS2("U", new string[] { "U-s1-1" });
            SendEventsAndReset(s2Events);

            s4Events = SupportBean_S4.MakeS4("U", new string[] { "U-s4-1" });
            SendEvent(s4Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, null, null, s4Events[0], null }
            }, GetAndResetNewEvents());

            // Test s4 and s0=1, s1=0, s2=1, s3=0, s5=1
            //
            s0Events = SupportBean_S0.MakeS0("V", new string[] { "V-s0-1" });
            SendEventsAndReset(s0Events);

            s2Events = SupportBean_S2.MakeS2("V", new string[] { "V-s1-1" });
            SendEventsAndReset(s2Events);

            s5Events = SupportBean_S5.MakeS5("V", new string[] { "V-s5-1" });
            SendEventsAndReset(s5Events);

            s4Events = SupportBean_S4.MakeS4("V", new string[] { "V-s4-1" });
            SendEvent(s4Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { null, null, s2Events[0], null, s4Events[0], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s4 and s0=1, s1=1, s2=1, s3=1, s5=2
            //
            s0Events = SupportBean_S0.MakeS0("W", new string[] { "W-s0-1" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("W", new string[] { "W-s1-1" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("W", new string[] { "W-s2-1" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("W", new string[] { "W-s3-1" });
            SendEventsAndReset(s3Events);

            s5Events = SupportBean_S5.MakeS5("W", new string[] { "W-s5-1", "W-s5-2" });
            SendEventsAndReset(s5Events);

            s4Events = SupportBean_S4.MakeS4("W", new string[] { "W-s4-1" });
            SendEvent(s4Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[1] }
            }, GetAndResetNewEvents());

            // Test s5 and s0=1, s1=2, s2=2, s3=1, s4=1
            //
            s0Events = SupportBean_S0.MakeS0("X", new string[] { "X-s0-1" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("X", new string[] { "X-s1-1", "X-s1-2" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("X", new string[] { "X-s2-1", "X-s2-2" });
            SendEvent(s2Events);

            s3Events = SupportBean_S3.MakeS3("X", new string[] { "X-s3-1" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("X", new string[] { "X-s4-1" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("X", new string[] { "X-s5-1" });
            SendEvent(s5Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[1], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[1], s2Events[1], s3Events[0], s4Events[0], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s5 and s0=2, s1=1, s2=1, s3=1, s4=1
            //
            s0Events = SupportBean_S0.MakeS0("Y", new string[] { "Y-s0-1", "Y-s0-2" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("Y", new string[] { "Y-s1-1" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("Y", new string[] { "Y-s2-1" });
            SendEvent(s2Events);

            s3Events = SupportBean_S3.MakeS3("Y", new string[] { "Y-s3-1" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("Y", new string[] { "Y-s4-1" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("Y", new string[] { "X-s5-1" });
            SendEvent(s5Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[1], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] }
            }, GetAndResetNewEvents());

            // Test s5 and s0=1, s1=1, s2=1, s3=2, s4=2
            //
            s0Events = SupportBean_S0.MakeS0("Z", new string[] { "Z-s0-1" });
            SendEvent(s0Events);

            s1Events = SupportBean_S1.MakeS1("Z", new string[] { "Z-s1-1" });
            SendEventsAndReset(s1Events);

            s2Events = SupportBean_S2.MakeS2("Z", new string[] { "Z-s2-1" });
            SendEventsAndReset(s2Events);

            s3Events = SupportBean_S3.MakeS3("Z", new string[] { "Z-s3-1", "Z-s3-2" });
            SendEventsAndReset(s3Events);

            s4Events = SupportBean_S4.MakeS4("Z", new string[] { "Z-s4-1", "Z-s4-2" });
            SendEventsAndReset(s4Events);

            s5Events = SupportBean_S5.MakeS5("Z", new string[] { "Z-s5-1" });
            SendEvent(s5Events);
            EPAssertionUtil.AssertSameAnyOrder(new object[][] {
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[0], s4Events[1], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[0], s5Events[0] },
                new object[] { s0Events[0], s1Events[0], s2Events[0], s3Events[1], s4Events[1], s5Events[0] }
            }, GetAndResetNewEvents());
        }
示例#28
0
        public void RunAssertionHashBTreeWidening(bool isNamedWindow)
        {
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            _epService.EPAdministrator.Configuration.AddEventType <SupportBean_A>();

            // widen to long
            var eplCreate = isNamedWindow ?
                            "create window MyInfra.win:keepall() as (f1 long, f2 string)" :
                            "create table MyInfra as (f1 long primary key, f2 string primary key)";

            _epService.EPAdministrator.CreateEPL(eplCreate);

            var eplInsert = "insert into MyInfra(f1, f2) select LongPrimitive, TheString from SupportBean";

            _epService.EPAdministrator.CreateEPL(eplInsert);

            _epService.EPAdministrator.CreateEPL("create index MyInfraIndex1 on MyInfra(f1 btree)");
            var fields = "f1,f2".Split(',');

            SendEventLong("E1", 10L);
            var result = _epService.EPRuntime.ExecuteQuery("select * from MyInfra where f1>9");

            EPAssertionUtil.AssertPropsPerRow(result.Array, fields, new object[][] { new object[] { 10L, "E1" } });

            // SODA
            var epl   = "create index IX1 on MyInfra(f1, f2 btree)";
            var model = _epService.EPAdministrator.CompileEPL(epl);

            Assert.AreEqual(model.ToEPL(), epl);
            var stmt = _epService.EPAdministrator.CreateEPL(epl);

            Assert.AreEqual(epl, stmt.Text);

            // SODA with unique
            var eplUnique   = "create unique index IX2 on MyInfra(f1)";
            var modelUnique = _epService.EPAdministrator.CompileEPL(eplUnique);

            Assert.AreEqual(eplUnique, modelUnique.ToEPL());
            var stmtUnique = _epService.EPAdministrator.CreateEPL(eplUnique);

            Assert.AreEqual(eplUnique, stmtUnique.Text);

            // coerce to short
            var eplCreateTwo = isNamedWindow ?
                               "create window MyInfraTwo.win:keepall() as (f1 short, f2 string)" :
                               "create table MyInfraTwo as (f1 short primary key, f2 string primary key)";

            _epService.EPAdministrator.CreateEPL(eplCreateTwo);

            var eplInsertTwo = "insert into MyInfraTwo(f1, f2) select ShortPrimitive, TheString from SupportBean";

            _epService.EPAdministrator.CreateEPL(eplInsertTwo);
            _epService.EPAdministrator.CreateEPL("create index MyInfraTwoIndex1 on MyInfraTwo(f1 btree)");

            SendEventShort("E1", (short)2);

            result = _epService.EPRuntime.ExecuteQuery("select * from MyInfraTwo where f1>=2");
            EPAssertionUtil.AssertPropsPerRow(result.Array, fields, new object[][] { new object[] { (short)2, "E1" } });

            _epService.EPAdministrator.DestroyAllStatements();
            _epService.EPAdministrator.Configuration.RemoveEventType("MyInfra", false);
            _epService.EPAdministrator.Configuration.RemoveEventType("MyInfraTwo", false);
        }
示例#29
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"TheString", "IntPrimitive"};

                var epl = "@Name('s0') select irstream * from SupportBean#sort(3, TheString)";
                env.CompileDeployAddListenerMileZero(epl, "s0");

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("s0"), fields, null);

                SendSupportBean(env, "G", 1);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G", 1});

                env.Milestone(1);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"G", 1}});
                SendSupportBean(env, "E", 2);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E", 2});

                env.Milestone(2);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E", 2}, new object[] {"G", 1}});
                SendSupportBean(env, "H", 3);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"H", 3});

                env.Milestone(3);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E", 2}, new object[] {"G", 1}, new object[] {"H", 3}});
                SendSupportBean(env, "I", 4);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"I", 4},
                    new object[] {"I", 4});

                env.Milestone(4);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E", 2}, new object[] {"G", 1}, new object[] {"H", 3}});
                SendSupportBean(env, "A", 5);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"A", 5},
                    new object[] {"H", 3});

                env.Milestone(5);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 5}, new object[] {"E", 2}, new object[] {"G", 1}});
                SendSupportBean(env, "C", 6);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"C", 6},
                    new object[] {"G", 1});

                env.Milestone(6);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 5}, new object[] {"C", 6}, new object[] {"E", 2}});
                SendSupportBean(env, "C", 7);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"C", 7},
                    new object[] {"E", 2});

                env.Milestone(7);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 5}, new object[] {"C", 7}, new object[] {"C", 6}});
                SendSupportBean(env, "C", 8);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"C", 8},
                    new object[] {"C", 6});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 5}, new object[] {"C", 8}, new object[] {"C", 7}});

                env.UndeployAll();
            }
示例#30
0
        internal static void AssertFileConfig(Configuration config)
        {
            // assert name for class
            Assert.AreEqual(2, config.EventTypeAutoNamePackages.Count);
            Assert.AreEqual("com.mycompany.eventsone", config.EventTypeAutoNamePackages.ToArray()[0]);
            Assert.AreEqual("com.mycompany.eventstwo", config.EventTypeAutoNamePackages.ToArray()[1]);

            // assert name for class
            Assert.AreEqual(3, config.EventTypeNames.Count);
            Assert.AreEqual("com.mycompany.myapp.MySampleEventOne", config.EventTypeNames.Get("MySampleEventOne"));
            Assert.AreEqual("com.mycompany.myapp.MySampleEventTwo", config.EventTypeNames.Get("MySampleEventTwo"));
            Assert.AreEqual("com.mycompany.package.MyLegacyTypeEvent", config.EventTypeNames.Get("MyLegacyTypeEvent"));

            // assert auto imports
            Assert.AreEqual(10, config.Imports.Count);
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc(typeof(NameAttribute).Namespace)));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.espertech.esper.client.annotation")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.espertech.esper.dataflow.ops")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.mycompany.myapp")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.mycompany.myapp.ClassOne")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.mycompany.myapp", "AssemblyA")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.mycompany.myapp", "AssemblyB.dll")));
            Assert.IsTrue(config.Imports.Contains(new AutoImportDesc("com.mycompany.myapp.ClassTwo", "AssemblyB.dll")));

            // assert XML DOM - no schema
            Assert.AreEqual(2, config.EventTypesXMLDOM.Count);
            var noSchemaDesc = config.EventTypesXMLDOM.Get("MyNoSchemaXMLEventName");

            Assert.AreEqual("MyNoSchemaEvent", noSchemaDesc.RootElementName);
            Assert.AreEqual("/myevent/element1", noSchemaDesc.XPathProperties.Get("element1").XPath);
            Assert.AreEqual(XPathResultType.Number, noSchemaDesc.XPathProperties.Get("element1").ResultType);
            Assert.AreEqual(null, noSchemaDesc.XPathProperties.Get("element1").OptionalCastToType);
            Assert.IsNull(noSchemaDesc.XPathFunctionResolver);
            Assert.IsNull(noSchemaDesc.XPathVariableResolver);
            Assert.IsFalse(noSchemaDesc.IsXPathPropertyExpr);

            // assert XML DOM - with schema
            var schemaDesc = config.EventTypesXMLDOM.Get("MySchemaXMLEventName");

            Assert.AreEqual("MySchemaEvent", schemaDesc.RootElementName);
            Assert.AreEqual("MySchemaXMLEvent.xsd", schemaDesc.SchemaResource);
            Assert.AreEqual("actual-xsd-text-here", schemaDesc.SchemaText);
            Assert.AreEqual("samples:schemas:simpleSchema", schemaDesc.RootElementNamespace);
            Assert.AreEqual("default-name-space", schemaDesc.DefaultNamespace);
            Assert.AreEqual("/myevent/element2", schemaDesc.XPathProperties.Get("element2").XPath);
            Assert.AreEqual(XPathResultType.String, schemaDesc.XPathProperties.Get("element2").ResultType);
            Assert.AreEqual(typeof(long), schemaDesc.XPathProperties.Get("element2").OptionalCastToType);
            Assert.AreEqual("/bookstore/book", schemaDesc.XPathProperties.Get("element3").XPath);
            Assert.AreEqual(XPathResultType.NodeSet, schemaDesc.XPathProperties.Get("element3").ResultType);
            Assert.AreEqual(null, schemaDesc.XPathProperties.Get("element3").OptionalCastToType);
            Assert.AreEqual("MyOtherXMLNodeEvent", schemaDesc.XPathProperties.Get("element3").OptionalEventTypeName);
            Assert.AreEqual(1, schemaDesc.NamespacePrefixes.Count);
            Assert.AreEqual("samples:schemas:simpleSchema", schemaDesc.NamespacePrefixes.Get("ss"));
            Assert.IsFalse(schemaDesc.IsXPathResolvePropertiesAbsolute);
            Assert.AreEqual("com.mycompany.OptionalFunctionResolver", schemaDesc.XPathFunctionResolver);
            Assert.AreEqual("com.mycompany.OptionalVariableResolver", schemaDesc.XPathVariableResolver);
            Assert.IsTrue(schemaDesc.IsXPathPropertyExpr);
            Assert.IsFalse(schemaDesc.IsEventSenderValidatesRoot);
            Assert.IsFalse(schemaDesc.IsAutoFragment);
            Assert.AreEqual("startts", schemaDesc.StartTimestampPropertyName);
            Assert.AreEqual("endts", schemaDesc.EndTimestampPropertyName);

            // assert mapped events
            Assert.AreEqual(1, config.EventTypesMapEvents.Count);
            Assert.IsTrue(config.EventTypesMapEvents.Keys.Contains("MyMapEvent"));

            Properties expectedProps = new Properties();

            expectedProps.Put("myInt", "int");
            expectedProps.Put("myString", "string");

            Assert.AreEqual(expectedProps, config.EventTypesMapEvents.Get("MyMapEvent"));
            Assert.AreEqual(1, config.MapTypeConfigurations.Count);
            var superTypes = config.MapTypeConfigurations.Get("MyMapEvent").SuperTypes;

            EPAssertionUtil.AssertEqualsExactOrder(new Object[] { "MyMapSuperType1", "MyMapSuperType2" }, superTypes.ToArray());
            Assert.AreEqual("startts", config.MapTypeConfigurations.Get("MyMapEvent").StartTimestampPropertyName);
            Assert.AreEqual("endts", config.MapTypeConfigurations.Get("MyMapEvent").EndTimestampPropertyName);

            // assert objectarray events
            Assert.AreEqual(1, config.EventTypesNestableObjectArrayEvents.Count);
            Assert.IsTrue(config.EventTypesNestableObjectArrayEvents.ContainsKey("MyObjectArrayEvent"));
            IDictionary <string, object> expectedPropsObjectArray = new Dictionary <string, object>();

            expectedPropsObjectArray.Put("myInt", "int");
            expectedPropsObjectArray.Put("myString", "string");
            Assert.That(config.EventTypesNestableObjectArrayEvents.Get("MyObjectArrayEvent"),
                        Is.InstanceOf <IDictionary <string, object> >());
            Assert.That(config.EventTypesNestableObjectArrayEvents.Get("MyObjectArrayEvent").AsBasicDictionary <string, object>(),
                        Is.EqualTo(expectedPropsObjectArray));

            Assert.AreEqual(expectedPropsObjectArray, config.EventTypesNestableObjectArrayEvents.Get("MyObjectArrayEvent"));
            Assert.AreEqual(1, config.ObjectArrayTypeConfigurations.Count);
            var superTypesOA = config.ObjectArrayTypeConfigurations.Get("MyObjectArrayEvent").SuperTypes;

            EPAssertionUtil.AssertEqualsExactOrder(new Object[] { "MyObjectArraySuperType1", "MyObjectArraySuperType2" }, superTypesOA.ToArray());
            Assert.AreEqual("startts", config.ObjectArrayTypeConfigurations.Get("MyObjectArrayEvent").StartTimestampPropertyName);
            Assert.AreEqual("endts", config.ObjectArrayTypeConfigurations.Get("MyObjectArrayEvent").EndTimestampPropertyName);

            // assert legacy type declaration
            Assert.AreEqual(1, config.EventTypesLegacy.Count);
            var legacy = config.EventTypesLegacy.Get("MyLegacyTypeEvent");

            Assert.AreEqual(CodeGenerationEnum.ENABLED, legacy.CodeGeneration);
            Assert.AreEqual(AccessorStyleEnum.PUBLIC, legacy.AccessorStyle);
            Assert.AreEqual(1, legacy.FieldProperties.Count);
            Assert.AreEqual("myFieldName", legacy.FieldProperties[0].AccessorFieldName);
            Assert.AreEqual("myfieldprop", legacy.FieldProperties[0].Name);
            Assert.AreEqual(1, legacy.MethodProperties.Count);
            Assert.AreEqual("myAccessorMethod", legacy.MethodProperties[0].AccessorMethodName);
            Assert.AreEqual("mymethodprop", legacy.MethodProperties[0].Name);
            Assert.AreEqual(PropertyResolutionStyle.CASE_INSENSITIVE, legacy.PropertyResolutionStyle);
            Assert.AreEqual("com.mycompany.myapp.MySampleEventFactory.createMyLegacyTypeEvent", legacy.FactoryMethod);
            Assert.AreEqual("myCopyMethod", legacy.CopyMethod);
            Assert.AreEqual("startts", legacy.StartTimestampPropertyName);
            Assert.AreEqual("endts", legacy.EndTimestampPropertyName);

            // assert database reference - data source config
            Assert.AreEqual(2, config.DatabaseReferences.Count);
            ConfigurationDBRef        configDBRef = config.DatabaseReferences.Get("mydb1");
            DbDriverFactoryConnection dsDef       = (DbDriverFactoryConnection)configDBRef.ConnectionFactoryDesc;

            Assert.AreEqual("com.espertech.esper.epl.db.drivers.DbDriverMySQL", dsDef.Driver.GetType().FullName);
            Assert.AreEqual("Server=localhost;Database=tempdb;Trusted_Connection=True;", dsDef.Driver.ConnectionString);
            Assert.AreEqual(ConnectionLifecycleEnum.POOLED, configDBRef.ConnectionLifecycle);

            Assert.IsNull(configDBRef.ConnectionSettings.AutoCommit);
            Assert.IsNull(configDBRef.ConnectionSettings.Catalog);
            Assert.IsNull(configDBRef.ConnectionSettings.TransactionIsolation);

            var lruCache = (ConfigurationLRUCache)configDBRef.DataCacheDesc;

            Assert.AreEqual(10, lruCache.Size);
            Assert.AreEqual(ConfigurationDBRef.ColumnChangeCaseEnum.LOWERCASE, configDBRef.ColumnChangeCase);
            Assert.AreEqual(ConfigurationDBRef.MetadataOriginEnum.SAMPLE, configDBRef.MetadataRetrievalEnum);
            //Assert.AreEqual(2, configDBRef.SqlTypesMapping.Count);
            //Assert.AreEqual("int", configDBRef.SqlTypesMapping[2]);
            //Assert.AreEqual("float", configDBRef.SqlTypesMapping[6]);

            // assert database reference - driver manager config
            configDBRef = config.DatabaseReferences.Get("mydb2");

            DbDriverFactoryConnection dmDef = (DbDriverFactoryConnection)configDBRef.ConnectionFactoryDesc;

            Assert.AreEqual("com.espertech.esper.epl.db.drivers.DbDriverODBC", dmDef.Driver.GetType().FullName);
            Assert.AreEqual(
                "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=test;User=esper;Password=Esp3rP@ssw0rd;Option=3",
                dmDef.Driver.ConnectionString);

            Assert.AreEqual(ConnectionLifecycleEnum.RETAIN, configDBRef.ConnectionLifecycle);
            Assert.AreEqual(false, configDBRef.ConnectionSettings.AutoCommit);
            Assert.AreEqual("test", configDBRef.ConnectionSettings.Catalog);
            Assert.AreEqual(IsolationLevel.ReadCommitted, configDBRef.ConnectionSettings.TransactionIsolation);
            ConfigurationExpiryTimeCache expCache = (ConfigurationExpiryTimeCache)configDBRef.DataCacheDesc;

            Assert.AreEqual(60.5, expCache.MaxAgeSeconds);
            Assert.AreEqual(120.1, expCache.PurgeIntervalSeconds);
            Assert.AreEqual(ConfigurationCacheReferenceType.HARD, expCache.CacheReferenceType);
            Assert.AreEqual(ConfigurationDBRef.ColumnChangeCaseEnum.UPPERCASE, configDBRef.ColumnChangeCase);
            Assert.AreEqual(ConfigurationDBRef.MetadataOriginEnum.METADATA, configDBRef.MetadataRetrievalEnum);
            //Assert.AreEqual(1, configDBRef.SqlTypesMapping.Count);
            //Assert.AreEqual("System.String", configDBRef.SqlTypesMapping.Get(99));

            // assert custom view implementations
            var configViews = config.PlugInViews;

            Assert.AreEqual(2, configViews.Count);
            for (var i = 0; i < configViews.Count; i++)
            {
                var entry = configViews[i];
                Assert.AreEqual("ext" + i, entry.Namespace);
                Assert.AreEqual("myview" + i, entry.Name);
                Assert.AreEqual("com.mycompany.MyViewFactory" + i, entry.FactoryClassName);
            }

            // assert custom virtual data window implementations
            var configVDW = config.PlugInVirtualDataWindows;

            Assert.AreEqual(2, configVDW.Count);
            for (var i = 0; i < configVDW.Count; i++)
            {
                var entry = configVDW[i];
                Assert.AreEqual("vdw" + i, entry.Namespace);
                Assert.AreEqual("myvdw" + i, entry.Name);
                Assert.AreEqual("com.mycompany.MyVdwFactory" + i, entry.FactoryClassName);
                if (i == 1)
                {
                    Assert.AreEqual("abc", entry.Config);
                }
            }

            // assert adapter loaders parsed
            var plugins = config.PluginLoaders;

            Assert.AreEqual(2, plugins.Count);
            var pluginOne = plugins[0];

            Assert.AreEqual("Loader1", pluginOne.LoaderName);
            Assert.AreEqual("com.espertech.esper.support.plugin.SupportLoaderOne", pluginOne.TypeName);
            Assert.AreEqual(2, pluginOne.ConfigProperties.Count);
            Assert.AreEqual("val1", pluginOne.ConfigProperties.Get("name1"));
            Assert.AreEqual("val2", pluginOne.ConfigProperties.Get("name2"));
            Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?><sample-initializer xmlns=\"http://www.espertech.com/schema/esper\"><some-any-xml-can-be-here>This section for use by a plugin loader.</some-any-xml-can-be-here></sample-initializer>", pluginOne.ConfigurationXML);

            var pluginTwo = plugins[1];

            Assert.AreEqual("Loader2", pluginTwo.LoaderName);
            Assert.AreEqual("com.espertech.esper.support.plugin.SupportLoaderTwo", pluginTwo.TypeName);
            Assert.AreEqual(0, pluginTwo.ConfigProperties.Count);

            // assert plug-in aggregation function loaded
            Assert.AreEqual(2, config.PlugInAggregationFunctions.Count);
            var pluginAgg = config.PlugInAggregationFunctions[0];

            Assert.AreEqual("func1a", pluginAgg.Name);
            Assert.AreEqual("com.mycompany.MyMatrixAggregationMethod0Factory", pluginAgg.FactoryClassName);
            pluginAgg = config.PlugInAggregationFunctions[1];
            Assert.AreEqual("func2a", pluginAgg.Name);
            Assert.AreEqual("com.mycompany.MyMatrixAggregationMethod1Factory", pluginAgg.FactoryClassName);

            // assert plug-in aggregation multi-function loaded
            Assert.AreEqual(1, config.PlugInAggregationMultiFunctions.Count);
            var pluginMultiAgg = config.PlugInAggregationMultiFunctions[0];

            EPAssertionUtil.AssertEqualsExactOrder(new String[] { "func1", "func2" }, pluginMultiAgg.FunctionNames);
            Assert.AreEqual("com.mycompany.MyAggregationMultiFunctionFactory", pluginMultiAgg.MultiFunctionFactoryClassName);
            Assert.AreEqual(1, pluginMultiAgg.AdditionalConfiguredProperties.Count);
            Assert.AreEqual("value1", pluginMultiAgg.AdditionalConfiguredProperties.Get("prop1"));

            // assert plug-in singlerow function loaded
            Assert.AreEqual(2, config.PlugInSingleRowFunctions.Count);
            var pluginSingleRow = config.PlugInSingleRowFunctions[0];

            Assert.AreEqual("com.mycompany.MyMatrixSingleRowMethod0", pluginSingleRow.FunctionClassName);
            Assert.AreEqual("method1", pluginSingleRow.FunctionMethodName);
            Assert.AreEqual("func3", pluginSingleRow.Name);
            Assert.AreEqual(ValueCache.DISABLED, pluginSingleRow.ValueCache);
            Assert.AreEqual(FilterOptimizable.ENABLED, pluginSingleRow.FilterOptimizable);
            Assert.IsFalse(pluginSingleRow.RethrowExceptions);
            pluginSingleRow = config.PlugInSingleRowFunctions[1];
            Assert.AreEqual("com.mycompany.MyMatrixSingleRowMethod1", pluginSingleRow.FunctionClassName);
            Assert.AreEqual("func4", pluginSingleRow.Name);
            Assert.AreEqual("method2", pluginSingleRow.FunctionMethodName);
            Assert.AreEqual(ValueCache.ENABLED, pluginSingleRow.ValueCache);
            Assert.AreEqual(FilterOptimizable.DISABLED, pluginSingleRow.FilterOptimizable);
            Assert.IsTrue(pluginSingleRow.RethrowExceptions);

            // assert plug-in guard objects loaded
            Assert.AreEqual(4, config.PlugInPatternObjects.Count);
            var pluginPattern = config.PlugInPatternObjects[0];

            Assert.AreEqual("com.mycompany.MyGuardFactory0", pluginPattern.FactoryClassName);
            Assert.AreEqual("ext0", pluginPattern.Namespace);
            Assert.AreEqual("guard1", pluginPattern.Name);
            Assert.AreEqual(ConfigurationPlugInPatternObject.PatternObjectTypeEnum.GUARD, pluginPattern.PatternObjectType);
            pluginPattern = config.PlugInPatternObjects[1];
            Assert.AreEqual("com.mycompany.MyGuardFactory1", pluginPattern.FactoryClassName);
            Assert.AreEqual("ext1", pluginPattern.Namespace);
            Assert.AreEqual("guard2", pluginPattern.Name);
            Assert.AreEqual(ConfigurationPlugInPatternObject.PatternObjectTypeEnum.GUARD, pluginPattern.PatternObjectType);
            pluginPattern = config.PlugInPatternObjects[2];
            Assert.AreEqual("com.mycompany.MyObserverFactory0", pluginPattern.FactoryClassName);
            Assert.AreEqual("ext0", pluginPattern.Namespace);
            Assert.AreEqual("observer1", pluginPattern.Name);
            Assert.AreEqual(ConfigurationPlugInPatternObject.PatternObjectTypeEnum.OBSERVER, pluginPattern.PatternObjectType);
            pluginPattern = config.PlugInPatternObjects[3];
            Assert.AreEqual("com.mycompany.MyObserverFactory1", pluginPattern.FactoryClassName);
            Assert.AreEqual("ext1", pluginPattern.Namespace);
            Assert.AreEqual("observer2", pluginPattern.Name);
            Assert.AreEqual(ConfigurationPlugInPatternObject.PatternObjectTypeEnum.OBSERVER, pluginPattern.PatternObjectType);

            // assert engine defaults
            Assert.IsFalse(config.EngineDefaults.ThreadingConfig.IsInsertIntoDispatchPreserveOrder);
            Assert.AreEqual(3000, config.EngineDefaults.ThreadingConfig.InsertIntoDispatchTimeout);
            Assert.AreEqual(ConfigurationEngineDefaults.Threading.Locking.SUSPEND, config.EngineDefaults.ThreadingConfig.InsertIntoDispatchLocking);

            Assert.IsFalse(config.EngineDefaults.ThreadingConfig.IsListenerDispatchPreserveOrder);
            Assert.AreEqual(2000, config.EngineDefaults.ThreadingConfig.ListenerDispatchTimeout);
            Assert.AreEqual(ConfigurationEngineDefaults.Threading.Locking.SUSPEND, config.EngineDefaults.ThreadingConfig.ListenerDispatchLocking);
            Assert.IsTrue(config.EngineDefaults.ThreadingConfig.IsThreadPoolInbound);
            Assert.IsTrue(config.EngineDefaults.ThreadingConfig.IsThreadPoolOutbound);
            Assert.IsTrue(config.EngineDefaults.ThreadingConfig.IsThreadPoolRouteExec);
            Assert.IsTrue(config.EngineDefaults.ThreadingConfig.IsThreadPoolTimerExec);
            Assert.AreEqual(1, config.EngineDefaults.ThreadingConfig.ThreadPoolInboundNumThreads);
            Assert.AreEqual(2, config.EngineDefaults.ThreadingConfig.ThreadPoolOutboundNumThreads);
            Assert.AreEqual(3, config.EngineDefaults.ThreadingConfig.ThreadPoolTimerExecNumThreads);
            Assert.AreEqual(4, config.EngineDefaults.ThreadingConfig.ThreadPoolRouteExecNumThreads);
            Assert.AreEqual(1000, (int)config.EngineDefaults.ThreadingConfig.ThreadPoolInboundCapacity);
            Assert.AreEqual(1500, (int)config.EngineDefaults.ThreadingConfig.ThreadPoolOutboundCapacity);
            Assert.AreEqual(null, config.EngineDefaults.ThreadingConfig.ThreadPoolTimerExecCapacity);
            Assert.AreEqual(2000, (int)config.EngineDefaults.ThreadingConfig.ThreadPoolRouteExecCapacity);

            Assert.IsFalse(config.EngineDefaults.ThreadingConfig.IsInternalTimerEnabled);
            Assert.AreEqual(1234567, config.EngineDefaults.ThreadingConfig.InternalTimerMsecResolution);
            Assert.IsFalse(config.EngineDefaults.ViewResourcesConfig.IsShareViews);
            Assert.IsTrue(config.EngineDefaults.ViewResourcesConfig.IsAllowMultipleExpiryPolicies);
            Assert.IsTrue(config.EngineDefaults.ViewResourcesConfig.IsIterableUnbound);
            Assert.AreEqual(PropertyResolutionStyle.DISTINCT_CASE_INSENSITIVE, config.EngineDefaults.EventMetaConfig.ClassPropertyResolutionStyle);
            Assert.AreEqual(AccessorStyleEnum.PUBLIC, config.EngineDefaults.EventMetaConfig.DefaultAccessorStyle);
            Assert.AreEqual(EventRepresentation.MAP, config.EngineDefaults.EventMetaConfig.DefaultEventRepresentation);
            Assert.AreEqual(100, config.EngineDefaults.EventMetaConfig.AnonymousCacheSize);
            Assert.IsTrue(config.EngineDefaults.LoggingConfig.IsEnableExecutionDebug);
            Assert.IsFalse(config.EngineDefaults.LoggingConfig.IsEnableTimerDebug);
            Assert.IsTrue(config.EngineDefaults.LoggingConfig.IsEnableQueryPlan);
            Assert.IsTrue(config.EngineDefaults.LoggingConfig.IsEnableADO);
            Assert.AreEqual("[%u] %m", config.EngineDefaults.LoggingConfig.AuditPattern);
            Assert.AreEqual(30000, config.EngineDefaults.VariablesConfig.MsecVersionRelease);
            Assert.AreEqual(3L, (long)config.EngineDefaults.PatternsConfig.MaxSubexpressions);
            Assert.AreEqual(false, config.EngineDefaults.PatternsConfig.IsMaxSubexpressionPreventStart);
            Assert.AreEqual(3L, (long)config.EngineDefaults.MatchRecognizeConfig.MaxStates);
            Assert.AreEqual(false, config.EngineDefaults.MatchRecognizeConfig.IsMaxStatesPreventStart);
            Assert.AreEqual(StreamSelector.RSTREAM_ISTREAM_BOTH, config.EngineDefaults.StreamSelectionConfig.DefaultStreamSelector);

            Assert.AreEqual(ConfigurationEngineDefaults.TimeSourceType.NANO, config.EngineDefaults.TimeSourceConfig.TimeSourceType);
            Assert.IsTrue(config.EngineDefaults.ExecutionConfig.IsPrioritized);
            Assert.IsTrue(config.EngineDefaults.ExecutionConfig.IsFairlock);
            Assert.IsTrue(config.EngineDefaults.ExecutionConfig.IsDisableLocking);
            Assert.IsTrue(config.EngineDefaults.ExecutionConfig.IsAllowIsolatedService);
            Assert.AreEqual(ConfigurationEngineDefaults.ThreadingProfile.LARGE, config.EngineDefaults.ExecutionConfig.ThreadingProfile);
            Assert.AreEqual(ConfigurationEngineDefaults.FilterServiceProfile.READWRITE, config.EngineDefaults.ExecutionConfig.FilterServiceProfile);
            Assert.AreEqual(100, config.EngineDefaults.ExecutionConfig.FilterServiceMaxFilterWidth);

            var metrics = config.EngineDefaults.MetricsReportingConfig;

            Assert.IsTrue(metrics.IsEnableMetricsReporting);
            Assert.AreEqual(4000L, metrics.EngineInterval);
            Assert.AreEqual(500L, metrics.StatementInterval);
            Assert.IsFalse(metrics.IsThreading);
            Assert.AreEqual(2, metrics.StatementGroups.Count);
            //Assert.IsTrue(metrics.IsJmxEngineMetrics);
            var def = metrics.StatementGroups.Get("MyStmtGroup");

            Assert.AreEqual(5000, def.Interval);
            Assert.IsTrue(def.IsDefaultInclude);
            Assert.AreEqual(50, def.NumStatements);
            Assert.IsTrue(def.IsReportInactive);
            Assert.AreEqual(5, def.Patterns.Count);
            Assert.AreEqual(def.Patterns[0], new Pair <StringPatternSet, Boolean>(new StringPatternSetRegex(".*"), true));
            Assert.AreEqual(def.Patterns[1], new Pair <StringPatternSet, Boolean>(new StringPatternSetRegex(".*test.*"), false));
            Assert.AreEqual(def.Patterns[2], new Pair <StringPatternSet, Boolean>(new StringPatternSetLike("%MyMetricsStatement%"), false));
            Assert.AreEqual(def.Patterns[3], new Pair <StringPatternSet, Boolean>(new StringPatternSetLike("%MyFraudAnalysisStatement%"), true));
            Assert.AreEqual(def.Patterns[4], new Pair <StringPatternSet, Boolean>(new StringPatternSetLike("%SomerOtherStatement%"), true));
            def = metrics.StatementGroups.Get("MyStmtGroupTwo");
            Assert.AreEqual(200, def.Interval);
            Assert.IsFalse(def.IsDefaultInclude);
            Assert.AreEqual(100, def.NumStatements);
            Assert.IsFalse(def.IsReportInactive);
            Assert.AreEqual(0, def.Patterns.Count);
            Assert.IsTrue(config.EngineDefaults.LanguageConfig.IsSortUsingCollator);
            Assert.IsTrue(config.EngineDefaults.ExpressionConfig.IsIntegerDivision);
            Assert.IsTrue(config.EngineDefaults.ExpressionConfig.IsDivisionByZeroReturnsNull);
            Assert.IsFalse(config.EngineDefaults.ExpressionConfig.IsSelfSubselectPreeval);
            Assert.IsFalse(config.EngineDefaults.ExpressionConfig.IsUdfCache);
            Assert.IsFalse(config.EngineDefaults.ExpressionConfig.IsExtendedAggregation);
            Assert.IsTrue(config.EngineDefaults.ExpressionConfig.IsDuckTyping);
            Assert.AreEqual(2, config.EngineDefaults.ExpressionConfig.MathContext.Precision);
            Assert.AreEqual(MidpointRounding.ToEven, config.EngineDefaults.ExpressionConfig.MathContext.RoundingMode);
            Assert.AreEqual(TimeZoneHelper.GetTimeZoneInfo("GMT-4:00"), config.EngineDefaults.ExpressionConfig.TimeZone);
            Assert.AreEqual(2, config.EngineDefaults.ExceptionHandlingConfig.HandlerFactories.Count);
            Assert.AreEqual("my.company.cep.LoggingExceptionHandlerFactory", config.EngineDefaults.ExceptionHandlingConfig.HandlerFactories[0]);
            Assert.AreEqual("my.company.cep.AlertExceptionHandlerFactory", config.EngineDefaults.ExceptionHandlingConfig.HandlerFactories[1]);
            Assert.AreEqual(2, config.EngineDefaults.ConditionHandlingConfig.HandlerFactories.Count);
            Assert.AreEqual("my.company.cep.LoggingConditionHandlerFactory", config.EngineDefaults.ConditionHandlingConfig.HandlerFactories[0]);
            Assert.AreEqual("my.company.cep.AlertConditionHandlerFactory", config.EngineDefaults.ConditionHandlingConfig.HandlerFactories[1]);
            Assert.AreEqual("abc", config.EngineDefaults.ScriptsConfig.DefaultDialect);

            // variables
            Assert.AreEqual(3, config.Variables.Count);
            var variable = config.Variables.Get("var1");

            Assert.AreEqual(typeof(int).FullName, variable.VariableType);
            Assert.AreEqual("1", variable.InitializationValue);
            Assert.IsFalse(variable.IsConstant);
            variable = config.Variables.Get("var2");
            Assert.AreEqual(typeof(string).FullName, variable.VariableType);
            Assert.AreEqual(null, variable.InitializationValue);
            Assert.IsFalse(variable.IsConstant);
            variable = config.Variables.Get("var3");
            Assert.IsTrue(variable.IsConstant);

            // method references
            Assert.AreEqual(2, config.MethodInvocationReferences.Count);
            var methodRef = config.MethodInvocationReferences.Get("abc");

            expCache = (ConfigurationExpiryTimeCache)methodRef.DataCacheDesc;
            Assert.AreEqual(91.0, expCache.MaxAgeSeconds);
            Assert.AreEqual(92.2, expCache.PurgeIntervalSeconds);
            Assert.AreEqual(ConfigurationCacheReferenceType.WEAK, expCache.CacheReferenceType);

            methodRef = config.MethodInvocationReferences.Get("def");
            lruCache  = (ConfigurationLRUCache)methodRef.DataCacheDesc;
            Assert.AreEqual(20, lruCache.Size);

            // plug-in event representations
            Assert.AreEqual(2, config.PlugInEventRepresentation.Count);
            var rep = config.PlugInEventRepresentation.Get(new Uri("type://format/rep/name"));

            Assert.AreEqual("com.mycompany.MyPlugInEventRepresentation", rep.EventRepresentationTypeName);
            Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?><anyxml>test string event rep init</anyxml>", rep.Initializer);
            rep = config.PlugInEventRepresentation.Get(new Uri("type://format/rep/name2"));
            Assert.AreEqual("com.mycompany.MyPlugInEventRepresentation2", rep.EventRepresentationTypeName);
            Assert.AreEqual(null, rep.Initializer);

            // plug-in event types
            Assert.AreEqual(2, config.PlugInEventTypes.Count);
            var type = config.PlugInEventTypes.Get("MyEvent");

            Assert.AreEqual(2, type.EventRepresentationResolutionURIs.Count);
            Assert.AreEqual("type://format/rep", type.EventRepresentationResolutionURIs[0].ToString());
            Assert.AreEqual("type://format/rep2", type.EventRepresentationResolutionURIs[1].ToString());
            Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?><anyxml>test string event type init</anyxml>", type.Initializer);
            type = config.PlugInEventTypes.Get("MyEvent2");
            Assert.AreEqual(1, type.EventRepresentationResolutionURIs.Count);
            Assert.AreEqual("type://format/rep2", type.EventRepresentationResolutionURIs[0].ToString());
            Assert.AreEqual(null, type.Initializer);

            // plug-in event representation resolution URIs when using a new name in a statement
            Assert.AreEqual(2, config.PlugInEventTypeResolutionURIs.Count);
            Assert.AreEqual("type://format/rep", config.PlugInEventTypeResolutionURIs[0].ToString());
            Assert.AreEqual("type://format/rep2", config.PlugInEventTypeResolutionURIs[1].ToString());

            // revision types
            Assert.AreEqual(1, config.RevisionEventTypes.Count);
            var configRev = config.RevisionEventTypes.Get("MyRevisionEvent");

            Assert.AreEqual(1, configRev.NameBaseEventTypes.Count);
            Assert.IsTrue(configRev.NameBaseEventTypes.Contains("MyBaseEventName"));
            Assert.IsTrue(configRev.NameDeltaEventTypes.Contains("MyDeltaEventNameOne"));
            Assert.IsTrue(configRev.NameDeltaEventTypes.Contains("MyDeltaEventNameTwo"));
            EPAssertionUtil.AssertEqualsAnyOrder(new String[] { "id", "id2" }, configRev.KeyPropertyNames);
            Assert.AreEqual(PropertyRevisionEnum.MERGE_NON_NULL, configRev.PropertyRevision);

            // variance types
            Assert.AreEqual(1, config.VariantStreams.Count);
            var configVStream = config.VariantStreams.Get("MyVariantStream");

            Assert.AreEqual(2, configVStream.VariantTypeNames.Count);
            Assert.IsTrue(configVStream.VariantTypeNames.Contains("MyEvenTypetNameOne"));
            Assert.IsTrue(configVStream.VariantTypeNames.Contains("MyEvenTypetNameTwo"));
            Assert.AreEqual(TypeVarianceEnum.ANY, configVStream.TypeVariance);
        }