private LinkedBlockingQueue<String> PopulatedDeque(int n) { LinkedBlockingQueue<String> q = new LinkedBlockingQueue<String>(n); Assert.IsTrue(q.IsEmpty()); for(int i = 0; i < n; i++) { Assert.IsTrue(q.Offer(i.ToString())); } Assert.IsFalse(q.IsEmpty()); Assert.AreEqual(0, q.RemainingCapacity()); Assert.AreEqual(n, q.Size()); return q; }
// Test dispatcher should timeout on draining events. /// <exception cref="System.Exception"/> public virtual void TestDispatchStopOnTimeout() { BlockingQueue <Org.Apache.Hadoop.Yarn.Event.Event> eventQueue = new LinkedBlockingQueue <Org.Apache.Hadoop.Yarn.Event.Event>(); eventQueue = Org.Mockito.Mockito.Spy(eventQueue); // simulate dispatcher is not drained. Org.Mockito.Mockito.When(eventQueue.IsEmpty()).ThenReturn(false); YarnConfiguration conf = new YarnConfiguration(); conf.SetInt(YarnConfiguration.DispatcherDrainEventsTimeout, 2000); DrainDispatcher disp = new DrainDispatcher(eventQueue); disp.Init(conf); disp.SetDrainEventsOnStop(); disp.Start(); disp.WaitForEventThreadToWait(); disp.Close(); }
public void TestEmptyFull() { LinkedBlockingQueue<String> q = new LinkedBlockingQueue<String>(2); Assert.IsTrue(q.IsEmpty()); Assert.AreEqual(2, q.RemainingCapacity(), "should have room for 2"); q.Add(one); Assert.IsFalse(q.IsEmpty()); q.Add(two); Assert.IsFalse(q.IsEmpty()); Assert.AreEqual(0, q.RemainingCapacity()); Assert.IsFalse(q.Offer(three)); }
public void Run(RegressionEnvironment env) { // configure var numThreads = 2; var numStatements = 100; var numEvents = 50000; // set up threading var queue = new LinkedBlockingQueue<Runnable>(); var threadPool = Executors.NewFixedThreadPool( numThreads, new SupportThreadFactory(typeof(MultithreadPatternTimer)).ThreadFactory); // create statements log.Info("Creating statements"); for (var i = 0; i < numStatements; i++) { var statementName = "s" + i; var stmtText = $"@Name('s{i}')select * from pattern" + $" [ every e1=SupportByteArrEventLongId(Id={i}) -> timer:interval(1 seconds)]"; var supportCountListener = new SupportCountListener(); _supportCountListeners[statementName] = supportCountListener; env.CompileDeploy( stmtText, options => options.SetStatementUserObject( _ => supportCountListener)); var statement = env.Statement(statementName); statement.AddListener(supportCountListener); } // submit events var startTime = DateTimeHelper.CurrentTimeMillis; log.Info("Submitting " + numEvents + " events to queue"); var random = new Random(); for (var i = 0; i < numEvents; i++) { var @event = new SupportByteArrEventLongId(random.Next(numStatements), 0); threadPool.Submit(() => env.SendEventBean(@event)); } log.Info("Waiting for completion"); while (!queue.IsEmpty()) { try { Thread.Sleep(5000); } catch (ThreadInterruptedException) { Assert.Fail(); } log.Info("Queue size is " + queue.Count); } var endTime = DateTimeHelper.CurrentTimeMillis; log.Info("Time to complete: " + (endTime - startTime) / 1000 + " sec"); // wait for completion log.Info("Waiting for remaining callbacks"); var startWaitTime = DateTimeHelper.CurrentTimeMillis; while (true) { try { Thread.Sleep(1000); } catch (ThreadInterruptedException) { Assert.Fail(); } var countTotal = GetCount(env, numStatements); if (countTotal >= numEvents) { break; } if (DateTimeHelper.CurrentTimeMillis - startWaitTime > 20000) { Assert.Fail(); } log.Info("Waiting for remaining callbacks: " + countTotal + " of " + numEvents); } // assert var total = GetCount(env, numStatements); Assert.AreEqual(numEvents, total); env.UndeployAll(); }