Пример #1
0
 private static void AssertSameFilterEntry(
     RegressionEnvironment env,
     string eventTypeName)
 {
     IDictionary<string, FilterItem> filters = SupportFilterServiceHelper.GetFilterSvcAllStmtForTypeSingleFilter(env.Runtime, eventTypeName);
     FilterItem s0 = filters.Get("s0");
     FilterItem s1 = filters.Get("s1");
     Assert.AreEqual(FilterOperator.REBOOL, s0.Op);
     Assert.IsNotNull(s0.Index);
     Assert.AreSame(s0.Index, s1.Index);
     Assert.AreSame(s0.OptionalValue, s1.OptionalValue);
 }
Пример #2
0
            public void Run(RegressionEnvironment env)
            {
                string epl = "@Name('var') create constant variable string MYVAR = '.*abc.*';\n" +
                             "@Name('s0') select * from SupportBean(TheString regexp MYVAR);\n" +
                             "" +
                             "@Name('ctx') create context MyContext start SupportBean_S0 as s0;\n" +
                             "@Name('s1') context MyContext select * from SupportBean(TheString regexp context.s0.P00);\n" +
                             "" +
                             "@Name('s2') select * from pattern[s0=SupportBean_S0 -> every SupportBean(TheString regexp s0.P00)];\n" +
                             "" +
                             "@Name('s3') select * from SupportBean(TheString regexp '.*' || 'abc' || '.*');\n";
                env.CompileDeploy(epl);
                EPDeployment deployment = env.Deployment.GetDeployment(env.DeploymentId("s0"));
                ISet<string> statementNames = new LinkedHashSet<string>();
                foreach (EPStatement stmt in deployment.Statements) {
                    if (stmt.Name.StartsWith("s")) {
                        stmt.AddListener(env.ListenerNew());
                        statementNames.Add(stmt.Name);
                    }
                }

                env.Milestone(0);

                env.SendEventBean(new SupportBean_S0(1, ".*abc.*"));

                SendSBAssert(env, "xabsx", statementNames, false);
                SendSBAssert(env, "xabcx", statementNames, true);

                if (HasFilterIndexPlanAdvanced(env)) {
                    IDictionary<string, FilterItem> filters = SupportFilterServiceHelper.GetFilterSvcAllStmtForTypeSingleFilter(env.Runtime, "SupportBean");
                    FilterItem s0 = filters.Get("s0");
                    foreach (string name in statementNames) {
                        FilterItem sn = filters.Get(name);
                        Assert.AreEqual(FilterOperator.REBOOL, sn.Op);
                        Assert.IsNotNull(s0.OptionalValue);
                        Assert.IsNotNull(s0.Index);
                        Assert.AreSame(s0.Index, sn.Index);
                        Assert.AreSame(s0.OptionalValue, sn.OptionalValue);
                    }
                }

                env.UndeployAll();
            }
Пример #3
0
            public void Run(RegressionEnvironment env)
            {
                SupportFilterPlanHook.Reset();
                string hook = "@Hook(HookType=HookType.INTERNAL_FILTERSPEC, Hook='" + typeof(SupportFilterPlanHook).FullName + "')";
                string epl = hook + "@Name('s0') select * from SupportBean(TheString regexp '.*a.*')";
                env.CompileDeploy(epl).AddListener("s0");
                if (HasFilterIndexPlanAdvanced(env)) {
                    FilterSpecParamForge forge = SupportFilterPlanHook.AssertPlanSingleTripletAndReset("SupportBean");
                    Assert.AreEqual(FilterOperator.REBOOL, forge.FilterOperator);
                    Assert.AreEqual(".TheString regexp ?", forge.Lookupable.Expression);
                    Assert.AreEqual(typeof(string), forge.Lookupable.ReturnType);
                    AssertFilterSvcSingle(env.Statement("s0"), ".TheString regexp ?", REBOOL);
                }

                epl = "@Name('s1') select * from SupportBean(TheString regexp '.*a.*')";
                env.CompileDeploy(epl).AddListener("s1");

                epl = "@Name('s2') select * from SupportBean(TheString regexp '.*b.*')";
                env.CompileDeploy(epl).AddListener("s2");

                env.Milestone(0);

                if (HasFilterIndexPlanAdvanced(env)) {
                    IDictionary<string, FilterItem> filters = SupportFilterServiceHelper.GetFilterSvcAllStmtForTypeSingleFilter(env.Runtime, "SupportBean");
                    FilterItem s0 = filters.Get("s0");
                    FilterItem s1 = filters.Get("s1");
                    FilterItem s2 = filters.Get("s2");
                    Assert.AreEqual(FilterOperator.REBOOL, s0.Op);
                    Assert.IsNotNull(s0.OptionalValue);
                    Assert.IsNotNull(s0.Index);
                    Assert.AreSame(s0.Index, s1.Index);
                    Assert.AreSame(s0.OptionalValue, s1.OptionalValue);
                    Assert.AreSame(s0.Index, s2.Index);
                    Assert.AreNotSame(s0.OptionalValue, s2.OptionalValue);
                }

                SendSBAssert(env, "garden", true, true, false);
                SendSBAssert(env, "house", false, false, false);
                SendSBAssert(env, "grub", false, false, true);

                env.UndeployAll();
            }