private void TryPattern(String pattern, int numThreads, int numEvents) { var sendLock = new Object(); var threadPool = Executors.NewFixedThreadPool(numThreads); var future = new Future <bool> [numThreads]; var callables = new SendEventWaitCallable[numThreads]; for (int i = 0; i < numThreads; i++) { callables[i] = new SendEventWaitCallable(i, _engine, sendLock, EnumerationGenerator.Create(numEvents)); future[i] = threadPool.Submit(callables[i]); } var listener = new SupportMTUpdateListener[numEvents]; for (int i = 0; i < numEvents; i++) { EPStatement stmt = _engine.EPAdministrator.CreatePattern(pattern); listener[i] = new SupportMTUpdateListener(); stmt.Events += listener[i].Update; lock (sendLock) { Monitor.PulseAll(sendLock); } } foreach (SendEventWaitCallable callable in callables) { callable.SetShutdown(true); } lock (sendLock) { Monitor.PulseAll(sendLock); } threadPool.Shutdown(); threadPool.AwaitTermination(new TimeSpan(0, 0, 10)); for (int i = 0; i < numEvents; i++) { Assert.That(listener[i].AssertOneGetNewAndReset().Get("a"), Is.InstanceOf <SupportBean>()); } }
private void TryPattern(EPServiceProvider epService, string pattern, int numThreads, int numEvents) { var sendLock = new Object(); var threadPool = Executors.NewFixedThreadPool(numThreads); var future = new Future <bool> [numThreads]; var callables = new SendEventWaitCallable[numThreads]; for (int i = 0; i < numThreads; i++) { callables[i] = new SendEventWaitCallable(i, epService, sendLock, new GeneratorIterator(numEvents)); future[i] = threadPool.Submit(callables[i]); } var listener = new SupportMTUpdateListener[numEvents]; for (int i = 0; i < numEvents; i++) { EPStatement stmt = epService.EPAdministrator.CreatePattern(pattern); listener[i] = new SupportMTUpdateListener(); stmt.Events += listener[i].Update; lock (sendLock) { Monitor.PulseAll(sendLock); } } foreach (SendEventWaitCallable callable in callables) { callable.SetShutdown(true); } lock (sendLock) { Monitor.PulseAll(sendLock); } threadPool.Shutdown(); threadPool.AwaitTermination(10, TimeUnit.SECONDS); for (int i = 0; i < numEvents; i++) { Assert.IsTrue(listener[i].AssertOneGetNewAndReset().Get("a") is SupportBean); } }