public void Task_should_complete_when_early_heartbeat_is_requested() { var subject = new HeartbeatDelay(TimeSpan.FromHours(10), TimeSpan.FromMilliseconds(1)); subject.RequestHeartbeat(); subject.Task.Wait(TimeSpan.FromSeconds(1)).Should().BeTrue(); }
public void Task_should_complete_when_early_heartbeat_is_requested() { var subject = new HeartbeatDelay(TimeSpan.FromHours(10), TimeSpan.FromMilliseconds(1)); subject.RequestHeartbeat(); subject.Task.Wait(TimeSpan.FromSeconds(1)).Should().BeTrue(); }
public void RequestHeartbeat_should_respect_to_minHeartbeatInterval([Values(10, -1)] int heartbeatIntervalInMinutes) { var heartbeatInterval = heartbeatIntervalInMinutes == -1 ? Timeout.InfiniteTimeSpan : TimeSpan.FromMinutes(heartbeatIntervalInMinutes); var subject = new HeartbeatDelay(heartbeatInterval, TimeSpan.FromSeconds(2)); subject.RequestHeartbeat(); SpinWait.SpinUntil(() => subject.Task.Status != TaskStatus.WaitingForActivation, TimeSpan.FromMilliseconds(1500)).Should().BeFalse(); Thread.Sleep(TimeSpan.FromMilliseconds(700)); subject.Task.Status.Should().Be(TaskStatus.RanToCompletion); }
public void RequestHeartbeat_should_respect_to_minHeartbeatInterval([Values(10, -1)] int heartbeatIntervalInMinutes) { var heartbeatInterval = heartbeatIntervalInMinutes == -1 ? Timeout.InfiniteTimeSpan : TimeSpan.FromMinutes(heartbeatIntervalInMinutes); var minHeartbeatInterval = TimeSpan.FromSeconds(2); var stopwatch = Stopwatch.StartNew(); var subject = new HeartbeatDelay(heartbeatInterval, minHeartbeatInterval); subject.RequestHeartbeat(); var timeout = TimeSpan.FromMinutes(1); var result = Task.WaitAny(subject.Task, Task.Delay(timeout)); if (result != 0) { throw new Exception($"The test timeout {timeout} is exceeded."); } stopwatch.Stop(); stopwatch.Elapsed.Should().BeGreaterOrEqualTo(minHeartbeatInterval - TimeSpan.FromMilliseconds(15)); }