Пример #1
0
            public void Run(RegressionEnvironment env)
            {
                var fieldsWin = new [] { "TheString","IntPrimitive" };
                var fieldsSelect = new [] { "c0" };
                var path = new RegressionPath();

                var eplCreate = namedWindow
                    ? "@Name('create') create window MyInfra#keepall as SupportBean"
                    : "@Name('create') create table MyInfra (TheString string primary key, IntPrimitive int primary key)";
                env.CompileDeploy(eplCreate, path);

                env.CompileDeploy("insert into MyInfra select TheString, IntPrimitive from SupportBean", path);

                var eplSelectDelete = "@Name('s0') on SupportBean_S0 as S0 " +
                                      "select and delete window(win.*).aggregate(0,(result,value) => result+value.IntPrimitive) as c0 " +
                                      "from MyInfra as win where S0.P00=win.TheString";
                env.CompileDeploy(eplSelectDelete, path).AddListener("s0");

                env.SendEventBean(new SupportBean("E1", 1));
                env.SendEventBean(new SupportBean("E2", 2));
                if (namedWindow) {
                    EPAssertionUtil.AssertPropsPerRow(
                        env.GetEnumerator("create"),
                        fieldsWin,
                        new[] {new object[] {"E1", 1}, new object[] {"E2", 2}});
                }
                else {
                    EPAssertionUtil.AssertPropsPerRowAnyOrder(
                        env.GetEnumerator("create"),
                        fieldsWin,
                        new[] {new object[] {"E1", 1}, new object[] {"E2", 2}});
                }

                // select and delete bean E1
                env.SendEventBean(new SupportBean_S0(100, "E1"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsSelect,
                    new object[] {1});
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("create"),
                    fieldsWin,
                    new[] {new object[] {"E2", 2}});

                env.Milestone(0);

                // add some E2 events
                env.SendEventBean(new SupportBean("E2", 3));
                env.SendEventBean(new SupportBean("E2", 4));
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("create"),
                    fieldsWin,
                    new[] {new object[] {"E2", 2}, new object[] {"E2", 3}, new object[] {"E2", 4}});

                // select and delete beans E2
                env.SendEventBean(new SupportBean_S0(101, "E2"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsSelect,
                    new object[] {2 + 3 + 4});
                EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("create"), fieldsWin, new object[0][]);

                // test SODA
                env.EplToModelCompileDeploy(eplSelectDelete, path);

                env.UndeployAll();
            }
Пример #2
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                var stmtCreateTextOne = "@Name('create-one') create variable long var1SAI = null";
                env.CompileDeploy(stmtCreateTextOne, path);
                Assert.AreEqual(
                    StatementType.CREATE_VARIABLE,
                    env.Statement("create-one").GetProperty(StatementProperty.STATEMENTTYPE));
                Assert.AreEqual(
                    "var1SAI", env.Statement("create-one").GetProperty(StatementProperty.CREATEOBJECTNAME));

                env.AddListener("create-one");

                string[] fieldsVar1 = {"var1SAI"};
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("create-one"),
                    fieldsVar1,
                    new[] {new object[] {null}});
                Assert.IsFalse(env.Listener("create-one").IsInvoked);

                var typeCreateOne = env.Statement("create-one").EventType;
                Assert.AreEqual(typeof(long?), typeCreateOne.GetPropertyType("var1SAI"));
                Assert.AreEqual(typeof(IDictionary<string, object>), typeCreateOne.UnderlyingType);
                CollectionAssert.AreEquivalent(new[] {"var1SAI"}, typeCreateOne.PropertyNames);

                var stmtCreateTextTwo = "@Name('create-two') create variable long var2SAI = 20";
                env.CompileDeploy(stmtCreateTextTwo, path).AddListener("create-two");
                string[] fieldsVar2 = {"var2SAI"};
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("create-two"),
                    fieldsVar2,
                    new[] {new object[] {20L}});
                Assert.IsFalse(env.Listener("create-two").IsInvoked);

                var stmtTextSet = "@Name('set') on SupportBean set var1SAI = IntPrimitive * 2, var2SAI = var1SAI + 1";
                env.CompileDeploy(stmtTextSet, path);

                SendSupportBean(env, "E1", 100);
                EPAssertionUtil.AssertProps(
                    env.Listener("create-one").LastNewData[0],
                    fieldsVar1,
                    new object[] {200L});
                EPAssertionUtil.AssertProps(
                    env.Listener("create-one").LastOldData[0],
                    fieldsVar1,
                    new object[] {null});
                env.Listener("create-one").Reset();
                EPAssertionUtil.AssertProps(
                    env.Listener("create-two").LastNewData[0],
                    fieldsVar2,
                    new object[] {201L});
                EPAssertionUtil.AssertProps(
                    env.Listener("create-two").LastOldData[0],
                    fieldsVar2,
                    new object[] {20L});
                env.Listener("create-one").Reset();
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-one").GetEnumerator(),
                    fieldsVar1,
                    new[] {new object[] {200L}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-two").GetEnumerator(),
                    fieldsVar2,
                    new[] {new object[] {201L}});

                env.Milestone(0);

                SendSupportBean(env, "E2", 200);
                EPAssertionUtil.AssertProps(
                    env.Listener("create-one").LastNewData[0],
                    fieldsVar1,
                    new object[] {400L});
                EPAssertionUtil.AssertProps(
                    env.Listener("create-one").LastOldData[0],
                    fieldsVar1,
                    new object[] {200L});
                env.Listener("create-one").Reset();
                EPAssertionUtil.AssertProps(
                    env.Listener("create-two").LastNewData[0],
                    fieldsVar2,
                    new object[] {401L});
                EPAssertionUtil.AssertProps(
                    env.Listener("create-two").LastOldData[0],
                    fieldsVar2,
                    new object[] {201L});
                env.Listener("create-one").Reset();
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-one").GetEnumerator(),
                    fieldsVar1,
                    new[] {new object[] {400L}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-two").GetEnumerator(),
                    fieldsVar2,
                    new[] {new object[] {401L}});

                env.UndeployModuleContaining("set");
                env.UndeployModuleContaining("create-two");
                env.CompileDeploy(stmtCreateTextTwo);

                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-one").GetEnumerator(),
                    fieldsVar1,
                    new[] {new object[] {400L}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("create-two").GetEnumerator(),
                    fieldsVar2,
                    new[] {new object[] {20L}});
                env.UndeployAll();
            }
Пример #3
0
            public void Run(RegressionEnvironment env)
            {
                // create window
                var stmtTextCreate = namedWindow
                    ? "@Name('CreateInfra') create window MyInfra#keepall as select TheString as a, IntPrimitive as b from SupportBean"
                    : "@Name('CreateInfra') create table MyInfra (a string primary key, b int)";
                var path = new RegressionPath();
                env.CompileDeploy(stmtTextCreate, path).AddListener("CreateInfra");

                // create delete stmt
                var stmtTextDelete = "@Name('OnDelete') on SupportBean_A delete from MyInfra";
                env.CompileDeploy(stmtTextDelete, path).AddListener("OnDelete");
                EPAssertionUtil.AssertEqualsAnyOrder(
                    env.Statement("OnDelete").EventType.PropertyNames,
                    new[] {"a", "b"});

                // create insert into
                var stmtTextInsertOne =
                    "@Name('Insert') insert into MyInfra select TheString as a, IntPrimitive as b from SupportBean";
                env.CompileDeploy(stmtTextInsertOne, path);

                // create consumer
                string[] fields = {"a", "b"};
                var stmtTextSelect = "@Name('Select') select irstream MyInfra.a as a, b from MyInfra as S1";
                env.CompileDeploy(stmtTextSelect, path).AddListener("Select");

                // Delete all events, no result expected
                SendSupportBean_A(env, "A1");
                Assert.IsFalse(env.Listener("CreateInfra").IsInvoked);
                Assert.IsFalse(env.Listener("Select").IsInvoked);
                Assert.IsFalse(env.Listener("OnDelete").IsInvoked);
                Assert.AreEqual(0, GetCount(env, path, "MyInfra"));

                // send 1 event
                SendSupportBean(env, "E1", 1);
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetNewAndReset(),
                        fields,
                        new object[] {"E1", 1});
                    EPAssertionUtil.AssertProps(
                        env.Listener("Select").AssertOneGetNewAndReset(),
                        fields,
                        new object[] {"E1", 1});
                }
                else {
                    Assert.IsFalse(env.Listener("CreateInfra").IsInvoked);
                    Assert.IsFalse(env.Listener("Select").IsInvoked);
                }

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("CreateInfra"),
                    fields,
                    new[] {new object[] {"E1", 1}});
                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("OnDelete"), fields, null);
                Assert.AreEqual(1, GetCount(env, path, "MyInfra"));

                env.Milestone(0);

                // Delete all events, 1 row expected
                SendSupportBean_A(env, "A2");
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetOldAndReset(),
                        fields,
                        new object[] {"E1", 1});
                    EPAssertionUtil.AssertProps(
                        env.Listener("Select").AssertOneGetOldAndReset(),
                        fields,
                        new object[] {"E1", 1});
                    EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("OnDelete"), fields, new object[0][]);
                }

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("CreateInfra"), fields, null);
                EPAssertionUtil.AssertProps(
                    env.Listener("OnDelete").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E1", 1});
                Assert.AreEqual(0, GetCount(env, path, "MyInfra"));

                // send 2 events
                SendSupportBean(env, "E2", 2);
                SendSupportBean(env, "E3", 3);
                env.Listener("CreateInfra").Reset();
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("CreateInfra"),
                    fields,
                    new[] {new object[] {"E2", 2}, new object[] {"E3", 3}});
                Assert.IsFalse(env.Listener("OnDelete").IsInvoked);
                Assert.AreEqual(2, GetCount(env, path, "MyInfra"));

                env.Milestone(1);

                // Delete all events, 2 rows expected
                SendSupportBean_A(env, "A2");
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").LastOldData[0],
                        fields,
                        new object[] {"E2", 2});
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").LastOldData[1],
                        fields,
                        new object[] {"E3", 3});
                    EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("OnDelete"), fields, new object[0][]);
                }

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("CreateInfra"), fields, null);
                Assert.AreEqual(2, env.Listener("OnDelete").LastNewData.Length);
                EPAssertionUtil.AssertProps(
                    env.Listener("OnDelete").LastNewData[0],
                    fields,
                    new object[] {"E2", 2});
                EPAssertionUtil.AssertProps(
                    env.Listener("OnDelete").LastNewData[1],
                    fields,
                    new object[] {"E3", 3});
                Assert.AreEqual(0, GetCount(env, path, "MyInfra"));

                env.UndeployAll();
            }
        private static void RunAssertion(
            RegressionEnvironment env,
            String eventTypeName,
            RegressionPath path)
        {
            env.CompileDeploy("@Name('s0') insert into MyNestedStream select nested1 from " + eventTypeName + "#lastevent", path);

            CollectionAssert.AreEquivalent(
                new[] {
                    new EventPropertyDescriptor("nested1", typeof(XmlNode), null, false, false, false, false, true)
                },
                env.Statement("s0").EventType.PropertyDescriptors);
            SupportEventTypeAssertionUtil.AssertConsistency(env.Statement("s0").EventType);

            env.CompileDeploy(
                "@Name('s1') select nested1.attr1 as attr1, nested1.prop1 as prop1, nested1.prop2 as prop2, nested1.nested2.prop3 as prop3, nested1.nested2.prop3[0] as prop3_0, nested1.nested2 as nested2 from MyNestedStream#lastevent",
                path);
            CollectionAssert.AreEquivalent(
                new EventPropertyDescriptor[] {
                    new EventPropertyDescriptor("prop1", typeof(string), typeof(char), false, false, true, false, false),
                    new EventPropertyDescriptor("prop2", typeof(bool?), null, false, false, false, false, false),
                    new EventPropertyDescriptor("attr1", typeof(string), typeof(char), false, false, true, false, false),
                    new EventPropertyDescriptor(
                        "prop3",
                        typeof(int?[]),
                        typeof(int?),
                        false,
                        false,
                        true,
                        false,
                        false),
                    new EventPropertyDescriptor("prop3_0", typeof(int?), null, false, false, false, false, false),
                    new EventPropertyDescriptor("nested2", typeof(XmlNode), null, false, false, false, false, true)
                },
                env.Statement("s1").EventType.PropertyDescriptors);
            SupportEventTypeAssertionUtil.AssertConsistency(env.Statement("s1").EventType);

            env.CompileDeploy("@Name('sw') select * from MyNestedStream", path);
            CollectionAssert.AreEquivalent(
                new EventPropertyDescriptor[] {
                    new EventPropertyDescriptor("nested1", typeof(XmlNode), null, false, false, false, false, true)
                },
                env.Statement("sw").EventType.PropertyDescriptors);
            SupportEventTypeAssertionUtil.AssertConsistency(env.Statement("sw").EventType);

            env.CompileDeploy(
                "@Name('iw') insert into MyNestedStreamTwo select nested1.* from " + eventTypeName + "#lastevent",
                path);
            CollectionAssert.AreEquivalent(
                new EventPropertyDescriptor[] {
                    new EventPropertyDescriptor("prop1", typeof(string), typeof(char), false, false, true, false, false),
                    new EventPropertyDescriptor("prop2", typeof(bool?), null, false, false, false, false, false),
                    new EventPropertyDescriptor("attr1", typeof(string), typeof(char), false, false, true, false, false),
                    new EventPropertyDescriptor("nested2", typeof(XmlNode), null, false, false, false, false, true)
                },
                env.Statement("iw").EventType.PropertyDescriptors);
            SupportEventTypeAssertionUtil.AssertConsistency(env.Statement("iw").EventType);

            SupportXML.SendDefaultEvent(env.EventService, "test", eventTypeName);
            var stmtInsertWildcardBean = env.GetEnumerator("iw").Advance();
            EPAssertionUtil.AssertProps(
                stmtInsertWildcardBean,
                new[] {"prop1", "prop2", "attr1"},
                new object[] {"SAMPLE_V1", true, "SAMPLE_ATTR1"});

            SupportEventTypeAssertionUtil.AssertConsistency(env.GetEnumerator("s0").Advance());
            var stmtInsertBean = env.GetEnumerator("s0").Advance();
            SupportEventTypeAssertionUtil.AssertConsistency(env.GetEnumerator("iw").Advance());
            SupportEventTypeAssertionUtil.AssertConsistency(env.GetEnumerator("sw").Advance());

            var fragmentNested1 = (EventBean) stmtInsertBean.GetFragment("nested1");
            Assert.AreEqual(5, fragmentNested1.Get("nested2.prop3[2]"));
            Assert.AreEqual(eventTypeName + ".nested1", fragmentNested1.EventType.Name);

            var fragmentNested2 = (EventBean) stmtInsertWildcardBean.GetFragment("nested2");
            Assert.AreEqual(4, fragmentNested2.Get("prop3[1]"));
            Assert.AreEqual(eventTypeName + ".nested1.nested2", fragmentNested2.EventType.Name);

            env.UndeployAll();
        }
Пример #5
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"TheString", "IntPrimitive", "LongPrimitive"};
                var epl = "@Name('s0') select irstream * from SupportBean.ext:rank(TheString, 3, IntPrimitive)";
                env.CompileDeployAddListenerMileZero(epl, "s0");

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

                SendSupportBean(env, "A", 10, 100L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"A", 10, 100L});

                env.Milestone(1);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 10, 100L}});
                SendSupportBean(env, "B", 20, 101L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"B", 20, 101L});

                env.Milestone(2);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 10, 100L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "A", 8, 102L); // replace A
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"A", 8, 102L},
                    new object[] {"A", 10, 100L});

                env.Milestone(3);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 8, 102L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "C", 15, 103L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"C", 15, 103L});

                env.Milestone(4);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 8, 102L}, new object[] {"C", 15, 103L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "D", 21, 104L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"D", 21, 104L},
                    new object[] {"D", 21, 104L});

                env.Milestone(5);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 8, 102L}, new object[] {"C", 15, 103L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "A", 16, 105L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"A", 16, 105L},
                    new object[] {"A", 8, 102L});

                env.Milestone(6);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"C", 15, 103L}, new object[] {"A", 16, 105L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "C", 16, 106L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"C", 16, 106L},
                    new object[] {"C", 15, 103L});

                env.Milestone(7);

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 16, 105L}, new object[] {"C", 16, 106L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "C", 16, 107L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"C", 16, 107L},
                    new object[] {"C", 16, 106L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 16, 105L}, new object[] {"C", 16, 107L}, new object[] {"B", 20, 101L}});
                SendSupportBean(env, "E", 1, 108L);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E", 1, 108L},
                    new object[] {"B", 20, 101L});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E", 1, 108L}, new object[] {"A", 16, 105L}, new object[] {"C", 16, 107L}});

                env.UndeployAll();
            }
Пример #6
0
            public void Run(RegressionEnvironment env)
            {
                // create infra
                var stmtTextCreate = namedWindow
                    ? "@Name('CreateInfra') create window MyInfra#keepall as select TheString as a, IntPrimitive as b from SupportBean"
                    : "@Name('CreateInfra') create table MyInfra(a string primary key, b int)";
                var path = new RegressionPath();
                env.CompileDeploy(stmtTextCreate, path).AddListener("CreateInfra");

                // create delete stmt
                var stmtTextDelete =
                    "@Name('OnDelete') on pattern [every ea=SupportBean_A or every eb=SupportBean_B] delete from MyInfra";
                env.CompileDeploy(stmtTextDelete, path).AddListener("OnDelete");

                // create insert into
                var stmtTextInsertOne = "insert into MyInfra select TheString as a, IntPrimitive as b from SupportBean";
                env.CompileDeploy(stmtTextInsertOne, path);

                // send 1 event
                string[] fields = {"a", "b"};
                SendSupportBean(env, "E1", 1);
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetNewAndReset(),
                        fields,
                        new object[] {"E1", 1});
                    EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("OnDelete"), fields, null);
                }

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("CreateInfra"),
                    fields,
                    new[] {new object[] {"E1", 1}});
                Assert.AreEqual(1, GetCount(env, path, "MyInfra"));

                // Delete all events using A, 1 row expected
                SendSupportBean_A(env, "A1");
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetOldAndReset(),
                        fields,
                        new object[] {"E1", 1});
                }

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("CreateInfra"), fields, null);
                EPAssertionUtil.AssertProps(
                    env.Listener("OnDelete").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E1", 1});
                Assert.AreEqual(0, GetCount(env, path, "MyInfra"));

                env.Milestone(0);

                // send 1 event
                SendSupportBean(env, "E2", 2);
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetNewAndReset(),
                        fields,
                        new object[] {"E2", 2});
                }

                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("CreateInfra"),
                    fields,
                    new[] {new object[] {"E2", 2}});
                Assert.AreEqual(1, GetCount(env, path, "MyInfra"));

                // Delete all events using B, 1 row expected
                SendSupportBean_B(env, "B1");
                if (namedWindow) {
                    EPAssertionUtil.AssertProps(
                        env.Listener("CreateInfra").AssertOneGetOldAndReset(),
                        fields,
                        new object[] {"E2", 2});
                }

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("CreateInfra"), fields, null);
                EPAssertionUtil.AssertProps(
                    env.Listener("OnDelete").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E2", 2});
                Assert.AreEqual(0, GetCount(env, path, "MyInfra"));

                env.UndeployAll();
            }
Пример #7
0
            public void Run(RegressionEnvironment env)
            {
                var text =
                    "@Name('s0') select irstream Symbol, Feed, Price from  SupportMarketDataBean#unique(Symbol, Feed) order by Symbol, Feed";
                if (optionalAnnotation != null) {
                    text = optionalAnnotation + text;
                }

                env.CompileDeployAddListenerMileZero(text, "s0");

                env.SendEventBean(MakeMarketDataEvent("S1", "F1", 100));
                env.Listener("s0")
                    .AssertNewOldData(
                        new[] {
                            new object[] {"Symbol", "S1"},
                            new object[] {"Feed", "F1"},
                            new object[] {"Price", 100.0}
                        },
                        null);

                env.Milestone(1);

                env.SendEventBean(MakeMarketDataEvent("S2", "F1", 5));
                env.Listener("s0")
                    .AssertNewOldData(
                        new[] {
                            new object[] {"Symbol", "S2"},
                            new object[] {"Feed", "F1"},
                            new object[] {"Price", 5.0}
                        },
                        null);

                env.Milestone(2);

                env.SendEventBean(MakeMarketDataEvent("S1", "F1", 101));
                env.Listener("s0")
                    .AssertNewOldData(
                        new[] {
                            new object[] {"Symbol", "S1"},
                            new object[] {"Feed", "F1"},
                            new object[] {"Price", 101.0}
                        },
                        new[] {
                            new object[] {"Symbol", "S1"}, new object[] {"Feed", "F1"}, new object[] {"Price", 100.0}
                        });

                env.Milestone(3);

                env.SendEventBean(MakeMarketDataEvent("S2", "F1", 102));
                env.Listener("s0")
                    .AssertNewOldData(
                        new[] {
                            new object[] {"Symbol", "S2"},
                            new object[] {"Feed", "F1"},
                            new object[] {"Price", 102.0}
                        },
                        new[] {
                            new object[] {"Symbol", "S2"}, new object[] {"Feed", "F1"}, new object[] {"Price", 5.0}
                        });

                // test iterator
                var events = EPAssertionUtil.EnumeratorToArray(env.GetEnumerator("s0"));
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    events,
                    new[] {"Price"},
                    new[] {new object[] {101.0}, new object[] {102.0}});

                env.Milestone(4);

                env.SendEventBean(MakeMarketDataEvent("S1", "F2", 6));
                env.Listener("s0")
                    .AssertNewOldData(
                        new[] {
                            new object[] {"Symbol", "S1"},
                            new object[] {"Feed", "F2"},
                            new object[] {"Price", 6.0}
                        },
                        null);

                // test iterator
                events = EPAssertionUtil.EnumeratorToArray(env.GetEnumerator("s0"));
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    events,
                    new[] {"Price"},
                    new[] {new object[] {101.0}, new object[] {6.0}, new object[] {102.0}});

                env.UndeployAll();
            }
Пример #8
0
 public void Run(RegressionEnvironment env)
 {
     SetupStatement(env, "right");
     // Send S0 events, no events expected
     SendEvent(EVENTS_S0[0], env);
     SendEvent(EVENTS_S0[1], env);
     Assert.IsFalse(env.Listener("s0").IsInvoked);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, null);
     // Send S1[2]
     SendEvent(EVENTS_S1[2], env);
     var theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, null, null, 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {null, null, 202, "2"}});
     // Send S0[2] events, joined event expected
     SendEvent(EVENTS_S0[2], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 102, "2", 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {102, "2", 202, "2"}});
     // Send S1[3]
     SendEvent(EVENTS_S1[3], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, null, null, 203, "3");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {102, "2", 202, "2"}, new object[] {null, null, 203, "3"}});
     // Send some more S0 events
     SendEvent(EVENTS_S0[3], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 103, "3", 203, "3");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {102, "2", 202, "2"}, new object[] {103, "3", 203, "3"}});
     // Send some more S0 events
     SendEvent(EVENTS_S0[4], env);
     Assert.IsFalse(env.Listener("s0").IsInvoked);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {102, "2", 202, "2"}, new object[] {103, "3", 203, "3"}});
     // Push S0[2] out of the window
     SendEvent(EVENTS_S0[5], env);
     theEvent = env.Listener("s0").AssertOneGetOldAndReset();
     CompareEvent(theEvent, 102, "2", 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {null, null, 202, "2"}, new object[] {103, "3", 203, "3"}});
     // Some more S1 events
     SendEvent(EVENTS_S1[6], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 206, "6");
     SendEvent(EVENTS_S1[7], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 207, "7");
     SendEvent(EVENTS_S1[8], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 208, "8");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[9], env);
     var oldEvent = env.Listener("s0").LastOldData[0];
     var newEvent = env.Listener("s0").LastNewData[0];
     CompareEvent(oldEvent, null, null, 202, "2");
     CompareEvent(newEvent, null, null, 209, "9");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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"}
         });
     env.UndeployAll();
 }
Пример #9
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"TheString"};

                env.Milestone(0);

                var epl = "@Name('s0') select irstream * from SupportBean#length(2)";
                env.CompileDeployAddListenerMile(epl, "s0", 1);

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

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

                env.Milestone(2);
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1"}});

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

                env.Milestone(3);
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}});

                SendSupportBean(env, "E3");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E3"},
                    new object[] {"E1"});

                env.Milestone(4);
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}});

                env.Milestone(5);
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}});

                SendSupportBean(env, "E4");
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E4"},
                    new object[] {"E2"});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E4"}});

                env.UndeployAll();
            }
Пример #10
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy(
                    "@Name('create') create table MyTableEUIV as (pKey0 string primary key, pkey1 int primary key, thecnt count(*))",
                    path);
                env.CompileDeploy(
                    "into table MyTableEUIV select count(*) as thecnt from SupportBean group by TheString, IntPrimitive",
                    path);
                env.SendEventBean(new SupportBean("E1", 10));
                env.SendEventBean(new SupportBean("E1", 20));

                // invalid index being created
                try {
                    var compiled = env.Compile("create unique index SecIndex on MyTableEUIV(pKey0)", path);
                    env.Runtime.DeploymentService.Deploy(compiled);
                    Assert.Fail();
                }
                catch (EPDeployException ex) {
                    SupportMessageAssertUtil.AssertMessage(
                        ex.Message,
                        "Failed to deploy: Unique index violation, index 'SecIndex' is a unique index and key 'E1' already exists");
                }

                // try fire-and-forget update of primary key to non-unique value
                try {
                    env.CompileExecuteFAF("update MyTableEUIV set pkey1 = 0", path);
                    Assert.Fail();
                }
                catch (EPException ex) {
                    SupportMessageAssertUtil.AssertMessage(
                        ex,
                        "Unique index violation, index 'MyTableEUIV' is a unique index and key 'MultiKey<E1,0>' already exists");
                    // assert events are unchanged - no update actually performed
                    EPAssertionUtil.AssertPropsPerRowAnyOrder(
                        env.GetEnumerator("create"),
                        new[] {"pKey0", "pkey1"},
                        new[] {new object[] {"E1", 10}, new object[] {"E1", 20}});
                }

                // try on-update unique index violation
                env.CompileDeploy("@Name('on-update') on SupportBean_S1 update MyTableEUIV set pkey1 = 0", path);
                try {
                    env.SendEventBean(new SupportBean_S1(0));
                    Assert.Fail();
                }
                catch (EPException ex) {
                    SupportMessageAssertUtil.AssertMessage(
                        ex,
                        "Unexpected exception in statement 'on-update': Unique index violation, index 'MyTableEUIV' is a unique index and key 'MultiKey<E1,0>' already exists");
                    // assert events are unchanged - no update actually performed
                    EPAssertionUtil.AssertPropsPerRowAnyOrder(
                        env.Statement("create").GetEnumerator(),
                        new[] {"pKey0", "pkey1"},
                        new[] {new object[] {"E1", 10}, new object[] {"E1", 20}});
                }

                // disallow on-merge unique key updates
                try {
                    env.CompileWCheckedEx(
                        "@Name('on-merge') on SupportBean_S1 merge MyTableEUIV when matched then update set pkey1 = 0",
                        path);
                    Assert.Fail();
                }
                catch (EPCompileException ex) {
                    SupportMessageAssertUtil.AssertMessage(
                        ex.InnerException,
                        "Validation failed in when-matched (clause 1): On-merge statements may not update unique keys of tables");
                }

                env.UndeployAll();
            }
Пример #11
0
            public void Run(RegressionEnvironment env)
            {
                var text = "@Name('s0') select irstream Symbol, " +
                           "prev(1, Symbol) as prev1, " +
                           "prior(1, Symbol) as prio1, " +
                           "prevtail(Symbol) as prevtail0, " +
                           "prevcount(Symbol) as prevCountSym, " +
                           "prevwindow(Symbol) as prevWindowSym " +
                           "from SupportMarketDataBean.win:length(2)";
                env.CompileDeployAddListenerMileZero(text, "s0");
                string[] fields = {"Symbol", "prev1", "prio1", "prevtail0", "prevCountSym", "prevWindowSym"};

                env.SendEventBean(MakeMarketDataEvent("E1"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "E1", null, null, "E1", 1L,
                        new object[] {"E1"}
                    });

                env.Milestone(1);

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

                env.Milestone(2);

                for (var i = 3; i < 10; i++) {
                    env.SendEventBean(MakeMarketDataEvent("E" + i));

                    env.Listener("s0")
                        .AssertNewOldData(
                            new[] {
                                new object[] {"Symbol", "E" + i}, new object[] {"prev1", "E" + (i - 1)},
                                new object[] {"prio1", "E" + (i - 1)}, new object[] {"prevtail0", "E" + (i - 1)}
                            }, // new data
                            new[] {
                                new object[] {"Symbol", "E" + (i - 2)}, new object[] {"prev1", null},
                                new object[] {"prevtail0", null}
                            } //  old data
                        );

                    env.Milestone(i);
                }

                // Lets try the iterator
                var events = env.GetEnumerator("s0");
                for (var i = 8; i < 10; i++) {
                    var @event = events.Advance();
                    Assert.AreEqual("E" + i, @event.Get("Symbol"));
                }

                env.UndeployAll();
            }
Пример #12
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy("@Name('v0') create variable Object varobject = null", path);
                env.CompileDeploy(
                    "@Name('v1') create variable " + typeof(SupportBean_A).FullName + " varbean = null",
                    path);
                env.CompileDeploy("@Name('v2') create variable SupportBean_S0 vartype = null", path);
                var depIdVarobject = env.DeploymentId("v0");
                var depIdVarbean = env.DeploymentId("v1");
                var depIdVartype = env.DeploymentId("v2");

                var fields = new [] { "varobject","varbean","varbean.Id","vartype","vartype.Id" };
                env.CompileDeploy(
                    "@Name('s0') select varobject, varbean, varbean.Id, vartype, vartype.Id from SupportBean",
                    path);
                env.AddListener("s0");

                // test null
                env.SendEventBean(new SupportBean());
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {null, null, null, null, null});

                env.Milestone(0);

                // test objects
                var a1objectOne = new SupportBean_A("A1");
                var s0objectOne = new SupportBean_S0(1);
                env.Runtime.VariableService.SetVariableValue(depIdVarobject, "varobject", "abc");
                env.Runtime.VariableService.SetVariableValue(depIdVarbean, "varbean", a1objectOne);
                env.Runtime.VariableService.SetVariableValue(depIdVartype, "vartype", s0objectOne);

                env.Milestone(1);

                env.SendEventBean(new SupportBean());
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"abc", a1objectOne, a1objectOne.Id, s0objectOne, s0objectOne.Id});

                // test on-set for Object and EventType
                var fieldsTop = new [] { "varobject","vartype","varbean" };
                env.CompileDeploy(
                    "@Name('set') on SupportBean_S0(P00='X') arrival set varobject=1, vartype=arrival, varbean=null",
                    path);
                env.AddListener("set");

                var s0objectTwo = new SupportBean_S0(2, "X");
                env.SendEventBean(s0objectTwo);
                Assert.AreEqual(1, env.Runtime.VariableService.GetVariableValue(depIdVarobject, "varobject"));
                Assert.AreEqual(s0objectTwo, env.Runtime.VariableService.GetVariableValue(depIdVartype, "vartype"));
                Assert.AreEqual(
                    s0objectTwo,
                    env.Runtime
                        .VariableService.GetVariableValue(
                            Collections.SingletonSet(new DeploymentIdNamePair(depIdVartype, "vartype")))
                        .Get(new DeploymentIdNamePair(depIdVartype, "vartype")));
                EPAssertionUtil.AssertProps(
                    env.Listener("set").AssertOneGetNewAndReset(),
                    fieldsTop,
                    new object[] {1, s0objectTwo, null});
                EPAssertionUtil.AssertProps(
                    env.GetEnumerator("set").Advance(),
                    fieldsTop,
                    new object[] {1, s0objectTwo, null});

                // set via API to null
                IDictionary<DeploymentIdNamePair, object> newValues = new Dictionary<DeploymentIdNamePair, object>();
                newValues.Put(new DeploymentIdNamePair(depIdVarobject, "varobject"), null);
                newValues.Put(new DeploymentIdNamePair(depIdVartype, "vartype"), null);
                newValues.Put(new DeploymentIdNamePair(depIdVarbean, "varbean"), null);
                env.Runtime.VariableService.SetVariableValue(newValues);
                env.SendEventBean(new SupportBean());
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {null, null, null, null, null});

                // set via API to values
                newValues.Put(new DeploymentIdNamePair(depIdVarobject, "varobject"), 10L);
                newValues.Put(new DeploymentIdNamePair(depIdVartype, "vartype"), s0objectTwo);
                newValues.Put(new DeploymentIdNamePair(depIdVarbean, "varbean"), a1objectOne);
                env.Runtime.VariableService.SetVariableValue(newValues);
                env.SendEventBean(new SupportBean());
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {10L, a1objectOne, a1objectOne.Id, s0objectTwo, s0objectTwo.Id});

                // test on-set for Bean class
                env.CompileDeploy(
                    "@Name('set-two') on SupportBean_A(Id='Y') arrival set varobject=null, vartype=null, varbean=arrival",
                    path);
                env.AddListener("set-two");
                var a1objectTwo = new SupportBean_A("Y");
                env.SendEventBean(new SupportBean_A("Y"));
                Assert.AreEqual(null, env.Runtime.VariableService.GetVariableValue(depIdVarobject, "varobject"));
                Assert.AreEqual(null, env.Runtime.VariableService.GetVariableValue(depIdVartype, "vartype"));
                Assert.AreEqual(
                    a1objectTwo,
                    env.Runtime
                        .VariableService.GetVariableValue(
                            Collections.SingletonSet(new DeploymentIdNamePair(depIdVarbean, "varbean")))
                        .Get(new DeploymentIdNamePair(depIdVarbean, "varbean")));
                EPAssertionUtil.AssertProps(
                    env.Listener("set-two").AssertOneGetNewAndReset(),
                    fieldsTop,
                    new object[] {null, null, a1objectTwo});
                EPAssertionUtil.AssertProps(
                    env.GetEnumerator("set-two").Advance(),
                    fieldsTop,
                    new object[] {null, null, a1objectTwo});

                env.UndeployAll();
            }
Пример #13
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy("@Name('create') create variable SupportBean varbean", path);

                var fields = new [] { "varbean.TheString","varbean.IntPrimitive","varbean.GetTheString()" };
                env.CompileDeploy(
                    "@Name('s0') select varbean.TheString,varbean.IntPrimitive,varbean.GetTheString() from SupportBean_S0",
                    path);
                env.AddListener("s0");

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

                env.CompileDeploy(
                    "@Name('set') on SupportBean_A set varbean.TheString = 'A', varbean.IntPrimitive = 1",
                    path);
                env.AddListener("set");
                env.SendEventBean(new SupportBean_A("E1"));
                env.Listener("set").Reset();

                env.Milestone(0);

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

                var setBean = new SupportBean();
                env.Runtime.VariableService.SetVariableValue(env.DeploymentId("create"), "varbean", setBean);
                env.SendEventBean(new SupportBean_A("E2"));
                EPAssertionUtil.AssertProps(
                    env.Listener("set").AssertOneGetNewAndReset(),
                    new [] { "varbean.TheString","varbean.IntPrimitive" },
                    new object[] {"A", 1});
                EPAssertionUtil.AssertProps(
                    env.GetEnumerator("set").Advance(),
                    new [] { "varbean.TheString","varbean.IntPrimitive" },
                    new object[] {"A", 1});

                env.Milestone(1);

                env.SendEventBean(new SupportBean_S0(3));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"A", 1, "A"});
                Assert.AreNotSame(
                    setBean,
                    env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "varbean"));
                Assert.AreEqual(
                    1,
                    ((SupportBean) env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "varbean"))
                    .IntPrimitive);

                // test self evaluate
                env.UndeployModuleContaining("set");
                env.CompileDeploy(
                    "@Name('set') on SupportBean_A set varbean.TheString = SupportBean_A.Id, varbean.TheString = '>'||varbean.TheString||'<'",
                    path);
                env.AddListener("set");
                env.SendEventBean(new SupportBean_A("E3"));
                Assert.AreEqual(
                    ">E3<",
                    ((SupportBean) env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "varbean"))
                    .TheString);
                env.UndeployModuleContaining("set");

                // test widen
                env.CompileDeploy("@Name('set') on SupportBean_A set varbean.LongPrimitive = 1", path);
                env.AddListener("set");
                env.SendEventBean(new SupportBean_A("E4"));
                Assert.AreEqual(
                    1,
                    ((SupportBean) env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "varbean"))
                    .LongPrimitive);

                env.UndeployAll();
            }
Пример #14
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "Book.BookId","Item.ItemId","Amount" };
                var stmtText = "@Name('s0') select Book.BookId,Item.ItemId,Amount from " +
                               "OrderBean[Books]#firstunique(BookId) Book, " +
                               "OrderBean[OrderDetail.Items]#keepall Item " +
                               "where Book.BookId = Item.ProductId " +
                               "order by Book.BookId, Item.ItemId";
                env.CompileDeploy(stmtText).AddListener("s0");

                env.SendEventBean(MakeEventOne());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {
                        new object[] {"10020", "A001", 10}, new object[] {"10020", "A003", 30},
                        new object[] {"10021", "A002", 25}
                    });
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {
                        new object[] {"10020", "A001", 10}, new object[] {"10020", "A003", 30},
                        new object[] {"10021", "A002", 25}
                    });
                env.Listener("s0").Reset();

                env.SendEventBean(MakeEventTwo());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"10022", "B001", 5}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {
                        new object[] {"10020", "A001", 10}, new object[] {"10020", "A003", 30},
                        new object[] {"10021", "A002", 25}, new object[] {"10022", "B001", 5}
                    });
                env.Listener("s0").Reset();

                env.SendEventBean(MakeEventThree());
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"10021", "C001", 50}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {
                        new object[] {"10020", "A001", 10}, new object[] {"10020", "A003", 30},
                        new object[] {"10021", "A002", 25}, new object[] {"10021", "C001", 50},
                        new object[] {"10022", "B001", 5}
                    });
                env.Listener("s0").Reset();

                env.SendEventBean(MakeEventFour());
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.UndeployAll();
            }
Пример #15
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"c0", "c1"};
                var epl =
                    "@Name('s0') select irstream TheString as c0, IntPrimitive as c1 from SupportBean#unique(TheString)";
                if (optionalAnnotations != null) {
                    epl = optionalAnnotations + epl;
                }

                env.CompileDeployAddListenerMileZero(epl, "s0");

                env.Milestone(1);

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

                env.Milestone(2);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1", 1}});
                SendSupportBean(env, "E2", 20);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E2", 20});

                env.Milestone(3);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1", 1}, new object[] {"E2", 20}});
                SendSupportBean(env, "E1", 2);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E1", 2},
                    new object[] {"E1", 1});

                env.Milestone(4);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1", 2}, new object[] {"E2", 20}});
                SendSupportBean(env, "E2", 21);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E2", 21},
                    new object[] {"E2", 20});

                env.Milestone(5);
                env.Milestone(6);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1", 2}, new object[] {"E2", 21}});
                SendSupportBean(env, "E2", 22);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E2", 22},
                    new object[] {"E2", 21});
                SendSupportBean(env, "E1", 3);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertGetAndResetIRPair(),
                    fields,
                    new object[] {"E1", 3},
                    new object[] {"E1", 2});

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

                env.UndeployAll();
            }
Пример #16
0
 public void Run(RegressionEnvironment env)
 {
     SetupStatement(env, "full");
     // Send S0[0]
     SendEvent(EVENTS_S0[0], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), 100, "0", null, null);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {100, "0", null, null}});
     // Send S1[1]
     SendEvent(EVENTS_S1[1], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 201, "1");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {100, "0", null, null}, new object[] {null, null, 201, "1"}});
     // Send S1[2] and S0[2]
     SendEvent(EVENTS_S1[2], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {100, "0", null, null}, new object[] {null, null, 201, "1"}, new object[] {null, null, 202, "2"}});
     SendEvent(EVENTS_S0[2], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), 102, "2", 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S0[3], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), 103, "3", null, null);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[3], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), 103, "3", 203, "3");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S0[4], env);
     var oldEvent = env.Listener("s0").LastOldData[0];
     var newEvent = env.Listener("s0").LastNewData[0];
     CompareEvent(oldEvent, 100, "0", null, null);
     CompareEvent(newEvent, 104, "4", null, null);
     env.Listener("s0").Reset();
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[4], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), 104, "4", 204, "4");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[5], env);
     CompareEvent(env.Listener("s0").AssertOneGetNewAndReset(), null, null, 205, "5");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[5], env);
     oldEvent = env.Listener("s0").LastOldData[0];
     newEvent = env.Listener("s0").LastNewData[0];
     CompareEvent(oldEvent, null, null, 201, "1");
     CompareEvent(newEvent, null, null, 205, "5");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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"}
         });
     env.UndeployAll();
 }
Пример #17
0
            public void Run(RegressionEnvironment env)
            {
                string[] fields = {"TheString"};
                var path = new RegressionPath();

                var epl = "@Name('window') create window MyWindowIWT#keepall as SupportBean;\n" +
                          "insert into MyWindowIWT select * from SupportBean(IntPrimitive > 0);\n";
                env.CompileDeploy(epl, path).AddListener("window");

                env.Milestone(0);

                // populate some data
                Assert.AreEqual(0, GetCount(env, path, "window", "MyWindowIWT"));
                env.SendEventBean(new SupportBean("A1", 1));
                Assert.AreEqual(1, GetCount(env, path, "window", "MyWindowIWT"));
                env.SendEventBean(new SupportBean("B2", 1));

                env.Milestone(1);

                env.SendEventBean(new SupportBean("C3", 1));
                env.SendEventBean(new SupportBean("A4", 4));
                env.SendEventBean(new SupportBean("C5", 4));
                Assert.AreEqual(5, GetCount(env, path, "window", "MyWindowIWT"));
                env.Listener("window").Reset();

                env.Milestone(2);

                // create window with keep-all
                var stmtTextCreateTwo = "@Name('windowTwo') create window MyWindowTwo#keepall as MyWindowIWT insert";
                env.CompileDeploy(stmtTextCreateTwo, path).AddListener("windowTwo");
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("windowTwo"),
                    fields,
                    new[] {
                        new object[] {"A1"}, new object[] {"B2"}, new object[] {"C3"}, new object[] {"A4"},
                        new object[] {"C5"}
                    });
                var eventTypeTwo = env.GetEnumerator("windowTwo").Advance().EventType;
                Assert.IsFalse(env.Listener("windowTwo").IsInvoked);
                Assert.AreEqual(5, GetCount(env, path, "windowTwo", "MyWindowTwo"));
                Assert.AreEqual(
                    StatementType.CREATE_WINDOW,
                    env.Statement("windowTwo").GetProperty(StatementProperty.STATEMENTTYPE));
                Assert.AreEqual(
                    "MyWindowTwo", 
                    env.Statement("windowTwo").GetProperty(StatementProperty.CREATEOBJECTNAME));

                // create window with keep-all and filter
                var stmtTextCreateThree =
                    "@Name('windowThree') create window MyWindowThree#keepall as MyWindowIWT insert where TheString like 'A%'";
                env.CompileDeploy(stmtTextCreateThree, path).AddListener("windowThree");
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("windowThree"),
                    fields,
                    new[] {new object[] {"A1"}, new object[] {"A4"}});
                var eventTypeThree = env.GetEnumerator("windowThree").Advance().EventType;
                Assert.IsFalse(env.Listener("windowThree").IsInvoked);

                env.Milestone(3);

                Assert.AreEqual(2, GetCount(env, path, "windowThree", "MyWindowThree"));

                // create window with last-per-id
                var stmtTextCreateFour =
                    "@Name('windowFour') create window MyWindowFour#unique(IntPrimitive) as MyWindowIWT insert";
                env.CompileDeploy(stmtTextCreateFour, path).AddListener("windowFour");
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("windowFour"),
                    fields,
                    new[] {new object[] {"C3"}, new object[] {"C5"}});
                var eventTypeFour = env.GetEnumerator("windowFour").Advance().EventType;
                Assert.IsFalse(env.Listener("windowFour").IsInvoked);

                env.Milestone(4);

                Assert.AreEqual(2, GetCount(env, path, "windowFour", "MyWindowFour"));

                env.CompileDeploy("insert into MyWindowIWT select * from SupportBean(TheString like 'A%')", path);
                env.CompileDeploy("insert into MyWindowTwo select * from SupportBean(TheString like 'B%')", path);
                env.CompileDeploy("insert into MyWindowThree select * from SupportBean(TheString like 'C%')", path);
                env.CompileDeploy("insert into MyWindowFour select * from SupportBean(TheString like 'D%')", path);
                Assert.IsFalse(
                    env.Listener("window").IsInvoked ||
                    env.Listener("windowTwo").IsInvoked ||
                    env.Listener("windowThree").IsInvoked ||
                    env.Listener("windowFour").IsInvoked);

                env.SendEventBean(new SupportBean("B9", -9));
                var received = env.Listener("windowTwo").AssertOneGetNewAndReset();
                EPAssertionUtil.AssertProps(
                    received,
                    fields,
                    new object[] {"B9"});
                if (!env.IsHA) {
                    Assert.AreSame(eventTypeTwo, received.EventType);
                }

                Assert.IsFalse(
                    env.Listener("window").IsInvoked ||
                    env.Listener("windowThree").IsInvoked ||
                    env.Listener("windowFour").IsInvoked);
                Assert.AreEqual(6, GetCount(env, path, "windowTwo", "MyWindowTwo"));

                env.Milestone(5);

                env.SendEventBean(new SupportBean("A8", -8));
                received = env.Listener("window").AssertOneGetNewAndReset();
                EPAssertionUtil.AssertProps(
                    received,
                    fields,
                    new object[] {"A8"});
                Assert.AreSame(env.Statement("window").EventType, received.EventType);
                Assert.IsFalse(
                    env.Listener("windowTwo").IsInvoked ||
                    env.Listener("windowThree").IsInvoked ||
                    env.Listener("windowFour").IsInvoked);

                env.Milestone(6);

                env.SendEventBean(new SupportBean("C7", -7));
                received = env.Listener("windowThree").AssertOneGetNewAndReset();
                EPAssertionUtil.AssertProps(
                    received,
                    fields,
                    new object[] {"C7"});
                if (!env.IsHA) {
                    Assert.AreSame(eventTypeThree, received.EventType);
                }

                Assert.IsFalse(
                    env.Listener("windowTwo").IsInvoked ||
                    env.Listener("window").IsInvoked ||
                    env.Listener("windowFour").IsInvoked);

                env.SendEventBean(new SupportBean("D6", -6));
                received = env.Listener("windowFour").AssertOneGetNewAndReset();
                EPAssertionUtil.AssertProps(
                    received,
                    fields,
                    new object[] {"D6"});
                if (!env.IsHA) {
                    Assert.AreSame(eventTypeFour, received.EventType);
                }

                Assert.IsFalse(
                    env.Listener("windowTwo").IsInvoked ||
                    env.Listener("window").IsInvoked ||
                    env.Listener("windowThree").IsInvoked);

                env.UndeployAll();
            }
Пример #18
0
 public void Run(RegressionEnvironment env)
 {
     SetupStatement(env, "left");
     // Send S1 events, no events expected
     SendEvent(EVENTS_S1[0], env);
     SendEvent(EVENTS_S1[1], env);
     SendEvent(EVENTS_S1[3], env);
     Assert.IsNull(env.Listener("s0").LastNewData); // No events expected
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, null);
     // Send S0 event, expect event back from outer join
     SendEvent(EVENTS_S0[2], env);
     var theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 102, "2", null, null);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {102, "2", null, null}});
     // Send S1 event matching S0, expect event back
     SendEvent(EVENTS_S1[2], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 102, "2", 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {102, "2", 202, "2"}});
     // Send some more unmatched events
     SendEvent(EVENTS_S1[4], env);
     SendEvent(EVENTS_S1[5], env);
     SendEvent(EVENTS_S1[6], env);
     Assert.IsNull(env.Listener("s0").LastNewData); // No events expected
     EPAssertionUtil.AssertPropsPerRowAnyOrder(env.GetEnumerator("s0"), FIELDS, new[] {new object[] {102, "2", 202, "2"}});
     // Send event, expect a join result
     SendEvent(EVENTS_S0[5], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 105, "5", 205, "5");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S1[7], env);
     SendEvent(EVENTS_S1[8], env);
     theEvent = env.Listener("s0").AssertOneGetOldAndReset();
     CompareEvent(theEvent, 102, "2", 202, "2");
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {102, "2", null, null}, new object[] {105, "5", 205, "5"}});
     // S0[9] should generate an outer join event
     SendEvent(EVENTS_S0[9], env);
     theEvent = env.Listener("s0").AssertOneGetNewAndReset();
     CompareEvent(theEvent, 109, "9", null, null);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         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(EVENTS_S0[10], env);
     var oldEvent = env.Listener("s0").LastOldData[0];
     var newEvent = env.Listener("s0").LastNewData[0];
     CompareEvent(oldEvent, 102, "2", null, null); // S1[2] has left the window already
     CompareEvent(newEvent, 110, "10", null, null);
     EPAssertionUtil.AssertPropsPerRowAnyOrder(
         env.GetEnumerator("s0"),
         FIELDS,
         new[] {new object[] {110, "10", null, null}, new object[] {109, "9", null, null}, new object[] {105, "5", 205, "5"}});
     env.UndeployAll();
 }
Пример #19
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"c0"};

                var epl =
                    "@Name('s0') select irstream TheString as c0 from SupportBean#ext_timed_batch(LongPrimitive, 10 sec)";
                env.CompileDeployAddListenerMileZero(epl, "s0");

                EPAssertionUtil.AssertPropsPerRow(env.GetEnumerator("s0"), fields, new object[0][]);
                SendSupportBeanWLong(env, "E1", 1000); // reference point is 1000, every batch is 11000/21000/31000...
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(1);

                SendSupportBeanWLong(env, "E2", 5000);
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}});
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(2);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}});
                SendSupportBeanWLong(env, "E3", 11000);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").AssertInvokedAndReset(),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}},
                    null);

                env.Milestone(3);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E3"}});
                SendSupportBeanWLong(env, "E4", 0);
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(4);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E4"}});
                SendSupportBeanWLong(env, "E5", 21000);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").AssertInvokedAndReset(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E4"}},
                    new[] {new object[] {"E1"}, new object[] {"E2"}});

                env.Milestone(5);
                env.Milestone(6);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E5"}});
                SendSupportBeanWLong(env, "E6", 31000);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").AssertInvokedAndReset(),
                    fields,
                    new[] {new object[] {"E5"}},
                    new[] {new object[] {"E3"}, new object[] {"E4"}});
                SendSupportBeanWLong(env, "E7", 41000);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").AssertInvokedAndReset(),
                    fields,
                    new[] {new object[] {"E6"}},
                    new[] {new object[] {"E5"}});

                env.UndeployAll();
            }