示例#1
0
        private void RunAssertion(
            FilterServiceProfile profile,
            Configuration configuration)
        {
            configuration.Runtime.Execution.FilterServiceProfile = profile;
            configuration.Common.AddEventType(typeof(MyEvent));

            var runtimeURI = GetType().Name + "_" + profile;
            var runtime = EPRuntimeProvider.GetRuntime(runtimeURI, configuration);

            var path = new RegressionPath();
            var eplContext = "create context MyContext start @now end after 100 milliseconds;\n";
            var compiledContext = SupportCompileDeployUtil.Compile(eplContext, configuration, path);
            SupportCompileDeployUtil.Deploy(compiledContext, runtime);
            path.Add(compiledContext);

            var epl = "context MyContext select FieldOne, count(*) as cnt from MyEvent " +
                      "group by FieldOne output last when terminated;\n";
            var compiledStmt = SupportCompileDeployUtil.Compile(epl, configuration, path);
            var listeners = new SupportUpdateListener[100];

            for (var i = 0; i < 100; i++) {
                listeners[i] = new SupportUpdateListener();
                var stmtName = "s" + i;
                SupportCompileDeployUtil.DeployAddListener(compiledStmt, stmtName, listeners[i], runtime);
            }

            var eventCount = 100000; // keep this divisible by 1000
            for (var i = 0; i < eventCount; i++) {
                var group = Convert.ToString(eventCount % 1000);
                runtime.EventService.SendEventBean(new MyEvent(Convert.ToString(i), group), "MyEvent");
            }

            SupportCompileDeployUtil.ThreadSleep(2000);

            AssertReceived(eventCount, listeners);

            try {
                runtime.DeploymentService.UndeployAll();
            }
            catch (EPUndeployException e) {
                throw new EPException(e);
            }

            runtime.Destroy();
        }
示例#2
0
 public ConfigurationRuntimeExecution WithFilterServiceProfile(FilterServiceProfile value)
 {
     FilterServiceProfile = value;
     return this;
 }
        private static void RunAssertionPatternFollowedBy(
            FilterServiceProfile profile,
            Configuration config)
        {
            config.Common.AddEventType("S0", typeof(SupportBean_S0));
            var runtimeURI = typeof(MultithreadStmtPatternFollowedBy).Name + "_" + profile;
            var runtime = EPRuntimeProvider.GetRuntime(runtimeURI, config);
            runtime.Initialize();

            string[] epls = {
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=0)->sb=S0(Id=1)) or (sc=S0(Id=1)->sd=S0(Id=0))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=1)->sb=S0(Id=2)) or (sc=S0(Id=2)->sd=S0(Id=1))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=2)->sb=S0(Id=3)) or (sc=S0(Id=3)->sd=S0(Id=2))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=3)->sb=S0(Id=4)) or (sc=S0(Id=4)->sd=S0(Id=3))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=4)->sb=S0(Id=5)) or (sc=S0(Id=5)->sd=S0(Id=4))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=5)->sb=S0(Id=6)) or (sc=S0(Id=6)->sd=S0(Id=5))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=6)->sb=S0(Id=7)) or (sc=S0(Id=7)->sd=S0(Id=6))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=7)->sb=S0(Id=8)) or (sc=S0(Id=8)->sd=S0(Id=7))]",
                "select sa.Id,sb.Id,sc.Id,sd.Id from pattern [(sa=S0(Id=8)->sb=S0(Id=9)) or (sc=S0(Id=9)->sd=S0(Id=8))]"
            };

            for (var i = 0; i < 20; i++) {
                log.Info("i=" + i);
                var listener = new SupportMTUpdateListener();
                var stmts = new EPStatement[epls.Length];
                for (var j = 0; j < epls.Length; j++) {
                    var deployed = CompileDeploy(epls[j], runtime, config);
                    stmts[j] = deployed.Statements[0];
                    stmts[j].AddListener(listener);
                }

                int[] threadOneValues = {0, 2, 4, 6, 8};
                int[] threadTwoValues = {1, 3, 5, 7, 9};

                var threadOne = new Thread(new SenderRunnable(runtime.EventService, threadOneValues).Run);
                threadOne.Name = typeof(MultithreadStmtPatternFollowedBy).Name + "-one";

                var threadTwo = new Thread(new SenderRunnable(runtime.EventService, threadTwoValues).Run);
                threadTwo.Name = typeof(MultithreadStmtPatternFollowedBy).Name + "-two";

                threadOne.Start();
                threadTwo.Start();
                ThreadJoin(threadOne);
                ThreadJoin(threadTwo);

                var events = listener.GetNewDataListFlattened();
                /* Comment in to print events delivered.
                for (int j = 0; j < events.length; j++) {
                    EventBean out = events[j];
                    /*
                    System.out.println(" sa=" + getNull(out.get("sa.Id")) +
                                       " sb=" + getNull(out.get("sb.Id")) +
                                       " sc=" + getNull(out.get("sc.Id")) +
                                       " sd=" + getNull(out.get("sd.Id")));
                }
                 */
                Assert.AreEqual(9, events.Length);

                for (var j = 0; j < epls.Length; j++) {
                    try {
                        runtime.DeploymentService.Undeploy(stmts[j].DeploymentId);
                    }
                    catch (EPUndeployException e) {
                        throw new EPException(e);
                    }
                }
            }

            runtime.Destroy();
        }