diff --git a/test/Kestrel.Core.Tests/HeartbeatTests.cs b/test/Kestrel.Core.Tests/HeartbeatTests.cs index 5b961ce7bf74..bf80664c6d93 100644 --- a/test/Kestrel.Core.Tests/HeartbeatTests.cs +++ b/test/Kestrel.Core.Tests/HeartbeatTests.cs @@ -30,6 +30,7 @@ public void BlockedHeartbeatDoesntCauseOverlapsAndIsLoggedAsError() var kestrelTrace = new Mock(); var handlerMre = new ManualResetEventSlim(); var traceMre = new ManualResetEventSlim(); + var onHeartbeatTasks = new Task[2]; heartbeatHandler.Setup(h => h.OnHeartbeat(systemClock.UtcNow)).Callback(() => handlerMre.Wait()); debugger.Setup(d => d.IsAttached).Returns(false); @@ -37,12 +38,13 @@ public void BlockedHeartbeatDoesntCauseOverlapsAndIsLoggedAsError() using (var heartbeat = new Heartbeat(new[] { heartbeatHandler.Object }, systemClock, debugger.Object, kestrelTrace.Object)) { - Task.Run(() => heartbeat.OnHeartbeat()); - Task.Run(() => heartbeat.OnHeartbeat()); + onHeartbeatTasks[0] = Task.Run(() => heartbeat.OnHeartbeat()); + onHeartbeatTasks[1] = Task.Run(() => heartbeat.OnHeartbeat()); Assert.True(traceMre.Wait(TimeSpan.FromSeconds(10))); } handlerMre.Set(); + Task.WaitAll(onHeartbeatTasks); heartbeatHandler.Verify(h => h.OnHeartbeat(systemClock.UtcNow), Times.Once()); kestrelTrace.Verify(t => t.HeartbeatSlow(Heartbeat.Interval, systemClock.UtcNow), Times.Once()); @@ -57,6 +59,7 @@ public void BlockedHeartbeatIsNotLoggedAsErrorIfDebuggerAttached() var kestrelTrace = new Mock(); var handlerMre = new ManualResetEventSlim(); var traceMre = new ManualResetEventSlim(); + var onHeartbeatTasks = new Task[2]; heartbeatHandler.Setup(h => h.OnHeartbeat(systemClock.UtcNow)).Callback(() => handlerMre.Wait()); debugger.Setup(d => d.IsAttached).Returns(true); @@ -64,12 +67,13 @@ public void BlockedHeartbeatIsNotLoggedAsErrorIfDebuggerAttached() using (var heartbeat = new Heartbeat(new[] { heartbeatHandler.Object }, systemClock, debugger.Object, kestrelTrace.Object)) { - Task.Run(() => heartbeat.OnHeartbeat()); - Task.Run(() => heartbeat.OnHeartbeat()); + onHeartbeatTasks[0] = Task.Run(() => heartbeat.OnHeartbeat()); + onHeartbeatTasks[1] = Task.Run(() => heartbeat.OnHeartbeat()); Assert.False(traceMre.Wait(TimeSpan.FromSeconds(10))); } handlerMre.Set(); + Task.WaitAll(onHeartbeatTasks); heartbeatHandler.Verify(h => h.OnHeartbeat(systemClock.UtcNow), Times.Once()); kestrelTrace.Verify(t => t.HeartbeatSlow(Heartbeat.Interval, systemClock.UtcNow), Times.Never());