private void RunAssertionEventsProcessed(RegressionEnvironment env)
        {
            var listenerMap = new SupportListenerTimerHRes();
            var listenerBean = new SupportListenerTimerHRes();
            var listenerXML = new SupportListenerTimerHRes();
            var listenerOA = new SupportListenerTimerHRes();
            var listenerJson = new SupportListenerTimerHRes();
            env.CompileDeploy("@Name('s0') select SupportStaticMethodLib.Sleep(100) from MyMap").Statement("s0").AddListener(listenerMap);
            env.CompileDeploy("@Name('s1') select SupportStaticMethodLib.Sleep(100) from SupportBean").Statement("s1").AddListener(listenerBean);
            env.CompileDeploy("@Name('s2') select SupportStaticMethodLib.Sleep(100) from XMLType").Statement("s2").AddListener(listenerXML);
            env.CompileDeploy("@Name('s3') select SupportStaticMethodLib.Sleep(100) from MyOA").Statement("s3").AddListener(listenerOA);
            env.CompileDeploy(
                    "@public @buseventtype create json schema JsonEvent();\n" +
                    "@Name('s4') select SupportStaticMethodLib.Sleep(100) from JsonEvent")
                .Statement("s4")
                .AddListener(listenerJson);

            var senderMap = env.EventService.GetEventSender("MyMap");
            var senderBean = env.EventService.GetEventSender("SupportBean");
            var senderXML = env.EventService.GetEventSender("XMLType");
            var senderOA = env.EventService.GetEventSender("MyOA");
            var senderJson = env.EventService.GetEventSender("JsonEvent");

            long start = PerformanceObserver.MicroTime;
            for (var i = 0; i < 2; i++) {
                env.SendEventMap(new Dictionary<string, object>(), "MyMap");
                senderMap.SendEvent(new Dictionary<string, object>());
                env.SendEventBean(new SupportBean());
                senderBean.SendEvent(new SupportBean());
                env.SendEventXMLDOM(SupportXML.GetDocument("<myevent/>"), "XMLType");
                senderXML.SendEvent(SupportXML.GetDocument("<myevent/>"));
                env.SendEventObjectArray(new object[0], "MyOA");
                senderOA.SendEvent(new object[0]);
                env.SendEventJson("{}", "JsonEvent");
                senderJson.SendEvent("{}");
            }

            long end = PerformanceObserver.MicroTime;
            var delta = (end - start) / 1000;
            Assert.IsTrue(delta < 500);

            Thread.Sleep(1000);

            foreach (var listener in Arrays.AsList(listenerMap, listenerBean, listenerXML, listenerOA, listenerJson)) {
                Assert.AreEqual(4, listener.NewEvents.Count);
            }

            var spi = (EPRuntimeSPI) env.Runtime;
            Assert.AreEqual(0, spi.ServicesContext.ThreadingService.InboundQueue.Count);
            Assert.IsNotNull(spi.ServicesContext.ThreadingService.InboundThreadPool);

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

            log.Debug("Creating statements");
            var countStatements = 100;
            var listener = new SupportListenerTimerHRes();
            var compiled = env.Compile(
                "select SupportStaticMethodLib.Sleep(10) from pattern[every MyMap -> timer:interval(1)]");
            for (var i = 0; i < countStatements; i++) {
                var stmtName = "s" + i;
                env.Deploy(compiled, new DeploymentOptions().WithStatementNameRuntime(ctx => stmtName));
                env.Statement(stmtName).AddListener(listener);
            }

            log.Info("Sending trigger event");
            env.SendEventMap(new Dictionary<string, object>(), "MyMap");

            var start = PerformanceObserver.NanoTime;
            SendTimer(1000, env);
            var end = PerformanceObserver.NanoTime;
            var delta = (end - start) / 1000000;
            Assert.That(delta, Is.LessThan(100), "Delta is " + delta);

            // wait for delivery
            while (true) {
                var countDelivered = listener.NewEvents.Count;
                if (countDelivered == countStatements) {
                    break;
                }

                log.Info("Delivered " + countDelivered + ", waiting for more");
                try {
                    Thread.Sleep(200);
                }
                catch (ThreadInterruptedException e) {
                    throw new EPException(e);
                }
            }

            Assert.AreEqual(100, listener.NewEvents.Count);
            // analyze result
            //List<Pair<Long, EventBean[]>> events = listener.getNewEvents();
            //OccuranceResult result = OccuranceAnalyzer.analyze(events, new long[] {100 * 1000 * 1000L, 10*1000 * 1000L});
            //log.info(result);
        }
Exemple #3
0
        public void Run(RegressionEnvironment env)
        {
            log.Debug("Creating statements");
            var countStatements = 100;
            var listener = new SupportListenerTimerHRes();
            var compiled = env.Compile("select SupportStaticMethodLib.Sleep(10) from SupportBean");
            for (var i = 0; i < countStatements; i++) {
                var stmtName = "s" + i;
                env.Deploy(compiled, new DeploymentOptions().WithStatementNameRuntime(ctx => stmtName));
                env.Statement(stmtName).AddListener(listener);
            }

            log.Info("Sending trigger event");
            var start = PerformanceObserver.NanoTime;
            env.SendEventBean(new SupportBean());
            var end = PerformanceObserver.NanoTime;
            var delta = (end - start) / 1000000;
            Assert.That(delta, Is.LessThan(100), "Delta is " + delta);

            try {
                Thread.Sleep(2000);
            }
            catch (ThreadInterruptedException e) {
                throw new EPException(e);
            }

            Assert.AreEqual(100, listener.NewEvents.Count);
            listener.NewEvents.Clear();

            // destroy all statements
            env.UndeployAll();

            env.CompileDeploy("@Name('s0') select SupportStaticMethodLib.Sleep(10) from SupportBean, SupportBean");
            env.Statement("s0").AddListener(listener);
            env.SendEventBean(new SupportBean());
            try {
                Thread.Sleep(100);
            }
            catch (ThreadInterruptedException e) {
                throw new EPException(e);
            }

            Assert.AreEqual(1, listener.NewEvents.Count);

            env.UndeployAll();
        }