public void ShouldBeStoppedWhenCancelled() { using (var reset = new ManualResetEventSlim(false)) using (var cts = new CancellationTokenSource()) using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask() { ExecutionDelay = TimeSpan.FromMilliseconds(10), Reset = reset, Interval = TimeSpan.FromMilliseconds(10), }; scheduler.Configure(new List <IUnleashScheduledTask>() { task }, cts.Token); cts.CancelAfter(75); reset.Wait(TimeSpan.FromMilliseconds(200)); task.Counter.Should().BeInRange(4, 6); } }
public async Task Scheduler_WhenCancellationTokenIsCancelled_ShutsDownAsExpected() { using (var cts = new CancellationTokenSource()) using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask( 5, executionDelay: TimeSpan.Zero, interval: TimeSpan.FromMilliseconds(200), cancellationToken: cts.Token); cts.CancelAfter(500); scheduler.Configure(new[] { task }, cts.Token); try { await task.Completion; Assert.False(true); } catch (OperationCanceledException) { _testOutputHelper.WriteLine("Cancelled: " + task.Counter); Assert.InRange(task.Counter, 2, 3); } } Assert.True(true); }
public async Task Scheduler_WhenTaskExceptionOccurs_ShouldContinueToRun() { using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask(5, 1); scheduler.Configure(new[] { task }, CancellationToken.None); try { await task.Completion; } catch (OperationCanceledException) { Assert.False(true); } Assert.Equal(5, task.Counter); } }
public void ShouldContinueToRunEvenThoughExceptionsOccurs() { using (var reset = new ManualResetEventSlim(false)) using (var scheduler = new SystemTimerScheduledTaskManager()) { var task = new TestBackgroundTask() { ExecutionDelay = TimeSpan.FromMilliseconds(10), ExecuteDuringStartup = false, Reset = reset, Interval = TimeSpan.FromMilliseconds(20), ThrowsExceptions = true }; scheduler.Configure(new List <IUnleashScheduledTask>() { task }, CancellationToken.None); reset.Wait(); task.Counter.Should().Be(5); } }