示例#1
0
        private void TrySend(EPServiceProvider epService, int numThreads, int numRepeats)
        {
            epService.EPAdministrator.Configuration.AddEventType(typeof(SentenceEvent));
            EPStatementSPI spi =
                (EPStatementSPI)epService.EPAdministrator.CreateEPL("select * from SentenceEvent[words]");

            Assert.IsTrue(spi.StatementContext.IsStatelessSelect);

            var runnables = new StatelessRunnable[numThreads];

            for (int i = 0; i < runnables.Length; i++)
            {
                runnables[i] = new StatelessRunnable(epService, numRepeats);
            }

            var threads = new Thread[numThreads];

            for (int i = 0; i < runnables.Length; i++)
            {
                threads[i] = new Thread(runnables[i].Run);
            }

            long start = PerformanceObserver.MilliTime;

            foreach (Thread t in threads)
            {
                t.Start();
            }

            foreach (Thread t in threads)
            {
                t.Join();
            }

            long delta = DateTimeHelper.CurrentTimeMillis - start;

            Log.Info("Delta=" + delta + " for " + numThreads * numRepeats + " events");

            foreach (StatelessRunnable r in runnables)
            {
                Assert.IsNull(r.Exception);
            }
        }
        private static void TrySend(
            RegressionEnvironment env,
            int numThreads,
            int numRepeats)
        {
            env.CompileDeploy("@Name('s0') select * from SentenceEvent[Words]");
            AssertStatelessStmt(env, "s0", true);

            var runnables = new StatelessRunnable[numThreads];
            for (var i = 0; i < runnables.Length; i++) {
                runnables[i] = new StatelessRunnable(env.Runtime, numRepeats);
            }

            var threads = new Thread[numThreads];
            for (var i = 0; i < runnables.Length; i++) {
                threads[i] = new Thread(runnables[i].Run) {
                    Name = typeof(MultithreadStmtStateless).Name
                };
            }

            var start = PerformanceObserver.MilliTime;
            foreach (var t in threads) {
                t.Start();
            }

            foreach (var t in threads) {
                ThreadJoin(t);
            }

            var delta = PerformanceObserver.MilliTime - start;
            log.Info("Delta=" + delta + " for " + numThreads * numRepeats + " events");

            foreach (var r in runnables) {
                Assert.IsNull(r.Exception);
            }

            env.UndeployAll();
        }