private void RunAssertion(ConfigurationEngineDefaults.FilterServiceProfile profile)
        {
            Configuration configuration = new Configuration();

            configuration.EngineDefaults.ExecutionConfig.FilterServiceProfile = profile;
            string            engineURI = this.GetType().Name + "_" + profile;
            EPServiceProvider engine    = EPServiceProviderManager.GetProvider(engineURI, configuration);

            engine.EPAdministrator.Configuration.AddEventType(typeof(MyEvent));

            engine.EPAdministrator.CreateEPL("create context MyContext start @now end after 100 milliseconds");
            SupportUpdateListener[] listeners = new SupportUpdateListener[100];
            for (int i = 0; i < 100; i++)
            {
                listeners[i] = new SupportUpdateListener();
                EPStatement stmt = engine.EPAdministrator.CreateEPL("context MyContext select FieldOne, count(*) as cnt from MyEvent " +
                                                                    "group by FieldOne output last when terminated");
                stmt.Events += listeners[i].Update;
            }

            int eventCount = 100000; // keep this divisible by 1000

            for (int i = 0; i < eventCount; i++)
            {
                string group = (eventCount % 1000).ToString();
                engine.EPRuntime.SendEvent(new MyEvent(i.ToString(), group));
            }

            Thread.Sleep(2000);
            engine.Dispose();

            AssertReceived(eventCount, listeners);
        }
Example #2
0
 /// <summary> Creates an implementation of the FilterEvaluationService interface.</summary>
 /// <returns> implementation
 /// </returns>
 public static FilterServiceSPI NewService(ConfigurationEngineDefaults.FilterServiceProfile filterServiceProfile, bool allowIsolation)
 {
     if (filterServiceProfile == ConfigurationEngineDefaults.FilterServiceProfile.READMOSTLY)
     {
         return(new FilterServiceLockCoarse(allowIsolation));
     }
     else
     {
         return(new FilterServiceLockFine(allowIsolation));
     }
 }
 public static FilterServiceSPI NewService(
     IContainer container,
     ConfigurationEngineDefaults.FilterServiceProfile filterServiceProfile,
     bool allowIsolation)
 {
     return(NewService(
                container.LockManager(),
                container.RWLockManager(),
                filterServiceProfile,
                allowIsolation));
 }
        private void RunAssertionPatternFollowedBy(ConfigurationEngineDefaults.FilterServiceProfile profile)
        {
            Configuration config = SupportConfigFactory.GetConfiguration();

            config.AddEventType("S0", typeof(SupportBean_S0));
            String            engineURI = GetType().Name + "_" + profile;
            EPServiceProvider epService = EPServiceProviderManager.GetProvider(engineURI, config);

            epService.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 (int i = 0; i < 100; i++)
            {
                var listener = new SupportMTUpdateListener();
                var stmts    = new EPStatement[epls.Length];
                for (int j = 0; j < epls.Length; j++)
                {
                    stmts[j]         = epService.EPAdministrator.CreateEPL(epls[j]);
                    stmts[j].Events += listener.Update;
                }

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

                Parallel.ForEach(
                    threadArray,
                    threadValues => ExecuteSender(epService.EPRuntime, threadValues));

                EventBean[] events = listener.GetNewDataListFlattened();
                Assert.AreEqual(9, events.Length);

                for (int j = 0; j < epls.Length; j++)
                {
                    stmts[j].Dispose();
                }
            }

            epService.Dispose();
        }
 /// <summary> Creates an implementation of the FilterEvaluationService interface.</summary>
 /// <returns> implementation
 /// </returns>
 public static FilterServiceSPI NewService(
     ILockManager lockManager,
     IReaderWriterLockManager rwLockManager,
     ConfigurationEngineDefaults.FilterServiceProfile filterServiceProfile,
     bool allowIsolation)
 {
     if (filterServiceProfile == ConfigurationEngineDefaults.FilterServiceProfile.READMOSTLY)
     {
         return(new FilterServiceLockCoarse(lockManager, rwLockManager, allowIsolation));
     }
     else
     {
         return(new FilterServiceLockFine(lockManager, rwLockManager, allowIsolation));
     }
 }
Example #6
0
        private void RunAssertionPatternFollowedBy(ConfigurationEngineDefaults.FilterServiceProfile profile)
        {
            Configuration config = SupportConfigFactory.GetConfiguration();

            config.AddEventType("S0", typeof(SupportBean_S0));
            string            engineUri = this.GetType().Name + "_" + profile;
            EPServiceProvider epService = EPServiceProviderManager.GetProvider(
                SupportContainer.Instance, engineUri, config);

            epService.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 (int i = 0; i < 20; i++)
            {
                Log.Info("i=" + i);
                var listener = new SupportMTUpdateListener();
                var stmts    = new EPStatement[epls.Length];
                for (int j = 0; j < epls.Length; j++)
                {
                    stmts[j]         = epService.EPAdministrator.CreateEPL(epls[j]);
                    stmts[j].Events += listener.Update;
                }

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

                var threadOne = new Thread(new SenderRunnable(epService.EPRuntime, threadOneValues).Run);
                var threadTwo = new Thread(new SenderRunnable(epService.EPRuntime, threadTwoValues).Run);

                threadOne.Start();
                threadTwo.Start();
                threadOne.Join();
                threadTwo.Join();

                EventBean[] events = listener.GetNewDataListFlattened();

#if INTERNAL_DEBUG
                for (int j = 0; j < events.Length; j++)
                {
                    EventBean @out = events[j];
                    Log.Info(" sa=" + GetNull(@out.Get("sa.id")) +
                             " sb=" + GetNull(@out.Get("sb.id")) +
                             " sc=" + GetNull(@out.Get("sc.id")) +
                             " sd=" + GetNull(@out.Get("sd.id")));
                }
#endif
                Assert.AreEqual(9, events.Length);

                for (int j = 0; j < epls.Length; j++)
                {
                    stmts[j].Dispose();
                }
            }

            epService.Dispose();
        }