Exemple #1
0
            public void Run(RegressionEnvironment env)
            {
                RegressionPath path = new RegressionPath();
                string epl = namedWindow
                    ? "@public create window MyInfra#keepall as (Id string, ArrayOne string[], Value int);\n"
                    : "@public create table MyInfra(Id string primary key, ArrayOne string[], Value int);\n";
                epl += "insert into MyInfra select Id, StringOne as ArrayOne, Value from SupportEventWithManyArray;\n" +
                       "create index MyInfraIndex on MyInfra(ArrayOne, Value btree);\n";
                env.CompileDeploy(epl, path);

                SendManyArray(env, "E1", new string[] {"a", "b"}, 100);
                SendManyArray(env, "E2", new string[] {"a", "b"}, 200);
                SendManyArray(env, "E3", new string[] {"a"}, 300);

                env.Milestone(0);

                AssertFAF(env, path, "ArrayOne = {'a', 'b'} and Value < 150", "E1");
                AssertFAF(env, path, "ArrayOne = {'a', 'b'} and Value > 150", "E2");
                AssertFAF(env, path, "ArrayOne = {'a'} and Value > 200", "E3");
                AssertFAFNot(env, path, "ArrayOne = {'a'} and Value > 400");
                AssertFAFNot(env, path, "ArrayOne = {'a', 'c'} and Value < 150");

                env.UndeployAll();
            }
Exemple #2
0
            public void Run(RegressionEnvironment env)
            {
                var epl = "@Name('s0') select case TheString " +
                          " when null then true " +
                          " when '' then false end as p1" +
                          " from SupportBean#length(100)";

                env.CompileDeploy(epl).AddListener("s0");
                Assert.AreEqual(typeof(bool?), env.Statement("s0").EventType.GetPropertyType("p1"));

                SendSupportBeanEvent(env, "x");
                Assert.AreEqual(null, env.Listener("s0").AssertOneGetNewAndReset().Get("p1"));

                SendSupportBeanEvent(env, "null");
                Assert.AreEqual(null, env.Listener("s0").AssertOneGetNewAndReset().Get("p1"));

                SendSupportBeanEvent(env, null);
                Assert.AreEqual(true, env.Listener("s0").AssertOneGetNewAndReset().Get("p1"));

                SendSupportBeanEvent(env, "");
                Assert.AreEqual(false, env.Listener("s0").AssertOneGetNewAndReset().Get("p1"));

                env.UndeployAll();
            }
Exemple #3
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                var epl = "create window MyWindow#keepall as (key string, anint int);\n" +
                          "insert into MyWindow(key, anint) select Id, Value from SupportIdAndValueEvent;\n" +
                          "@Name('s0') select exists (select sum(anint) from MyWindow group by key having sum(anint) < 15) as c0," +
                          "not exists (select sum(anint) from MyWindow group by key having sum(anint) < 15) as c1 from SupportValueEvent";
                var fields = new[] {"c0", "c1"};
                env.CompileDeploy(epl, path).AddListener("s0");

                SendVEAndAssert(
                    env,
                    fields,
                    new object[] {false, true});

                env.SendEventBean(new SupportIdAndValueEvent("E1", 19));
                SendVEAndAssert(
                    env,
                    fields,
                    new object[] {false, true});

                env.SendEventBean(new SupportIdAndValueEvent("E2", 12));
                SendVEAndAssert(
                    env,
                    fields,
                    new object[] {true, false});

                env.CompileExecuteFAF("delete from MyWindow", path);

                SendVEAndAssert(
                    env,
                    fields,
                    new object[] {false, true});

                env.UndeployAll();
            }
Exemple #4
0
            public void Run(RegressionEnvironment env)
            {
                var epl = "@Name('context') create context NineToFive as start (0, 9, *, *, *) end (0, 17, *, *, *)";
                Assert.AreEqual(0, SupportContextMgmtHelper.GetContextCount(env));
                Assert.AreEqual(0, SupportScheduleHelper.ScheduleCountOverall(env));

                // create and destroy
                env.CompileDeploy(epl);
                Assert.AreEqual(1, SupportContextMgmtHelper.GetContextCount(env));
                Assert.AreEqual(0, SupportScheduleHelper.ScheduleCountOverall(env));

                env.UndeployModuleContaining("context");
                Assert.AreEqual(0, SupportContextMgmtHelper.GetContextCount(env));

                // create context, create statement, destroy statement, destroy context
                var path = new RegressionPath();
                env.CompileDeploy(epl, path);
                Assert.AreEqual(1, SupportContextMgmtHelper.GetContextCount(env));

                env.CompileDeploy("@Name('s0') context NineToFive select * from SupportBean", path);
                Assert.AreEqual(1, SupportScheduleHelper.ScheduleCountOverall(env));

                env.UndeployModuleContaining("s0");
                Assert.AreEqual(0, SupportScheduleHelper.ScheduleCountOverall(env));

                env.UndeployModuleContaining("context");
                Assert.AreEqual(0, SupportContextMgmtHelper.GetContextCount(env));

                // create same context
                path.Clear();
                env.CompileDeploy(epl, path);
                env.CompileDeploy("@Name('C') context NineToFive select * from SupportBean", path);
                env.CompileDeploy("@Name('D') context NineToFive select * from SupportBean", path);

                Assert.AreEqual(1, SupportScheduleHelper.ScheduleCountOverall(env));

                env.UndeployAll();
                Assert.AreEqual(0, SupportContextMgmtHelper.GetContextCount(env));
                Assert.AreEqual(0, SupportScheduleHelper.ScheduleCountOverall(env));

                env.UndeployAll();
            }
Exemple #5
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                // widen to long
                var stmtTextCreate = namedWindow
                    ? "create window MyInfraW#keepall as (f1 long, f2 string)"
                    : "create table MyInfraW as (f1 long primary key, f2 string primary key)";
                env.CompileDeploy(stmtTextCreate, path);
                env.CompileDeploy(
                    "insert into MyInfraW(f1, f2) select LongPrimitive, TheString from SupportBean",
                    path);
                env.CompileDeploy("create index MyInfraWIndex1 on MyInfraW(f1)", path);
                var fields = new [] { "f1","f2" };

                SendEventLong(env, "E1", 10L);

                var result = env.CompileExecuteFAF("select * from MyInfraW where f1=10", path);
                EPAssertionUtil.AssertPropsPerRow(
                    result.Array,
                    fields,
                    new[] {new object[] {10L, "E1"}});

                // coerce to short
                stmtTextCreate = namedWindow
                    ? "create window MyInfraWTwo#keepall as (f1 short, f2 string)"
                    : "create table MyInfraWTwo as (f1 short primary key, f2 string primary key)";
                env.CompileDeploy(stmtTextCreate, path);
                env.CompileDeploy(
                    "insert into MyInfraWTwo(f1, f2) select ShortPrimitive, TheString from SupportBean",
                    path);
                env.CompileDeploy("create index MyInfraWTwoIndex1 on MyInfraWTwo(f1)", path);

                SendEventShort(env, "E1", 2);

                result = env.CompileExecuteFAF("select * from MyInfraWTwo where f1=2", path);
                EPAssertionUtil.AssertPropsPerRow(
                    result.Array,
                    fields,
                    new[] {new object[] {(short) 2, "E1"}});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                SendTimer(0, env);
                var listener = env.ListenerNew();
                env.CompileDeploy("@Name('s1') @Priority(1) select 1 as prio from pattern [every timer:interval(10)]");
                env.CompileDeploy("@Name('s3') @Priority(3) select 3 as prio from pattern [every timer:interval(10)]");
                env.CompileDeploy("@Name('s2') @Priority(2) select 2 as prio from pattern [every timer:interval(10)]");
                env.CompileDeploy("@Name('s4') @Priority(4) select 4 as prio from pattern [every timer:interval(10)]");
                env.Statement("s1").AddListener(listener);
                env.Statement("s2").AddListener(listener);
                env.Statement("s3").AddListener(listener);
                env.Statement("s4").AddListener(listener);

                SendTimer(10000, env);
                AssertPrio(listener, null, new[] {4, 3, 2, 1});

                env.UndeployModuleContaining("s2");
                env.CompileDeploy("@Name('s0') select 0 as prio from pattern [every timer:interval(10)]");
                env.Statement("s0").AddListener(listener);

                SendTimer(20000, env);
                AssertPrio(listener, null, new[] {4, 3, 1, 0});

                env.CompileDeploy("@Name('s2') @Priority(2) select 2 as prio from pattern [every timer:interval(10)]");
                env.Statement("s2").AddListener(listener);

                SendTimer(30000, env);
                AssertPrio(listener, null, new[] {4, 3, 2, 1, 0});

                env.CompileDeploy("@Name('s5') @Priority(3) select 3 as prio from pattern [every timer:interval(10)]");
                env.Statement("s5").AddListener(listener);

                SendTimer(40000, env);
                AssertPrio(listener, null, new[] {4, 3, 3, 2, 1, 0});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var pathA = new RegressionPath();

                env.CompileDeploy("module A;\n @name('createA') @protected create window MyWindow#keepall as SupportBean", pathA);

                var pathB = new RegressionPath();

                env.CompileDeploy("module B;\n @name('createB') @protected create window MyWindow#keepall as SupportBean", pathB);

                env.CompileDeploy("@Name('B1') select * from MyWindow", pathB);
                env.CompileDeploy("@Name('A1') select * from MyWindow", pathA);
                env.CompileDeploy("@Name('A2') select * from MyWindow", pathA);
                env.CompileDeploy("@Name('B2') select * from MyWindow", pathB);

                AssertProvided(
                    env,
                    env.DeploymentId("createA"),
                    MakeProvided(EPObjectType.NAMEDWINDOW, "MyWindow", env.DeploymentId("A1"), env.DeploymentId("A2")));
                AssertProvided(
                    env,
                    env.DeploymentId("createB"),
                    MakeProvided(EPObjectType.NAMEDWINDOW, "MyWindow", env.DeploymentId("B1"), env.DeploymentId("B2")));
                foreach (var name in new string[] { "A1", "A2" })
                {
                    AssertConsumed(
                        env,
                        env.DeploymentId(name),
                        new EPDeploymentDependencyConsumed.Item(env.DeploymentId("createA"), EPObjectType.NAMEDWINDOW, "MyWindow"));
                }

                foreach (var name in new string[] { "B1", "B2" })
                {
                    AssertConsumed(
                        env,
                        env.DeploymentId(name),
                        new EPDeploymentDependencyConsumed.Item(env.DeploymentId("createB"), EPObjectType.NAMEDWINDOW, "MyWindow"));
                }

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();

                // test dispatch between named windows
                env.CompileDeploy("@Name('A') create window A#unique(Id) as (Id int)", path);
                env.CompileDeploy("@Name('B') create window B#unique(Id) as (Id int)", path);
                env.CompileDeploy(
                    "@Name('C') on A merge B when not matched then insert select 1 as Id when matched then insert select 1 as Id",
                    path);

                env.CompileDeploy("@Name('D') select * from B", path).AddListener("D");
                env.CompileDeploy("@Name('E') insert into A select IntPrimitive as Id from SupportBean", path);

                env.SendEventBean(new SupportBean("E1", 1));
                Assert.IsTrue(env.Listener("D").IsInvoked);
                env.UndeployAll();

                // test insert-stream only, no remove stream
                var fields = new[] {"c0", "c1"};
                var epl = "create window W1#lastevent as SupportBean;\n" +
                          "insert into W1 select * from SupportBean;\n" +
                          "create window W2#lastevent as SupportBean;\n" +
                          "on W1 as a merge W2 as b when not matched then insert into OutStream select a.TheString as c0, istream() as c1;\n" +
                          "@Name('s0') select * from OutStream;\n";
                env.CompileDeploy(epl).AddListener("s0");

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

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

                env.UndeployAll();
            }
Exemple #9
0
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();

                var text = "create variable long var1CSS";
                env.EplToModelCompileDeploy(text, path);

                text = "create variable string var2CSS = \"abc\"";
                env.EplToModelCompileDeploy(text, path);

                var stmtTextSelect = "@Name('s0') select var1CSS, var2CSS from SupportBean";
                env.CompileDeploy(stmtTextSelect, path).AddListener("s0");

                string[] fieldsVar = {"var1CSS", "var2CSS"};
                SendSupportBean(env, "E1", 10);
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsVar,
                    new object[] {null, "abc"});

                // ESPER-545
                var createText = "@Name('create') create variable int FOO = 0";
                env.CompileDeploy(createText, path);
                env.CompileDeploy("on pattern [every SupportBean] set FOO = FOO + 1", path);
                env.SendEventBean(new SupportBean());
                Assert.AreEqual(1, env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "FOO"));

                env.UndeployAll();

                env.CompileDeploy(createText);
                Assert.AreEqual(0, env.Runtime.VariableService.GetVariableValue(env.DeploymentId("create"), "FOO"));

                // cleanup of variable when statement exception occurs
                env.CompileDeploy("create variable int x = 123");
                TryInvalidCompile(env, "select missingScript(x) from SupportBean", "skip");
                env.CompileDeploy("create variable int x = 123");

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy(
                    "@Name('context') create context SegmentedByString partition by TheString from SupportBean",
                    path);

                var fieldsOne = new [] { "IntPrimitive","count(*)" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString select IntPrimitive, count(*) from SupportBean group by IntPrimitive",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 1L});

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {200, 1L});

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 2L});

                env.SendEventBean(new SupportBean("G1", 11));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {11, 1L});

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {200, 2L});

                env.SendEventBean(new SupportBean("G2", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 1L});

                env.UndeployModuleContaining("s0");

                // add "string" : a context property
                var fieldsTwo = new [] { "TheString","IntPrimitive","count(*)" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString select TheString, IntPrimitive, count(*) from SupportBean group by IntPrimitive",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G1", 10, 1L});

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G2", 200, 1L});

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G1", 10, 2L});

                env.SendEventBean(new SupportBean("G1", 11));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G1", 11, 1L});

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G2", 200, 2L});

                env.SendEventBean(new SupportBean("G2", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G2", 10, 1L});

                env.UndeployAll();
            }
Exemple #11
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"TheString", "mysum"};
                var epl = "create window MyWindow.win:keepall() as select * from SupportBean;\n" +
                          "insert into MyWindow select * from SupportBean;\n" +
                          "on SupportBean_A a delete from MyWindow w where w.TheString = a.Id;\n" +
                          "on SupportBean_B delete from MyWindow;\n" +
                          "@Name('s0') select TheString, sum(IntPrimitive) as mysum from MyWindow group by TheString order by TheString";
                env.CompileDeploy(epl).AddListener("s0");

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

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

                env.Milestone(0);

                env.SendEventBean(new SupportBean("A", 101));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"A", 201});

                env.Milestone(1);

                env.SendEventBean(new SupportBean("B", 21));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"B", 41});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 201}, new object[] {"B", 41}});

                env.Milestone(2);

                env.SendEventBean(new SupportBean_A("A"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"A", null});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"B", 41}});

                env.Milestone(3);

                env.SendEventBean(new SupportBean("A", 102));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"A", 102});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 102}, new object[] {"B", 41}});

                env.Milestone(4);

                env.SendEventBean(new SupportBean_A("B"));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"B", null});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 102}});

                env.Milestone(5);

                env.SendEventBean(new SupportBean("B", 22));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"B", 22});
                EPAssertionUtil.AssertPropsPerRow(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"A", 102}, new object[] {"B", 22}});

                env.UndeployAll();
            }
Exemple #12
0
            public void Run(RegressionEnvironment env)
            {
                env.CompileDeploy("select current_timestamp.toDateTimeEx().AddDays(1) from SupportBean");

                var startTime = "2002-05-30T09:00:00.000";
                env.AdvanceTime(DateTimeParsingFunctions.ParseDefaultMSec(startTime));

                string[] fields = {
                    "val1a", "val1b", "val1c", "val1d", "val1e",
                    "val2a", "val2b", "val2c", "val2d", "val2e",
                    "val3a", "val3b", "val3c", "val3d", "val3e",
                    "val4a", "val4b", "val4c", "val4d", "val4e",
                };

                var eplFragment =
                    "@Name('s0') select " +

                    "current_timestamp.toDateTime() as val1a," +
                    "LongDate.toDateTime() as val1b," +
                    "DateTimeEx.toDateTime() as val1c," +
                    "DateTimeOffset.toDateTime() as val1d," +
                    "DateTimeEx.toDateTime() as val1e," +

                    "current_timestamp.toDateTimeOffset() as val2a," +
                    "LongDate.toDateTimeOffset() as val2b," +
                    "DateTime.toDateTimeOffset() as val2c," +
                    "DateTimeOffset.toDateTimeOffset() as val2d," +
                    "DateTimeEx.toDateTimeOffset() as val2e," +

                    "current_timestamp.toDateTimeEx() as val3a," +
                    "LongDate.toDateTimeEx() as val3b," +
                    "DateTime.toDateTimeEx() as val3c," +
                    "DateTimeOffset.toDateTimeEx() as val3d," +
                    "DateTimeEx.toDateTimeEx() as val3e," +

                    "current_timestamp.toMillisec() as val4a," +
                    "LongDate.toMillisec() as val4b," +
                    "DateTime.toMillisec() as val4c," +
                    "DateTimeOffset.toMillisec() as val4d," +
                    "DateTimeEx.toMillisec() as val4e" +

                    " from SupportDateTime";

                env.CompileDeploy(eplFragment).AddListener("s0");
                LambdaAssertionUtil.AssertTypes(
                    env.Statement("s0").EventType,
                    fields,
                    new[] {
                        typeof(DateTime?),
                        typeof(DateTime?),
                        typeof(DateTime?),
                        typeof(DateTime?),
                        typeof(DateTime?),

                        typeof(DateTimeOffset?),
                        typeof(DateTimeOffset?),
                        typeof(DateTimeOffset?),
                        typeof(DateTimeOffset?),
                        typeof(DateTimeOffset?),

                        typeof(DateTimeEx),
                        typeof(DateTimeEx),
                        typeof(DateTimeEx),
                        typeof(DateTimeEx),
                        typeof(DateTimeEx),

                        typeof(long?),
                        typeof(long?),
                        typeof(long?),
                        typeof(long?),
                        typeof(long?)
                    });

                env.SendEventBean(SupportDateTime.Make(startTime));

                var expected = EPAssertionUtil.ConcatenateArray(
                    SupportDateTime.GetArrayCoerced(startTime, "date".Repeat(5)),
                    SupportDateTime.GetArrayCoerced(startTime, "dto".Repeat(5)),
                    SupportDateTime.GetArrayCoerced(startTime, "dtx".Repeat(5)),
                    SupportDateTime.GetArrayCoerced(startTime, "long".Repeat(5)));

                EPAssertionUtil.AssertProps(env.Listener("s0").AssertOneGetNewAndReset(), fields, expected);

                env.SendEventBean(SupportDateTime.Make(null));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new[] {
                        SupportDateTime.GetValueCoerced(startTime, "date"), null, null, null, null,
                        SupportDateTime.GetValueCoerced(startTime, "dto"), null, null, null, null,
                        SupportDateTime.GetValueCoerced(startTime, "dtx"), null, null, null, null,
                        SupportDateTime.GetValueCoerced(startTime, "long"), null, null, null, null
                    });

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                string[] fields = {"TheString"};
                var epl = "@Name('s0') select irstream TheString from SupportBean#expr(sum(IntPrimitive) < 10)";
                env.CompileDeploy(epl).AddListener("s0");

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

                env.Milestone(0);

                env.SendEventBean(new SupportBean("E2", 9));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E2"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E2"}},
                    new[] {new object[] {"E1"}});

                env.SendEventBean(new SupportBean("E3", 11));
                EPAssertionUtil.AssertPropsPerRow(env.Statement("s0").GetEnumerator(), fields, null);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E3"}},
                    new[] {new object[] {"E2"}, new object[] {"E3"}});

                env.Milestone(1);

                env.SendEventBean(new SupportBean("E4", 12));
                EPAssertionUtil.AssertPropsPerRow(env.Statement("s0").GetEnumerator(), fields, null);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E4"}},
                    new[] {new object[] {"E4"}});

                env.SendEventBean(new SupportBean("E5", 1));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E5"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E5"}},
                    null);

                env.Milestone(2);

                env.SendEventBean(new SupportBean("E6", 2));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E5"}, new object[] {"E6"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E6"}},
                    null);

                env.SendEventBean(new SupportBean("E7", 3));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E5"}, new object[] {"E6"}, new object[] {"E7"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E7"}},
                    null);

                env.Milestone(3);

                env.SendEventBean(new SupportBean("E8", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E7"}, new object[] {"E8"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E8"}},
                    new[] {new object[] {"E5"}, new object[] {"E6"}});

                env.SendEventBean(new SupportBean("E9", 9));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E9"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetDataListsFlattened(),
                    fields,
                    new[] {new object[] {"E9"}},
                    new[] {new object[] {"E7"}, new object[] {"E8"}});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                env.AdvanceTime(0);

                string[] fields = {"TheString"};
                var epl =
                    "@Name('s0') select irstream * from SupportBean#expr(oldest_timestamp > newest_timestamp - 2000)";
                env.CompileDeploy(epl).AddListener("s0");

                env.AdvanceTime(1000);
                env.SendEventBean(new SupportBean("E1", 1));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E1"}});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E1"});

                env.AdvanceTime(1500);
                env.SendEventBean(new SupportBean("E2", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E2"});

                env.Milestone(0);

                env.SendEventBean(new SupportBean("E3", 3));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"E3"});

                env.AdvanceTime(2500);
                env.SendEventBean(new SupportBean("E4", 4));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E1"}, new object[] {"E2"}, new object[] {"E3"}, new object[] {"E4"}});

                env.AdvanceTime(3000);
                env.SendEventBean(new SupportBean("E5", 5));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}, new object[] {"E4"}, new object[] {"E5"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"E5"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastOldData,
                    fields,
                    new[] {new object[] {"E1"}});
                env.Listener("s0").Reset();

                env.AdvanceTime(3499);
                env.SendEventBean(new SupportBean("E6", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"E2"}, new object[] {"E3"}, new object[] {"E4"}, new object[] {"E5"},
                        new object[] {"E6"}
                    });

                env.Milestone(1);

                env.AdvanceTime(3500);
                env.SendEventBean(new SupportBean("E7", 7));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E4"}, new object[] {"E5"}, new object[] {"E6"}, new object[] {"E7"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"E7"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastOldData,
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}});
                env.Listener("s0").Reset();

                env.AdvanceTime(10000);
                env.SendEventBean(new SupportBean("E8", 8));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E8"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastNewData,
                    fields,
                    new[] {new object[] {"E8"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").LastOldData,
                    fields,
                    new[] {new object[] {"E4"}, new object[] {"E5"}, new object[] {"E6"}, new object[] {"E7"}});
                env.Listener("s0").Reset();

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var fields = new[] {"c0"};
                env.AdvanceTime(0);

                var epl =
                    "@Name('s0') select irstream TheString as c0 from SupportBean#expr(newest_timestamp - oldest_timestamp < 1000)";
                env.CompileDeploy(epl).AddListener("s0").Milestone(0);

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

                env.Milestone(1);

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

                env.Milestone(2);

                env.AdvanceTime(2000);
                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    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(3);

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}});
                env.AdvanceTime(2499);

                env.Milestone(4);

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

                EPAssertionUtil.AssertPropsPerRowAnyOrder(
                    env.GetEnumerator("s0"),
                    fields,
                    new[] {new object[] {"E2"}, new object[] {"E3"}, new object[] {"E4"}});
                env.AdvanceTime(2500);

                env.Milestone(5);

                env.Milestone(6);

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

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                var eplContext =
                    "@Name('CTX') create context SegmentedByString partition by TheString from SupportBean";
                env.CompileDeploy(eplContext, path);

                var fields = new [] { "TheString","IntPrimitive","col1" };
                var eplGrouped =
                    "@Name('S1') context SegmentedByString select TheString,IntPrimitive,sum(LongPrimitive) as col1 from SupportBean group by IntPrimitive";
                env.CompileDeploy(eplGrouped, path).AddListener("S1");

                var eplGroupedAccess =
                    "@Name('S2') context SegmentedByString select TheString,IntPrimitive,window(LongPrimitive) as col1 from SupportBean.win:keepall() sb group by IntPrimitive";
                env.CompileDeploy(eplGroupedAccess, path).AddListener("S2");

                var eplGroupedDistinct =
                    "@Name('S3') context SegmentedByString select TheString,IntPrimitive,sum(distinct LongPrimitive) as col1 from SupportBean.win:keepall() sb group by IntPrimitive";
                env.CompileDeploy(eplGroupedDistinct, path).AddListener("S3");

                env.SendEventBean(MakeEvent("G1", 1, 10L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 1, 10L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1", 1,
                        new long[] {10L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 1, 10L});

                env.Milestone(0);

                env.SendEventBean(MakeEvent("G2", 1, 25L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 1, 25L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G2", 1,
                        new long[] {25L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 1, 25L});

                env.Milestone(1);

                env.SendEventBean(MakeEvent("G1", 2, 2L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1", 2,
                        new long[] {2L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 2L});

                env.Milestone(2);

                env.SendEventBean(MakeEvent("G2", 2, 100L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 2, 100L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G2", 2,
                        new long[] {100L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 2, 100L});

                env.Milestone(3);

                env.SendEventBean(MakeEvent("G1", 1, 10L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 1, 20L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1", 1,
                        new long[] {10L, 10L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 1, 10L});

                env.Milestone(4);

                env.SendEventBean(MakeEvent("G1", 2, 3L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 5L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1", 2,
                        new long[] {2L, 3L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 5L});

                env.Milestone(5);

                env.SendEventBean(MakeEvent("G2", 2, 101L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 2, 201L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G2", 2,
                        new long[] {100L, 101L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 2, 201L});

                env.Milestone(6);

                env.SendEventBean(MakeEvent("G3", 1, -1L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 1, -1L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G3", 1,
                        new long[] {-1L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 1, -1L});

                env.Milestone(7);

                env.SendEventBean(MakeEvent("G3", 2, -2L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 2, -2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G3", 2,
                        new long[] {-2L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 2, -2L});

                env.Milestone(8);

                env.SendEventBean(MakeEvent("G3", 1, -3L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 1, -4L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G3", 1,
                        new long[] {-1L, -3L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 1, -4L});

                env.Milestone(9);

                env.SendEventBean(MakeEvent("G1", 2, 3L));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 8L});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1", 2,
                        new long[] {2L, 3L, 3L}
                    });
                EPAssertionUtil.AssertProps(
                    env.Listener("S3").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2, 5L});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                string[] fields = {"Symbol", "sumVol"};
                var stmtText = "@Name('s0') select Symbol, sum(Volume) as sumVol " +
                               "from SupportMarketDataBean#length(5) " +
                               "group by Symbol";
                env.CompileDeploy(stmtText).AddListener("s0");

                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                SendEvent(env, "SYM", 100);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 100L}});

                SendEvent(env, "SYM", 10);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 110L}});

                env.Milestone(0);

                SendEvent(env, "TAC", 1);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 110L}, new object[] {"TAC", 1L}});

                SendEvent(env, "SYM", 11);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 121L}, new object[] {"TAC", 1L}});

                env.Milestone(1);

                SendEvent(env, "TAC", 2);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 121L}, new object[] {"TAC", 3L}});

                SendEvent(env, "OCC", 55);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 21L}, new object[] {"TAC", 3L}, new object[] {"OCC", 55L}});

                env.Milestone(2);

                SendEvent(env, "OCC", 4);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"TAC", 3L}, new object[] {"SYM", 11L}, new object[] {"OCC", 59L}});

                SendEvent(env, "OCC", 3);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", 11L}, new object[] {"TAC", 2L}, new object[] {"OCC", 62L}});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy(
                    "@Name('context') create context SegmentedByString partition by TheString from SupportBean",
                    path);

                var fieldsOne = new [] { "IntPrimitive","col1" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString " +
                    "select IntPrimitive, count(*) as col1 " +
                    "from SupportBean unidirectional, SupportBean_S0#keepall " +
                    "group by IntPrimitive order by IntPrimitive asc",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 10));
                env.SendEventBean(new SupportBean_S0(1));
                env.SendEventBean(new SupportBean_S0(2));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 2L});

                env.Milestone(0);

                env.SendEventBean(new SupportBean_S0(3));

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 3L});

                env.Milestone(1);

                env.SendEventBean(new SupportBean("G2", 20));
                env.SendEventBean(new SupportBean_S0(4));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean("G2", 20));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {20, 1L});

                env.SendEventBean(new SupportBean_S0(5));

                env.Milestone(2);

                env.SendEventBean(new SupportBean("G2", 20));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {20, 2L});

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {10, 5L});

                env.UndeployModuleContaining("s0");
                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                env.CompileDeploy(
                    "@Name('context') create context SegmentedByString partition by TheString from SupportBean",
                    path);

                var fieldsOne = new [] { "IntPrimitive","count(*)" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString select IntPrimitive, count(*) from SupportBean#length_batch(2) group by IntPrimitive order by IntPrimitive asc",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 10));
                env.SendEventBean(new SupportBean("G2", 200));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(0);

                env.SendEventBean(new SupportBean("G1", 11));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsOne,
                    new object[] {10, 1L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsOne,
                    new object[] {11, 1L});

                env.Milestone(1);

                env.SendEventBean(new SupportBean("G1", 10));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(2);

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {200, 2L});

                env.Milestone(3);

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsOne,
                    new object[] {10, 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsOne,
                    new object[] {11, 0L});

                env.Milestone(4);

                env.SendEventBean(new SupportBean("G2", 10));
                env.SendEventBean(new SupportBean("G2", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsOne,
                    new object[] {10, 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsOne,
                    new object[] {200, 0L});

                env.UndeployModuleContaining("s0");

                // add "string" : add context property
                var fieldsTwo = new [] { "TheString","IntPrimitive","count(*)" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString select TheString, IntPrimitive, count(*) from SupportBean#length_batch(2) group by IntPrimitive order by TheString, IntPrimitive asc",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 10));
                env.SendEventBean(new SupportBean("G2", 200));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(5);

                env.SendEventBean(new SupportBean("G1", 11));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsTwo,
                    new object[] {"G1", 10, 1L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsTwo,
                    new object[] {"G1", 11, 1L});

                env.SendEventBean(new SupportBean("G1", 10));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.Milestone(6);

                env.SendEventBean(new SupportBean("G2", 200));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {"G2", 200, 2L});

                env.SendEventBean(new SupportBean("G1", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsTwo,
                    new object[] {"G1", 10, 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsTwo,
                    new object[] {"G1", 11, 0L});

                env.Milestone(7);

                env.SendEventBean(new SupportBean("G2", 10));
                env.SendEventBean(new SupportBean("G2", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").LastNewData[0],
                    fieldsTwo,
                    new object[] {"G2", 10, 2L});
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").GetAndResetLastNewData()[1],
                    fieldsTwo,
                    new object[] {"G2", 200, 0L});

                env.UndeployAll();
            }
        private static void TryAssertionDocExample(
            RegressionEnvironment env,
            EventRepresentationChoice eventRepresentationEnum)
        {
            var path = new RegressionPath();
            var baseModuleEPL = eventRepresentationEnum.GetAnnotationTextWJsonProvided<MyLocalJsonProvidedOrderEvent>() +
                                " create schema OrderEvent as (OrderId string, ProductId string, Price double, Quantity int, DeletedFlag boolean)";
            env.CompileDeployWBusPublicType(baseModuleEPL, path);

            var appModuleOne = eventRepresentationEnum.GetAnnotationTextWJsonProvided<MyLocalJsonProvidedProductTotalRec>() +
                               " create schema ProductTotalRec as (ProductId string, TotalPrice double);" +
                               "" +
                               "@Name('nwProd') create window ProductWindow#unique(ProductId) as ProductTotalRec;" +
                               "" +
                               "on OrderEvent oe\n" +
                               "merge ProductWindow pw\n" +
                               "where pw.ProductId = oe.ProductId\n" +
                               "when matched\n" +
                               "then update set TotalPrice = TotalPrice + oe.Price\n" +
                               "when not matched\n" +
                               "then insert select ProductId, Price as TotalPrice;";
            env.CompileDeploy(appModuleOne, path);

            var appModuleTwo =
                " @Name('nwOrd') create window OrderWindow#keepall as OrderEvent;" +
                "" +
                "on OrderEvent oe\n" +
                "  merge OrderWindow pw\n" +
                "  where pw.OrderId = oe.OrderId\n" +
                "  when not matched \n" +
                "    then insert select *\n" +
                "  when matched and oe.DeletedFlag=true\n" +
                "    then delete\n" +
                "  when matched\n" +
                "    then update set pw.Quantity = oe.Quantity, pw.Price = oe.Price";

            env.CompileDeploy(appModuleTwo, path);

            SendOrderEvent(env, eventRepresentationEnum, "O1", "P1", 10, 100, false);
            SendOrderEvent(env, eventRepresentationEnum, "O1", "P1", 11, 200, false);
            SendOrderEvent(env, eventRepresentationEnum, "O2", "P2", 3, 300, false);
            EPAssertionUtil.AssertPropsPerRowAnyOrder(
                env.Statement("nwProd").GetEnumerator(),
                new[] {"ProductId", "TotalPrice"},
                new[] {new object[] {"P1", 21d}, new object[] {"P2", 3d}});
            EPAssertionUtil.AssertPropsPerRowAnyOrder(
                env.Statement("nwOrd").GetEnumerator(),
                new[] {"OrderId", "Quantity"},
                new[] {new object[] {"O1", 200}, new object[] {"O2", 300}});

            var module = "create schema StreetCarCountSchema (streetId string, carcount int);" +
                         "    create schema StreetChangeEvent (streetId string, action string);" +
                         "    create window StreetCarCountWindow#unique(streetId) as StreetCarCountSchema;" +
                         "    on StreetChangeEvent ce merge StreetCarCountWindow w where ce.streetId = w.streetId\n" +
                         "    when not matched and ce.action = 'ENTER' then insert select streetId, 1 as carcount\n" +
                         "    when matched and ce.action = 'ENTER' then update set StreetCarCountWindow.carcount = carcount + 1\n" +
                         "    when matched and ce.action = 'LEAVE' then update set StreetCarCountWindow.carcount = carcount - 1;" +
                         "    select * from StreetCarCountWindow;";
            env.CompileDeploy(module, path);

            env.UndeployAll();
        }
        public void Run(RegressionEnvironment env)
        {
            var path = new RegressionPath();
            env.CompileDeploy("@Name('create') create window AWindow#keepall as SupportTimeStartEndA", path);
            env.CompileDeploy("insert into AWindow select * from SupportTimeStartEndA", path);

            var eventTypeNW = env.Statement("create").EventType;
            Assert.AreEqual("LongdateStart", eventTypeNW.StartTimestampPropertyName);
            Assert.AreEqual("LongdateEnd", eventTypeNW.EndTimestampPropertyName);

            // preload
            for (var i = 0; i < 10000; i++) {
                env.SendEventBean(SupportTimeStartEndA.Make("A" + i, "2002-05-30T09:00:00.000", 100));
            }

            env.SendEventBean(SupportTimeStartEndA.Make("AEarlier", "2002-05-30T08:00:00.000", 100));
            env.SendEventBean(SupportTimeStartEndA.Make("ALater", "2002-05-30T10:00:00.000", 100));

            // assert BEFORE
            var eplBefore =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.before(b)";
            RunAssertion(env, path, eplBefore, "2002-05-30T09:00:00.000", 0, "AEarlier");

            var eplBeforeMSec =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.LongdateEnd.before(b.LongdateStart)";
            RunAssertion(env, path, eplBeforeMSec, "2002-05-30T09:00:00.000", 0, "AEarlier");

            var eplBeforeMSecMix1 =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.LongdateEnd.before(b)";
            RunAssertion(env, path, eplBeforeMSecMix1, "2002-05-30T09:00:00.000", 0, "AEarlier");

            var eplBeforeMSecMix2 =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.before(b.LongdateStart)";
            RunAssertion(env, path, eplBeforeMSecMix2, "2002-05-30T09:00:00.000", 0, "AEarlier");

            // assert AFTER
            var eplAfter =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.after(b)";
            RunAssertion(env, path, eplAfter, "2002-05-30T09:00:00.000", 0, "ALater");

            // assert COINCIDES
            var eplCoincides =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.coincides(b)";
            RunAssertion(env, path, eplCoincides, "2002-05-30T08:00:00.000", 100, "AEarlier");

            // assert DURING
            var eplDuring =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.during(b)";
            RunAssertion(env, path, eplDuring, "2002-05-30T07:59:59.000", 2000, "AEarlier");

            // assert FINISHES
            var eplFinishes =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.finishes(b)";
            RunAssertion(env, path, eplFinishes, "2002-05-30T07:59:59.950", 150, "AEarlier");

            // assert FINISHED-BY
            var eplFinishedBy =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.finishedBy(b)";
            RunAssertion(env, path, eplFinishedBy, "2002-05-30T08:00:00.050", 50, "AEarlier");

            // assert INCLUDES
            var eplIncludes =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.includes(b)";
            RunAssertion(env, path, eplIncludes, "2002-05-30T08:00:00.050", 20, "AEarlier");

            // assert MEETS
            var eplMeets =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.meets(b)";
            RunAssertion(env, path, eplMeets, "2002-05-30T08:00:00.100", 0, "AEarlier");

            // assert METBY
            var eplMetBy =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.metBy(b)";
            RunAssertion(env, path, eplMetBy, "2002-05-30T07:59:59.950", 50, "AEarlier");

            // assert OVERLAPS
            var eplOverlaps =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.overlaps(b)";
            RunAssertion(env, path, eplOverlaps, "2002-05-30T08:00:00.050", 100, "AEarlier");

            // assert OVERLAPPEDY
            var eplOverlappedBy =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.overlappedBy(b)";
            RunAssertion(env, path, eplOverlappedBy, "2002-05-30T09:59:59.950", 100, "ALater");
            RunAssertion(env, path, eplOverlappedBy, "2002-05-30T07:59:59.950", 100, "AEarlier");

            // assert STARTS
            var eplStarts =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.starts(b)";
            RunAssertion(env, path, eplStarts, "2002-05-30T08:00:00.000", 150, "AEarlier");

            // assert STARTEDBY
            var eplEnds =
                "select a.Key as c0 from AWindow as a, SupportTimeStartEndB b unidirectional where a.startedBy(b)";
            RunAssertion(env, path, eplEnds, "2002-05-30T08:00:00.000", 50, "AEarlier");

            env.UndeployAll();
        }
Exemple #22
0
            public void Run(RegressionEnvironment env)
            {
                var fields = new [] { "a_string" };
                var text = "@Name('s0') select * from SupportRecogBean#keepall " +
                           "match_recognize (" +
                           "  measures A.TheString as a_string" +
                           "  all matches pattern (A) " +
                           "  define A as (A.Value > PREV(A.Value))" +
                           ") " +
                           "order by a_string";
                env.CompileDeploy(text).AddListener("s0");

                env.SendEventBean(new SupportRecogBean("E1", 5));
                env.SendEventBean(new SupportRecogBean("E2", 3));
                Assert.IsFalse(env.Listener("s0").IsInvoked);
                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                env.Milestone(0);

                env.SendEventBean(new SupportRecogBean("E3", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E3"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}});

                env.Milestone(1);

                env.SendEventBean(new SupportRecogBean("E4", 4));
                Assert.IsFalse(env.Listener("s0").IsInvoked);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}});

                env.Milestone(2);

                env.SendEventBean(new SupportRecogBean("E5", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E5"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E5"}});

                env.Milestone(3);

                env.SendEventBean(new SupportRecogBean("E6", 10));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E6"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E5"}, new object[] {"E6"}});

                env.Milestone(4);

                env.SendEventBean(new SupportRecogBean("E7", 9));

                env.Milestone(5);

                env.SendEventBean(new SupportRecogBean("E8", 4));
                Assert.IsFalse(env.Listener("s0").IsInvoked);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E5"}, new object[] {"E6"}});

                env.UndeployModuleContaining("s0");

                text = "@Name('s0') select * from SupportRecogBean#keepall " +
                       "match_recognize (" +
                       "  measures A.TheString as a_string" +
                       "  all matches pattern (A) " +
                       "  define A as (PREV(A.Value, 2) = 5)" +
                       ") " +
                       "order by a_string";

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

                env.SendEventBean(new SupportRecogBean("E1", 5));
                env.SendEventBean(new SupportRecogBean("E2", 4));
                Assert.IsFalse(env.Listener("s0").IsInvoked);
                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                env.Milestone(6);

                env.SendEventBean(new SupportRecogBean("E3", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E3"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}});

                env.Milestone(7);

                env.SendEventBean(new SupportRecogBean("E4", 3));
                env.SendEventBean(new SupportRecogBean("E5", 3));
                env.SendEventBean(new SupportRecogBean("E5", 5));
                env.SendEventBean(new SupportRecogBean("E6", 5));
                Assert.IsFalse(env.Listener("s0").IsInvoked);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}});

                env.Milestone(8);

                env.SendEventBean(new SupportRecogBean("E7", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E7"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E7"}});

                env.Milestone(9);

                env.SendEventBean(new SupportRecogBean("E8", 6));
                EPAssertionUtil.AssertPropsPerRow(
                    env.Listener("s0").GetAndResetLastNewData(),
                    fields,
                    new[] {new object[] {"E8"}});
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"E3"}, new object[] {"E7"}, new object[] {"E8"}});

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                var milestone = new AtomicLong();
                var fieldsOne = new [] { "col1" };
                var path = new RegressionPath();

                var eplCtx =
                    "@Name('context') create context SegmentedByString partition by TheString from SupportBean";
                env.CompileDeploy(eplCtx, path);

                var epl = "@Name('s0') context SegmentedByString select sum(IntPrimitive) as col1 from SupportBean;\n";
                env.CompileDeploy(epl, path).AddListener("s0");

                env.MilestoneInc(milestone);

                env.SendEventBean(new SupportBean("G1", 3));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {3});

                env.MilestoneInc(milestone);

                env.SendEventBean(new SupportBean("G2", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {2});

                env.MilestoneInc(milestone);

                env.SendEventBean(new SupportBean("G1", 4));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {7});

                env.MilestoneInc(milestone);

                env.SendEventBean(new SupportBean("G2", 1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {3});

                env.MilestoneInc(milestone);

                env.SendEventBean(new SupportBean("G3", -1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsOne,
                    new object[] {-1});

                env.MilestoneInc(milestone);

                env.UndeployModuleContaining("s0");

                // test mixed with access
                var fieldsTwo = new [] { "col1","col2" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString " +
                    "select sum(IntPrimitive) as col1, toArray(window(*).selectFrom(v->v.IntPrimitive)) as col2 " +
                    "from SupportBean#keepall",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 8));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {
                        8,
                        new object[] {8}
                    });

                env.SendEventBean(new SupportBean("G2", 5));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {
                        5,
                        new object[] {5}
                    });

                env.SendEventBean(new SupportBean("G1", 1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {
                        9,
                        new object[] {8, 1}
                    });

                env.SendEventBean(new SupportBean("G2", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsTwo,
                    new object[] {
                        7,
                        new object[] {5, 2}
                    });

                env.UndeployModuleContaining("s0");

                // test only access
                var fieldsThree = new [] { "col1" };
                env.CompileDeploy(
                    "@Name('s0') context SegmentedByString " +
                    "select toArray(window(*).selectFrom(v->v.IntPrimitive)) as col1 " +
                    "from SupportBean#keepall",
                    path);
                env.AddListener("s0");

                env.SendEventBean(new SupportBean("G1", 8));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsThree,
                    new object[] {new object[] {8}});

                env.SendEventBean(new SupportBean("G2", 5));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsThree,
                    new object[] {new object[] {5}});

                env.SendEventBean(new SupportBean("G1", 1));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsThree,
                    new object[] {new object[] {8, 1}});

                env.SendEventBean(new SupportBean("G2", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fieldsThree,
                    new object[] {new object[] {5, 2}});

                env.UndeployModuleContaining("s0");

                // test subscriber
                var stmtFour = env.CompileDeploy(
                        "@Name('s0') context SegmentedByString " +
                        "select count(*) as col1 " +
                        "from SupportBean",
                        path)
                    .Statement("s0");
                var subs = new SupportSubscriber();
                stmtFour.Subscriber = subs;

                env.SendEventBean(new SupportBean("G1", 1));
                Assert.AreEqual(1L, subs.AssertOneGetNewAndReset());

                env.SendEventBean(new SupportBean("G1", 1));
                Assert.AreEqual(2L, subs.AssertOneGetNewAndReset());

                env.SendEventBean(new SupportBean("G2", 2));
                Assert.AreEqual(1L, subs.AssertOneGetNewAndReset());

                env.UndeployAll();
            }
 public void Run(RegressionEnvironment env)
 {
     env.CompileDeploy("create window MyWindow#time(30) as (col1 int, col2 string)");
     env.CompileDeploy("create window MyWindow#time(30) as (col1 short, col2 long)");
     env.UndeployAll();
 }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                var eplContext =
                    "@Name('CTX') create context SegmentedByString partition by TheString from SupportBean";
                env.CompileDeploy(eplContext, path);

                var fields = new [] { "TheString","col1" };
                var eplUngrouped =
                    "@Name('S1') context SegmentedByString select TheString,sum(IntPrimitive) as col1 from SupportBean";
                env.CompileDeploy(eplUngrouped, path).AddListener("S1");

                var eplGroupedAccess =
                    "@Name('S2') context SegmentedByString select TheString,window(IntPrimitive) as col1 from SupportBean#keepall() sb";
                env.CompileDeploy(eplGroupedAccess, path).AddListener("S2");

                env.Milestone(0);

                env.SendEventBean(new SupportBean("G1", 2));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 2});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1",
                        new int[] {2}
                    });

                env.SendEventBean(new SupportBean("G1", 3));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 5});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1",
                        new int[] {2, 3}
                    });
                AssertPartitionInfo(env);

                env.Milestone(1);

                AssertPartitionInfo(env);
                env.SendEventBean(new SupportBean("G2", 10));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 10});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G2",
                        new int[] {10}
                    });

                env.Milestone(2);

                env.SendEventBean(new SupportBean("G2", 11));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G2", 21});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G2",
                        new int[] {10, 11}
                    });

                env.Milestone(3);

                env.SendEventBean(new SupportBean("G1", 4));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 9});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G1",
                        new int[] {2, 3, 4}
                    });

                env.Milestone(4);

                env.SendEventBean(new SupportBean("G3", 100));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 100});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G3",
                        new int[] {100}
                    });

                env.Milestone(5);

                env.SendEventBean(new SupportBean("G3", 101));
                EPAssertionUtil.AssertProps(
                    env.Listener("S1").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 201});
                EPAssertionUtil.AssertProps(
                    env.Listener("S2").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {
                        "G3",
                        new int[] {100, 101}
                    });

                env.UndeployModuleContaining("S1");
                env.UndeployModuleContaining("S2");
                env.UndeployModuleContaining("CTX");
            }
            public void Run(RegressionEnvironment env)
            {
                var path = new RegressionPath();
                var eplCreate = namedWindow
                    ? "create window MyInfra#unique(Key) as SupportMaxAmountEvent"
                    : "create table MyInfra(Key string primary key, MaxAmount double)";
                env.CompileDeploy(eplCreate, path);
                env.CompileDeploy("insert into MyInfra select * from SupportMaxAmountEvent", path);

                var stmtText = "@Name('s0') select TheString as c0, sum(IntPrimitive) as c1 " +
                               "from SupportBean#groupwin(TheString)#length(2) as sb " +
                               "group by TheString " +
                               "having sum(IntPrimitive) > (select MaxAmount from MyInfra as mw where sb.TheString = mw.Key)";
                env.CompileDeploy(stmtText, path).AddListener("s0");

                var fields = new[] {"c0", "c1"};

                // set some amounts
                env.SendEventBean(new SupportMaxAmountEvent("G1", 10));
                env.SendEventBean(new SupportMaxAmountEvent("G2", 20));
                env.SendEventBean(new SupportMaxAmountEvent("G3", 30));

                // send some events
                env.SendEventBean(new SupportBean("G1", 5));
                env.SendEventBean(new SupportBean("G2", 19));
                env.SendEventBean(new SupportBean("G3", 28));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

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

                env.SendEventBean(new SupportBean("G2", 18));
                env.SendEventBean(new SupportBean("G1", 4));
                env.SendEventBean(new SupportBean("G3", 2));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean("G3", 29));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 31});

                env.SendEventBean(new SupportBean("G3", 4));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G3", 33});

                env.SendEventBean(new SupportBean("G1", 6));
                env.SendEventBean(new SupportBean("G2", 2));
                env.SendEventBean(new SupportBean("G3", 26));
                Assert.IsFalse(env.Listener("s0").IsInvoked);

                env.SendEventBean(new SupportBean("G1", 99));
                EPAssertionUtil.AssertProps(
                    env.Listener("s0").AssertOneGetNewAndReset(),
                    fields,
                    new object[] {"G1", 105});

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

                env.UndeployAll();
            }
            public void Run(RegressionEnvironment env)
            {
                string[] fields = {"Symbol", "vol"};
                var stmtText = "@Name('s0') select Symbol, Volume * 10 as vol from SupportMarketDataBean#length(5)" +
                               " where Volume < 0";
                env.CompileDeploy(stmtText).AddListener("s0");

                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                SendEvent(env, "SYM", 100);
                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());
                EPAssertionUtil.AssertPropsPerRow(env.Statement("s0").GetEnumerator(), fields, null);

                SendEvent(env, "SYM", -1);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -10L}});

                SendEvent(env, "SYM", -6);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -10L}, new object[] {"SYM", -60L}});

                env.Milestone(0);

                SendEvent(env, "SYM", 1);
                SendEvent(env, "SYM", 16);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -10L}, new object[] {"SYM", -60L}});

                SendEvent(env, "SYM", -9);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -10L}, new object[] {"SYM", -60L}, new object[] {"SYM", -90L}});

                env.Milestone(1);

                SendEvent(env, "SYM", 2);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -60L}, new object[] {"SYM", -90L}});

                SendEvent(env, "SYM", 3);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -90L}});

                env.Milestone(2);

                SendEvent(env, "SYM", 4);
                SendEvent(env, "SYM", 5);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -90L}});

                env.Milestone(3);

                SendEvent(env, "SYM", 6);
                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                env.UndeployAll();
            }
Exemple #28
0
        public void Run(RegressionEnvironment env)
        {
            var joinStatement = "@Name('s0') select Id, P00, TheString from " +
                                "SupportBean#length(100) as S1, " +
                                " method:SupportStaticMethodInvocations.FetchObjectLog(TheString, IntPrimitive)";
            env.CompileDeploy(joinStatement).AddListener("s0");

            // set sleep off
            SupportStaticMethodInvocations.GetInvocationSizeReset();

            // The LRU cache caches per same keys
            string[] fields = {"Id", "P00", "TheString"};
            SendBeanEvent(env, "E1", 1);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {1, "|E1|", "E1"});

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

            SendBeanEvent(env, "E3", 3);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {3, "|E3|", "E3"});
            Assert.AreEqual(3, SupportStaticMethodInvocations.GetInvocationSizeReset());

            // should be cached
            SendBeanEvent(env, "E3", 3);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {3, "|E3|", "E3"});
            Assert.AreEqual(0, SupportStaticMethodInvocations.GetInvocationSizeReset());

            // should not be cached
            SendBeanEvent(env, "E4", 4);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {4, "|E4|", "E4"});
            Assert.AreEqual(1, SupportStaticMethodInvocations.GetInvocationSizeReset());

            // should be cached
            SendBeanEvent(env, "E2", 2);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {2, "|E2|", "E2"});
            Assert.AreEqual(0, SupportStaticMethodInvocations.GetInvocationSizeReset());

            // should not be cached
            SendBeanEvent(env, "E1", 1);
            EPAssertionUtil.AssertProps(
                env.Listener("s0").AssertOneGetNewAndReset(),
                fields,
                new object[] {1, "|E1|", "E1"});
            Assert.AreEqual(1, SupportStaticMethodInvocations.GetInvocationSizeReset());

            env.UndeployAll();
        }
            public void Run(RegressionEnvironment env)
            {
                string[] fields = {"Symbol", "Price", "sumVol"};
                var stmtText = "@Name('s0') select Symbol, Price, sum(Volume) as sumVol " +
                               "from SupportMarketDataBean#length(5) " +
                               "group by Symbol having sum(Volume) > 20";

                env.CompileDeploy(stmtText).AddListener("s0");
                Assert.IsFalse(env.Statement("s0").GetEnumerator().MoveNext());

                SendEvent(env, "SYM", -1, 100);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -1d, 100L}});

                SendEvent(env, "TAC", -2, 12);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {new object[] {"SYM", -1d, 100L}});

                env.Milestone(0);

                SendEvent(env, "TAC", -3, 13);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"SYM", -1d, 100L}, new object[] {"TAC", -2d, 25L}, new object[] {"TAC", -3d, 25L}
                    });

                SendEvent(env, "SYM", -4, 1);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"SYM", -1d, 101L}, new object[] {"TAC", -2d, 25L}, new object[] {"TAC", -3d, 25L},
                        new object[] {"SYM", -4d, 101L}
                    });

                env.Milestone(1);

                SendEvent(env, "OCC", -5, 99);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"SYM", -1d, 101L}, new object[] {"TAC", -2d, 25L}, new object[] {"TAC", -3d, 25L},
                        new object[] {"SYM", -4d, 101L}, new object[] {"OCC", -5d, 99L}
                    });

                env.Milestone(2);

                SendEvent(env, "TAC", -6, 2);
                EPAssertionUtil.AssertPropsPerRow(
                    env.Statement("s0").GetEnumerator(),
                    fields,
                    new[] {
                        new object[] {"TAC", -2d, 27L}, new object[] {"TAC", -3d, 27L}, new object[] {"OCC", -5d, 99L},
                        new object[] {"TAC", -6d, 27L}
                    });

                env.UndeployAll();
            }
        public void Run(RegressionEnvironment env)
        {
            var path = new RegressionPath();

            // Bean
            var beanTests = new Pair <object, object>[] {
                new Pair <object, object>(new SupportMarkerImplA("e1"), Exists("e1")),
                new Pair <object, object>(new SupportMarkerImplB(1), Exists(1)),
                new Pair <object, object>(new SupportMarkerImplC(), NotExists())
            };

            RunAssertion(env, nameof(SupportMarkerInterface), FBEAN, null, beanTests, typeof(object), path);

            // Map
            var mapTests = new Pair <object, object>[] {
                new Pair <object, object>(Collections.SingletonMap("somekey", "10"), NotExists()),
                new Pair <object, object>(Collections.SingletonMap("Id", "abc"), Exists("abc")),
                new Pair <object, object>(Collections.SingletonMap("Id", 10), Exists(10)),
            };

            RunAssertion(env, MAP_TYPENAME, FMAP, null, mapTests, typeof(object), path);

            // Object-Array
            var oaTests = new Pair <object, object>[] {
                new Pair <object, object>(new object[] { 1, null }, Exists(null)),
                new Pair <object, object>(new object[] { 2, "abc" }, Exists("abc")),
                new Pair <object, object>(new object[] { 3, 10 }, Exists(10)),
            };

            RunAssertion(env, OA_TYPENAME, FOA, null, oaTests, typeof(object), path);

            // XML
            var xmlTests = new Pair <object, object>[] {
                new Pair <object, object>("", NotExists()),
                new Pair <object, object>("<Id>10</Id>", Exists("10")),
                new Pair <object, object>("<Id>abc</Id>", Exists("abc")),
            };

            RunAssertion(env, XML_TYPENAME, FXML, xmlToValue, xmlTests, typeof(XmlNode), path);

            // Avro
            var avroSchema = AvroSchemaUtil.ResolveAvroSchema(env.Runtime.EventTypeService.GetEventTypePreconfigured(AVRO_TYPENAME)).AsRecordSchema();
            var datumEmpty = new GenericRecord(SchemaBuilder.Record(AVRO_TYPENAME));
            var datumOne   = new GenericRecord(avroSchema);

            datumOne.Put("Id", 101);
            var datumTwo = new GenericRecord(avroSchema);

            datumTwo.Put("Id", null);
            var avroTests = new Pair <object, object>[] {
                new Pair <object, object>(datumEmpty, NotExists()),
                new Pair <object, object>(datumOne, Exists(101)),
                new Pair <object, object>(datumTwo, Exists(null))
            };

            RunAssertion(env, AVRO_TYPENAME, FAVRO, null, avroTests, typeof(object), path);

            // Json
            env.CompileDeploy("@JsonSchema(Dynamic=true) @public @buseventtype create json schema " + JSON_TYPENAME + "()", path);
            var jsonTests = new Pair <object, object>[] {
                new Pair <object, object>("{}", NotExists()),
                new Pair <object, object>("{\"Id\": 10}", Exists(10)),
                new Pair <object, object>("{\"Id\": \"abc\"}", Exists("abc"))
            };

            RunAssertion(env, JSON_TYPENAME, FJSON, null, jsonTests, typeof(object), path);
        }