public void TerminateShouldForcibleyStopExecutingTasks() { NeverEndingPollingTask task = new NeverEndingPollingTask(); using (PollingTaskManager pollingTaskManager = new PollingTaskManager(new BasePollingTask[] { task }, TimeSpanOf25Milliseconds)) { pollingTaskManager.Start(); WaitForThrowOnTimeout(() => pollingTaskManager.PollCounter > 0, TimeSpanOf100Milliseconds); WaitForThrowOnTimeout(() => task.Counter > 0, TimeSpanOf100Milliseconds); Assert.That(pollingTaskManager.Stop(TimeSpanOf100Milliseconds), Is.False); Assert.That(task.IsStillAlive, Is.True); pollingTaskManager.Terminate(); Assert.That(task.IsStillAlive, Is.False); if (task.IsStillAlive) { task.TerminateTask(); } } }
public void StopShouldNotStopAndReturnWhenTimeoutIsExceeded() { NeverEndingPollingTask task = new NeverEndingPollingTask(); using (PollingTaskManager pollingTaskManager = new PollingTaskManager(new BasePollingTask[] { task }, TimeSpanOf25Milliseconds)) { pollingTaskManager.Start(); WaitForThrowOnTimeout(() => pollingTaskManager.PollCounter > 0, TimeSpanOf100Milliseconds); Assert.That(pollingTaskManager.Stop(TimeSpanOf100Milliseconds), Is.False); Assert.That(pollingTaskManager.Status, Is.EqualTo(PollingTaskManagerStatus.Started)); Assert.That(task.IsStillAlive, Is.True); task.TerminateTask(); } }