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); }
/// <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)); } }
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(); }