From c9cdc4891a640b7b28992abafce2eec99c6b099c Mon Sep 17 00:00:00 2001 From: Brennan Date: Tue, 5 May 2020 19:45:08 -0700 Subject: [PATCH] Deflake TimeAwaitable finalizer test (#21523) --- .../Client/test/UnitTests/TimerAwaitableTests.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/SignalR/clients/csharp/Client/test/UnitTests/TimerAwaitableTests.cs b/src/SignalR/clients/csharp/Client/test/UnitTests/TimerAwaitableTests.cs index b8d7f17699..2d61118186 100644 --- a/src/SignalR/clients/csharp/Client/test/UnitTests/TimerAwaitableTests.cs +++ b/src/SignalR/clients/csharp/Client/test/UnitTests/TimerAwaitableTests.cs @@ -14,20 +14,16 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests { [Fact] [QuarantinedTest] - public void FinalizerRunsIfTimerAwaitableReferencesObject() + public async Task FinalizerRunsIfTimerAwaitableReferencesObject() { var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); UseTimerAwaitableAndUnref(tcs); - // Make sure it *really* cleans up - for (int i = 0; i < 5 && !tcs.Task.IsCompleted; i++) - { - GC.Collect(); - GC.WaitForPendingFinalizers(); - } + GC.Collect(); + GC.WaitForPendingFinalizers(); // Make sure the finalizer runs - Assert.True(tcs.Task.IsCompleted); + await tcs.Task.OrTimeout(); } [MethodImpl(MethodImplOptions.NoInlining)] @@ -43,12 +39,11 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests { private readonly TimerAwaitable _timer; private readonly TaskCompletionSource _tcs; - private int _count; public ObjectWithTimerAwaitable(TaskCompletionSource tcs) { _tcs = tcs; - _timer = new TimerAwaitable(TimeSpan.Zero, TimeSpan.FromSeconds(1)); + _timer = new TimerAwaitable(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(1)); _timer.Start(); } @@ -58,7 +53,6 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests { while (await _timer) { - _count++; } } }