diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/TaskExtensions.cs b/test/Common/TaskExtensions.cs similarity index 95% rename from test/Microsoft.AspNetCore.SignalR.Tests/TaskExtensions.cs rename to test/Common/TaskExtensions.cs index a4e3ad62bb..925f337e39 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/TaskExtensions.cs +++ b/test/Common/TaskExtensions.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace Microsoft.AspNetCore.SignalR.Tests +namespace Microsoft.AspNetCore.SignalR.Tests.Common { public static class TaskExtensions { diff --git a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs index 748e5802ee..61ffdb3681 100644 --- a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs @@ -5,6 +5,7 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.SignalR.Tests.Common; using Microsoft.AspNetCore.Sockets.Client; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; @@ -117,9 +118,8 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests }); await connection.Invoke("CallEcho", originalMessage); - var completed = await Task.WhenAny(Task.Delay(2000), tcs.Task); - Assert.True(completed == tcs.Task, "Receive timed out!"); - Assert.Equal(originalMessage, tcs.Task.Result); + + Assert.Equal(originalMessage, await tcs.Task.OrTimeout()); } } } diff --git a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj index fa2fe297c2..7926d7e7c6 100644 --- a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj +++ b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj @@ -9,6 +9,10 @@ true + + + + diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/EndToEndTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/EndToEndTests.cs index 4bb55a32c1..729284a666 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/EndToEndTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/EndToEndTests.cs @@ -15,6 +15,7 @@ using Microsoft.Extensions.Logging; using Xunit; using ClientConnection = Microsoft.AspNetCore.Sockets.Client.Connection; +using Microsoft.AspNetCore.SignalR.Tests.Common; namespace Microsoft.AspNetCore.SignalR.Tests { diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/HubEndpointTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/HubEndpointTests.cs index 18e71625c6..703ed2865b 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/HubEndpointTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/HubEndpointTests.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Internal; using Moq; using Xunit; +using Microsoft.AspNetCore.SignalR.Tests.Common; namespace Microsoft.AspNetCore.SignalR.Tests { diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/Microsoft.AspNetCore.SignalR.Tests.csproj b/test/Microsoft.AspNetCore.SignalR.Tests/Microsoft.AspNetCore.SignalR.Tests.csproj index e0178b4b9f..5b9ec27855 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/Microsoft.AspNetCore.SignalR.Tests.csproj +++ b/test/Microsoft.AspNetCore.SignalR.Tests/Microsoft.AspNetCore.SignalR.Tests.csproj @@ -10,6 +10,10 @@ win7-x64 + + + + diff --git a/test/Microsoft.AspNetCore.Sockets.Client.Tests/ConnectionTests.cs b/test/Microsoft.AspNetCore.Sockets.Client.Tests/ConnectionTests.cs index efc4e1b50e..5d0dd00773 100644 --- a/test/Microsoft.AspNetCore.Sockets.Client.Tests/ConnectionTests.cs +++ b/test/Microsoft.AspNetCore.Sockets.Client.Tests/ConnectionTests.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Logging; using Moq; using Moq.Protected; using Xunit; +using Microsoft.AspNetCore.SignalR.Tests.Common; namespace Microsoft.AspNetCore.Sockets.Client.Tests { @@ -37,7 +38,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests Assert.Equal(connectionUrl, connection.Url); } - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); + await longPollingTransport.Running.OrTimeout(); } } @@ -61,7 +62,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests await connection.StopAsync(); - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); + await longPollingTransport.Running.OrTimeout(); } } @@ -85,7 +86,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests Assert.False(longPollingTransport.Running.IsCompleted); } - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); + await longPollingTransport.Running.OrTimeout(); } } @@ -113,8 +114,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests var data = new byte[] { 1, 1, 2, 3, 5, 8 }; await connection.SendAsync(data, Format.Binary); - Assert.Equal(sendTcs.Task, await Task.WhenAny(Task.Delay(1000), sendTcs.Task)); - Assert.Equal(data, sendTcs.Task.Result); + Assert.Equal(data, await sendTcs.Task.OrTimeout()); } } diff --git a/test/Microsoft.AspNetCore.Sockets.Client.Tests/LongPollingTransportTests.cs b/test/Microsoft.AspNetCore.Sockets.Client.Tests/LongPollingTransportTests.cs index 86bc2f7a8d..db68ed475d 100644 --- a/test/Microsoft.AspNetCore.Sockets.Client.Tests/LongPollingTransportTests.cs +++ b/test/Microsoft.AspNetCore.Sockets.Client.Tests/LongPollingTransportTests.cs @@ -12,6 +12,7 @@ using Moq; using Moq.Protected; using Xunit; using Microsoft.AspNetCore.Sockets.Internal; +using Microsoft.AspNetCore.SignalR.Tests.Common; namespace Microsoft.AspNetCore.Sockets.Client.Tests { @@ -44,7 +45,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests Assert.False(transportActiveTask.IsCompleted); } - Assert.Equal(transportActiveTask, await Task.WhenAny(Task.Delay(1000), transportActiveTask)); + await transportActiveTask.OrTimeout(); } [Fact] @@ -67,7 +68,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests var channelConnection = new ChannelConnection(connectionToTransport, transportToConnection); await longPollingTransport.StartAsync(new Uri("http://fakeuri.org"), channelConnection); - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); + await longPollingTransport.Running.OrTimeout(); Assert.True(transportToConnection.In.Completion.IsCompleted); } } @@ -92,8 +93,8 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests var channelConnection = new ChannelConnection(connectionToTransport, transportToConnection); await longPollingTransport.StartAsync(new Uri("http://fakeuri.org"), channelConnection); - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); - var exception = await Assert.ThrowsAsync(async () => await transportToConnection.In.Completion); + var exception = + await Assert.ThrowsAsync(async () => await transportToConnection.In.Completion.OrTimeout()); Assert.Contains(" 500 ", exception.Message); } } @@ -123,13 +124,10 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests await connectionToTransport.Out.WriteAsync(new Message()); - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); - - await Assert.ThrowsAsync(async () => await longPollingTransport.Running); + await Assert.ThrowsAsync(async () => await longPollingTransport.Running.OrTimeout()); // The channel needs to be drained for the Completion task to be completed - Message message; - while (transportToConnection.In.TryRead(out message)) + while (transportToConnection.In.TryRead(out Message message)) { message.Dispose(); } @@ -161,8 +159,10 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests connectionToTransport.Out.Complete(); - Assert.Equal(longPollingTransport.Running, await Task.WhenAny(Task.Delay(1000), longPollingTransport.Running)); - Assert.Equal(connectionToTransport.In.Completion, await Task.WhenAny(Task.Delay(1000), connectionToTransport.In.Completion)); + await longPollingTransport.Running.OrTimeout(); + + await longPollingTransport.Running.OrTimeout(); + await connectionToTransport.In.Completion.OrTimeout(); } } } diff --git a/test/Microsoft.AspNetCore.Sockets.Client.Tests/Microsoft.AspNetCore.Sockets.Client.Tests.csproj b/test/Microsoft.AspNetCore.Sockets.Client.Tests/Microsoft.AspNetCore.Sockets.Client.Tests.csproj index fae05f5ad9..5bf13d211e 100644 --- a/test/Microsoft.AspNetCore.Sockets.Client.Tests/Microsoft.AspNetCore.Sockets.Client.Tests.csproj +++ b/test/Microsoft.AspNetCore.Sockets.Client.Tests/Microsoft.AspNetCore.Sockets.Client.Tests.csproj @@ -9,6 +9,10 @@ true + + + + diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/Microsoft.Extensions.WebSockets.Internal.Tests.csproj b/test/Microsoft.Extensions.WebSockets.Internal.Tests/Microsoft.Extensions.WebSockets.Internal.Tests.csproj index 64a2f38848..1032f45efa 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/Microsoft.Extensions.WebSockets.Internal.Tests.csproj +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/Microsoft.Extensions.WebSockets.Internal.Tests.csproj @@ -9,6 +9,10 @@ true + + + + diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/TestUtil.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/TestUtil.cs index 0d934a0d98..626a73466f 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/TestUtil.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/TestUtil.cs @@ -13,31 +13,6 @@ namespace Microsoft.Extensions.WebSockets.Internal.Tests { private static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(1); - public static Task OrTimeout(this Task task) => OrTimeout(task, DefaultTimeout); - public static Task OrTimeout(this Task task) => OrTimeout(task, DefaultTimeout); - - public static async Task OrTimeout(this Task task, TimeSpan timeout) - { - var completed = await Task.WhenAny(task, CreateTimeoutTask()); - Assert.Same(completed, task); - } - - public static async Task OrTimeout(this Task task, TimeSpan timeout) - { - var completed = await Task.WhenAny(task, CreateTimeoutTask()); - Assert.Same(task, completed); - return task.Result; - } - - public static Task CreateTimeoutTask() => CreateTimeoutTask(DefaultTimeout); - - public static Task CreateTimeoutTask(TimeSpan timeout) - { - var tcs = new TaskCompletionSource(); - CreateTimeoutToken(timeout).Register(() => tcs.TrySetCanceled()); - return tcs.Task; - } - public static CancellationToken CreateTimeoutToken() => CreateTimeoutToken(DefaultTimeout); public static CancellationToken CreateTimeoutToken(TimeSpan timeout) diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs index fa8681bb6a..cad82468ea 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ConnectionLifecycle.cs @@ -1,12 +1,13 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; +using Microsoft.Extensions.Internal; using System; using System.IO.Pipelines; using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.Extensions.Internal; using Xunit; namespace Microsoft.Extensions.WebSockets.Internal.Tests diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.PingPong.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.PingPong.cs index 0d863df652..9083f4272d 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.PingPong.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.PingPong.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; using System; using System.Globalization; using System.IO.Pipelines; diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ProtocolErrors.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ProtocolErrors.cs index 0576d5e012..0cb6aa1198 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ProtocolErrors.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ProtocolErrors.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; using System; using System.IO.Pipelines; using System.Text; diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ReceiveAsync.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ReceiveAsync.cs index d10ab2941d..0cb4ee715c 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ReceiveAsync.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.ReceiveAsync.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; using System; using System.IO.Pipelines; using System.Text; diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs index 4a74c8010d..c8cdd1cbb0 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.SendAsync.cs @@ -1,11 +1,12 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; +using Microsoft.Extensions.Internal; using System; using System.IO.Pipelines; using System.Text; using System.Threading.Tasks; -using Microsoft.Extensions.Internal; using Xunit; namespace Microsoft.Extensions.WebSockets.Internal.Tests diff --git a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.Utf8Validation.cs b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.Utf8Validation.cs index 420babdcd5..dc484a3e3d 100644 --- a/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.Utf8Validation.cs +++ b/test/Microsoft.Extensions.WebSockets.Internal.Tests/WebSocketConnectionTests.Utf8Validation.cs @@ -1,6 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using Microsoft.AspNetCore.SignalR.Tests.Common; using System.IO.Pipelines; using System.Linq; using System.Text;