public void StartStopTest() { var scheduledRunner = new BatchRunner <Param, bool>(TimeSpan.FromMilliseconds(100), 10, 1024, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000), new BatchWorker()); scheduledRunner.Start(); Thread.Sleep(100); scheduledRunner.Stop(); }
public void EnqueueAndWaitTest() { var scheduledRunner = new BatchRunner <Param, bool>(TimeSpan.FromMilliseconds(100), 10, 1024, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000), new BatchWorker()); scheduledRunner.Start(); var result = scheduledRunner.EnqueueAndWaitItem(new Param()); scheduledRunner.Stop(); Assert.IsTrue(result); }
public void StoppingEnqueueWaitTest() { var scheduledRunner = new BatchRunner <Param, bool>(TimeSpan.FromMilliseconds(100), 10, 1024, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000), new BatchWorker()); scheduledRunner.Start(); var @event = new ManualResetEvent(false); var workItem = new WorkItem <Param, bool>(@event, new Param()); scheduledRunner.Stop(); scheduledRunner.EnqueueItem(workItem); @event.WaitOne(scheduledRunner.WaitTime); Assert.IsFalse(workItem.Result); }
public void EnqueueAndWaitManyItemsAbove64Test() { bool wasOk = false; var thread = new Thread(() => { var scheduledRunner = new BatchRunner <Param, bool>(TimeSpan.FromMilliseconds(100), 10, 1024, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000), new BatchWorkerFullOk()); scheduledRunner.Start(); var result = scheduledRunner.EnqueueAndWaitManyItems(Enumerable.Range(0, 1000).Select(p => new Param())); scheduledRunner.Stop(); wasOk = result.All(t => t.Result); }); thread.SetApartmentState(ApartmentState.MTA); thread.Start(); thread.Join(); Assert.IsTrue(wasOk); }
public void EnqueueWaitFailTooTest() { var scheduledRunner = new BatchRunner <Param, bool>(TimeSpan.FromMilliseconds(100), 10, 1024, TimeSpan.FromMilliseconds(1000), TimeSpan.FromMilliseconds(1000), new BatchWorker()); scheduledRunner.Start(); var event1 = new ManualResetEvent(false); var workItem1 = new WorkItem <Param, bool>(event1, new Param()); scheduledRunner.EnqueueItem(workItem1); var event2 = new ManualResetEvent(false); var workItem2 = new WorkItem <Param, bool>(event2, new Param()); scheduledRunner.EnqueueItem(workItem2); event1.WaitOne(scheduledRunner.WaitTime); event2.WaitOne(scheduledRunner.WaitTime); scheduledRunner.Stop(); Assert.IsTrue(workItem1.Result); Assert.IsFalse(workItem2.Result); }