From 38f9b9abdbcb9c767f2bafd93a2fa1197fe8947f Mon Sep 17 00:00:00 2001 From: Brennan Date: Wed, 24 Jun 2020 17:53:30 -0700 Subject: [PATCH] [SignalR] Fix new flaky test (#23326) --- .../test/HttpConnectionDispatcherTests.cs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs index 85418c85c3..0db4c75850 100644 --- a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs +++ b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs @@ -2318,10 +2318,10 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests Assert.Equal("text/plain", deleteContext.Response.ContentType); Assert.Equal(HttpConnectionStatus.Disposed, connection.Status); + await connection.ConnectionClosed.WaitForCancellationAsync().OrTimeout(); + // Verify the connection not removed because application is hanging Assert.True(manager.TryGetConnection(connection.ConnectionId, out _)); - - Assert.True(connection.ConnectionClosed.IsCancellationRequested); } } @@ -2348,9 +2348,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests // Close the SSE connection connection.Transport.Output.Complete(); - var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - connection.ConnectionClosed.Register(() => tcs.SetResult(null)); - await tcs.Task.OrTimeout(); + await connection.ConnectionClosed.WaitForCancellationAsync().OrTimeout(); } } @@ -2381,9 +2379,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Tests await websocket.Accepted.OrTimeout(); await websocket.Client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "", cancellationToken: default).OrTimeout(); - var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - connection.ConnectionClosed.Register(() => tcs.SetResult(null)); - await tcs.Task.OrTimeout(); + await connection.ConnectionClosed.WaitForCancellationAsync().OrTimeout(); } }