From 7e0ecf12e8cdb9c9457f5c76f76f35ba8ce9ee4a Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Mon, 6 Aug 2018 20:55:10 +0000 Subject: [PATCH 1/4] Update dependencies.props [auto-updated: dependencies] --- build/dependencies.props | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index 38990621df..a455254cf6 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -4,22 +4,22 @@ 2.2.0-preview1-20180731.1 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 0.6.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 - 2.2.0-preview1-34882 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 0.6.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 + 2.2.0-preview1-34896 2.0.9 2.1.2 2.2.0-preview1-26618-02 From ecadd7b7b1378f8722b868335cca0161e935d2ff Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Sun, 12 Aug 2018 19:34:18 +0000 Subject: [PATCH 2/4] Update dependencies.props [auto-updated: dependencies] --- build/dependencies.props | 34 +++++++++++++++++----------------- korebuild-lock.txt | 4 ++-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index a455254cf6..930f9c30d7 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -3,23 +3,23 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 2.2.0-preview1-20180731.1 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 0.6.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 - 2.2.0-preview1-34896 + 2.2.0-preview1-20180807.2 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 0.6.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 + 2.2.0-preview1-34967 2.0.9 2.1.2 2.2.0-preview1-26618-02 diff --git a/korebuild-lock.txt b/korebuild-lock.txt index b6efc7cfcb..29a57027f1 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.2.0-preview1-20180731.1 -commithash:29fde58465439f4bb9df40830635ed758e063daf +version:2.2.0-preview1-20180807.2 +commithash:11495dbd236104434e08cb1152fcb58cf2a20923 From 42efbb40c4d39ebc26ebca876c6559d0354a6526 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Tue, 21 Aug 2018 13:32:34 -0700 Subject: [PATCH 3/4] Update package branding for 2.2.0-preview2 --- build/dependencies.props | 2 +- version.props | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index 930f9c30d7..269f9d553f 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -29,6 +29,6 @@ 2.3.1 2.4.0 - + diff --git a/version.props b/version.props index 44985cedb3..15637ba785 100644 --- a/version.props +++ b/version.props @@ -1,7 +1,7 @@ 2.2.0 - preview1 + preview2 $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix)-final t000 From 752f934a236e2e05b8ad985adfa540527643ae1a Mon Sep 17 00:00:00 2001 From: John Luo Date: Thu, 23 Aug 2018 14:48:28 -0700 Subject: [PATCH 4/4] Fix flaky test Use dynamic port assignment to reduce address binding failures due to port collisions --- .../KestrelWebSocketHelpers.cs | 4 +- ...icrosoft.AspNetCore.WebSockets.Test.csproj | 1 + .../WebSocketMiddlewareTests.cs | 784 +++++++++--------- 3 files changed, 379 insertions(+), 410 deletions(-) diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs b/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs index 3e0b184f13..b41200f8b1 100644 --- a/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs +++ b/test/Microsoft.AspNetCore.WebSockets.Test/KestrelWebSocketHelpers.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.WebSockets.Test { public class KestrelWebSocketHelpers { - public static IDisposable CreateServer(ILoggerFactory loggerFactory, Func app, Action configure = null) + public static IDisposable CreateServer(ILoggerFactory loggerFactory, Func app, int clientPort, Action configure = null) { configure = configure ?? (o => { }); Action startup = builder => @@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.WebSockets.Test var configBuilder = new ConfigurationBuilder(); configBuilder.AddInMemoryCollection(); var config = configBuilder.Build(); - config["server.urls"] = "http://localhost:54321"; + config["server.urls"] = $"http://localhost:{clientPort}"; var host = new WebHostBuilder() .ConfigureServices(s => diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj b/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj index 5e7f2eb67e..c906aa0f91 100644 --- a/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj +++ b/test/Microsoft.AspNetCore.WebSockets.Test/Microsoft.AspNetCore.WebSockets.Test.csproj @@ -10,6 +10,7 @@ + diff --git a/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs b/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs index dc7ca9a79b..1d179b34e2 100644 --- a/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs +++ b/test/Microsoft.AspNetCore.WebSockets.Test/WebSocketMiddlewareTests.cs @@ -8,12 +8,11 @@ using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Server.IntegrationTesting.Common; using Microsoft.AspNetCore.Testing.xunit; using Microsoft.AspNetCore.WebSockets.Internal; using Microsoft.Extensions.Logging.Testing; using Xunit; -using Xunit.Abstractions; namespace Microsoft.AspNetCore.WebSockets.Test { @@ -27,27 +26,28 @@ namespace Microsoft.AspNetCore.WebSockets.Test #endif public class WebSocketMiddlewareTests : LoggedTest { - private static string ClientAddress = "ws://localhost:54321/"; + private readonly int ClientPort; + private readonly string ClientAddress; - public WebSocketMiddlewareTests(ITestOutputHelper output) : base(output) + public WebSocketMiddlewareTests() { + ClientPort = TestPortHelper.GetNextPort(); + ClientAddress = $"ws://localhost:{ClientPort}/"; } [ConditionalFact] public async Task Connect_Success() { - using (StartLog(out var loggerFactory)) + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); } } } @@ -55,30 +55,28 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task NegotiateSubProtocol_Success() { - using (StartLog(out var loggerFactory)) + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]); + var webSocket = await context.WebSockets.AcceptWebSocketAsync("Bravo"); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - Assert.Equal("alpha, bravo, charlie", context.Request.Headers["Sec-WebSocket-Protocol"]); - var webSocket = await context.WebSockets.AcceptWebSocketAsync("Bravo"); - })) - { - using (var client = new ClientWebSocket()) - { - client.Options.AddSubProtocol("alpha"); - client.Options.AddSubProtocol("bravo"); - client.Options.AddSubProtocol("charlie"); - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + client.Options.AddSubProtocol("alpha"); + client.Options.AddSubProtocol("bravo"); + client.Options.AddSubProtocol("charlie"); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - // The Windows version of ClientWebSocket uses the casing from the header (Bravo) - // However, the Managed version seems match the header against the list generated by - // the AddSubProtocol calls (case-insensitively) and then use the version from - // that list as the value for SubProtocol. This is fine, but means we need to ignore case here. - // We could update our AddSubProtocols above to the same case but I think it's better to - // ensure this behavior is codified by this test. - Assert.Equal("Bravo", client.SubProtocol, ignoreCase: true); - } + // The Windows version of ClientWebSocket uses the casing from the header (Bravo) + // However, the Managed version seems match the header against the list generated by + // the AddSubProtocol calls (case-insensitively) and then use the version from + // that list as the value for SubProtocol. This is fine, but means we need to ignore case here. + // We could update our AddSubProtocols above to the same case but I think it's better to + // ensure this behavior is codified by this test. + Assert.Equal("Bravo", client.SubProtocol, ignoreCase: true); } } } @@ -86,26 +84,24 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendEmptyData_Success() { - using (StartLog(out var loggerFactory)) + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - var serverBuffer = new byte[0]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - })) + var serverBuffer = new byte[0]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var orriginalData = new byte[0]; - await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var orriginalData = new byte[0]; + await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); } } } @@ -113,27 +109,25 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendShortData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes("Hello World"); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes("Hello World"); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - var serverBuffer = new byte[orriginalData.Length]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(orriginalData.Length, result.Count); - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - Assert.Equal(orriginalData, serverBuffer); - })) + var serverBuffer = new byte[orriginalData.Length]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(orriginalData.Length, result.Count); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + Assert.Equal(orriginalData, serverBuffer); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); } } } @@ -141,27 +135,25 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendMediumData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - var serverBuffer = new byte[orriginalData.Length]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(orriginalData.Length, result.Count); - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - Assert.Equal(orriginalData, serverBuffer); - })) + var serverBuffer = new byte[orriginalData.Length]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(orriginalData.Length, result.Count); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + Assert.Equal(orriginalData, serverBuffer); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); } } } @@ -169,39 +161,37 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendLongData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + var serverBuffer = new byte[orriginalData.Length]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + int intermediateCount = result.Count; + Assert.False(result.EndOfMessage); + Assert.Equal(WebSocketMessageType.Text, result.MessageType); + + result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None); + intermediateCount += result.Count; + Assert.False(result.EndOfMessage); + Assert.Equal(WebSocketMessageType.Text, result.MessageType); + + result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None); + intermediateCount += result.Count; + Assert.True(result.EndOfMessage); + Assert.Equal(orriginalData.Length, intermediateCount); + Assert.Equal(WebSocketMessageType.Text, result.MessageType); + + Assert.Equal(orriginalData, serverBuffer); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - - var serverBuffer = new byte[orriginalData.Length]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - int intermediateCount = result.Count; - Assert.False(result.EndOfMessage); - Assert.Equal(WebSocketMessageType.Text, result.MessageType); - - result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None); - intermediateCount += result.Count; - Assert.False(result.EndOfMessage); - Assert.Equal(WebSocketMessageType.Text, result.MessageType); - - result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer, intermediateCount, orriginalData.Length - intermediateCount), CancellationToken.None); - intermediateCount += result.Count; - Assert.True(result.EndOfMessage); - Assert.Equal(orriginalData.Length, intermediateCount); - Assert.Equal(WebSocketMessageType.Text, result.MessageType); - - Assert.Equal(orriginalData, serverBuffer); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); } } } @@ -209,45 +199,43 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendFragmentedData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes("Hello World"); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes("Hello World"); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + var serverBuffer = new byte[orriginalData.Length]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.False(result.EndOfMessage); + Assert.Equal(2, result.Count); + int totalReceived = result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + + result = await webSocket.ReceiveAsync( + new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None); + Assert.False(result.EndOfMessage); + Assert.Equal(2, result.Count); + totalReceived += result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + + result = await webSocket.ReceiveAsync( + new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(7, result.Count); + totalReceived += result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + + Assert.Equal(orriginalData, serverBuffer); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - - var serverBuffer = new byte[orriginalData.Length]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.False(result.EndOfMessage); - Assert.Equal(2, result.Count); - int totalReceived = result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - - result = await webSocket.ReceiveAsync( - new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None); - Assert.False(result.EndOfMessage); - Assert.Equal(2, result.Count); - totalReceived += result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - - result = await webSocket.ReceiveAsync( - new ArraySegment(serverBuffer, totalReceived, serverBuffer.Length - totalReceived), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(7, result.Count); - totalReceived += result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - - Assert.Equal(orriginalData, serverBuffer); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None); - await client.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None); + await client.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None); } } } @@ -255,27 +243,25 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task ReceiveShortData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes("Hello World"); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes("Hello World"); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - })) + await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[orriginalData.Length]; - var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(orriginalData.Length, result.Count); - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - Assert.Equal(orriginalData, clientBuffer); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[orriginalData.Length]; + var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(orriginalData.Length, result.Count); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + Assert.Equal(orriginalData, clientBuffer); } } } @@ -283,27 +269,25 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task ReceiveMediumData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes(new string('a', 130)); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - })) + await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[orriginalData.Length]; - var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(orriginalData.Length, result.Count); - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - Assert.Equal(orriginalData, clientBuffer); - } + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[orriginalData.Length]; + var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(orriginalData.Length, result.Count); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + Assert.Equal(orriginalData, clientBuffer); } } } @@ -311,35 +295,33 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task ReceiveLongData() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes(new string('a', 0x1FFFF)); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); - })) + await webSocket.SendAsync(new ArraySegment(orriginalData), WebSocketMessageType.Binary, true, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[orriginalData.Length]; + WebSocketReceiveResult result; + int receivedCount = 0; + do { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[orriginalData.Length]; - WebSocketReceiveResult result; - int receivedCount = 0; - do - { - result = await client.ReceiveAsync(new ArraySegment(clientBuffer, receivedCount, clientBuffer.Length - receivedCount), CancellationToken.None); - receivedCount += result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - } - while (!result.EndOfMessage); - - Assert.Equal(orriginalData.Length, receivedCount); + result = await client.ReceiveAsync(new ArraySegment(clientBuffer, receivedCount, clientBuffer.Length - receivedCount), CancellationToken.None); + receivedCount += result.Count; Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - Assert.Equal(orriginalData, clientBuffer); } + while (!result.EndOfMessage); + + Assert.Equal(orriginalData.Length, receivedCount); + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + Assert.Equal(orriginalData, clientBuffer); } } } @@ -347,45 +329,43 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task ReceiveFragmentedData_Success() { - using (StartLog(out var loggerFactory)) + var orriginalData = Encoding.UTF8.GetBytes("Hello World"); + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - var orriginalData = Encoding.UTF8.GetBytes("Hello World"); - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + await webSocket.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None); + await webSocket.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None); + await webSocket.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[orriginalData.Length]; + var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); + Assert.False(result.EndOfMessage); + Assert.Equal(2, result.Count); + int totalReceived = result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - await webSocket.SendAsync(new ArraySegment(orriginalData, 0, 2), WebSocketMessageType.Binary, false, CancellationToken.None); - await webSocket.SendAsync(new ArraySegment(orriginalData, 2, 2), WebSocketMessageType.Binary, false, CancellationToken.None); - await webSocket.SendAsync(new ArraySegment(orriginalData, 4, 7), WebSocketMessageType.Binary, true, CancellationToken.None); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[orriginalData.Length]; - var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); - Assert.False(result.EndOfMessage); - Assert.Equal(2, result.Count); - int totalReceived = result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + result = await client.ReceiveAsync( + new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None); + Assert.False(result.EndOfMessage); + Assert.Equal(2, result.Count); + totalReceived += result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - result = await client.ReceiveAsync( - new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None); - Assert.False(result.EndOfMessage); - Assert.Equal(2, result.Count); - totalReceived += result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); + result = await client.ReceiveAsync( + new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(7, result.Count); + totalReceived += result.Count; + Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - result = await client.ReceiveAsync( - new ArraySegment(clientBuffer, totalReceived, clientBuffer.Length - totalReceived), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(7, result.Count); - totalReceived += result.Count; - Assert.Equal(WebSocketMessageType.Binary, result.MessageType); - - Assert.Equal(orriginalData, clientBuffer); - } + Assert.Equal(orriginalData, clientBuffer); } } } @@ -393,30 +373,28 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task SendClose_Success() { - using (StartLog(out var loggerFactory)) + string closeDescription = "Test Closed"; + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - string closeDescription = "Test Closed"; - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - var serverBuffer = new byte[1024]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Close, result.MessageType); - Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); - Assert.Equal(closeDescription, result.CloseStatusDescription); - })) + var serverBuffer = new byte[1024]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Close, result.MessageType); + Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); + Assert.Equal(closeDescription, result.CloseStatusDescription); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - Assert.Equal(WebSocketState.CloseSent, client.State); - } + Assert.Equal(WebSocketState.CloseSent, client.State); } } } @@ -424,30 +402,28 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task ReceiveClose_Success() { - using (StartLog(out var loggerFactory)) + string closeDescription = "Test Closed"; + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - string closeDescription = "Test Closed"; - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => - { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - })) + await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[1024]; - var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Close, result.MessageType); - Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); - Assert.Equal(closeDescription, result.CloseStatusDescription); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[1024]; + var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Close, result.MessageType); + Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); + Assert.Equal(closeDescription, result.CloseStatusDescription); - Assert.Equal(WebSocketState.CloseReceived, client.State); - } + Assert.Equal(WebSocketState.CloseReceived, client.State); } } } @@ -455,32 +431,30 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task CloseFromOpen_Success() { - using (StartLog(out var loggerFactory)) + string closeDescription = "Test Closed"; + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - string closeDescription = "Test Closed"; - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + var serverBuffer = new byte[1024]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Close, result.MessageType); + Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); + Assert.Equal(closeDescription, result.CloseStatusDescription); + + await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - var serverBuffer = new byte[1024]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Close, result.MessageType); - Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); - Assert.Equal(closeDescription, result.CloseStatusDescription); - - await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - - Assert.Equal(WebSocketState.Closed, client.State); - } + Assert.Equal(WebSocketState.Closed, client.State); } } } @@ -488,34 +462,32 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task CloseFromCloseSent_Success() { - using (StartLog(out var loggerFactory)) + string closeDescription = "Test Closed"; + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - string closeDescription = "Test Closed"; - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + var serverBuffer = new byte[1024]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Close, result.MessageType); + Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); + Assert.Equal(closeDescription, result.CloseStatusDescription); + + await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); + Assert.Equal(WebSocketState.CloseSent, client.State); - var serverBuffer = new byte[1024]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Close, result.MessageType); - Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); - Assert.Equal(closeDescription, result.CloseStatusDescription); - - await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - await client.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - Assert.Equal(WebSocketState.CloseSent, client.State); - - await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - Assert.Equal(WebSocketState.Closed, client.State); - } + await client.CloseAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); + Assert.Equal(WebSocketState.Closed, client.State); } } } @@ -523,42 +495,40 @@ namespace Microsoft.AspNetCore.WebSockets.Test [ConditionalFact] public async Task CloseFromCloseReceived_Success() { - using (StartLog(out var loggerFactory)) + string closeDescription = "Test Closed"; + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, async context => { - string closeDescription = "Test Closed"; - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, async context => + Assert.True(context.WebSockets.IsWebSocketRequest); + var webSocket = await context.WebSockets.AcceptWebSocketAsync(); + + await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); + + var serverBuffer = new byte[1024]; + var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + Assert.True(result.EndOfMessage); + Assert.Equal(0, result.Count); + Assert.Equal(WebSocketMessageType.Close, result.MessageType); + Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); + Assert.Equal(closeDescription, result.CloseStatusDescription); + }, + ClientPort)) + { + using (var client = new ClientWebSocket()) { - Assert.True(context.WebSockets.IsWebSocketRequest); - var webSocket = await context.WebSockets.AcceptWebSocketAsync(); - - await webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, closeDescription, CancellationToken.None); - - var serverBuffer = new byte[1024]; - var result = await webSocket.ReceiveAsync(new ArraySegment(serverBuffer), CancellationToken.None); + await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); + var clientBuffer = new byte[1024]; + var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); Assert.True(result.EndOfMessage); Assert.Equal(0, result.Count); Assert.Equal(WebSocketMessageType.Close, result.MessageType); Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); Assert.Equal(closeDescription, result.CloseStatusDescription); - })) - { - using (var client = new ClientWebSocket()) - { - await client.ConnectAsync(new Uri(ClientAddress), CancellationToken.None); - var clientBuffer = new byte[1024]; - var result = await client.ReceiveAsync(new ArraySegment(clientBuffer), CancellationToken.None); - Assert.True(result.EndOfMessage); - Assert.Equal(0, result.Count); - Assert.Equal(WebSocketMessageType.Close, result.MessageType); - Assert.Equal(WebSocketCloseStatus.NormalClosure, result.CloseStatus); - Assert.Equal(closeDescription, result.CloseStatusDescription); - Assert.Equal(WebSocketState.CloseReceived, client.State); + Assert.Equal(WebSocketState.CloseReceived, client.State); - await client.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); + await client.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); - Assert.Equal(WebSocketState.Closed, client.State); - } + Assert.Equal(WebSocketState.Closed, client.State); } } } @@ -573,43 +543,42 @@ namespace Microsoft.AspNetCore.WebSockets.Test [InlineData(HttpStatusCode.OK, "http://ExAmPLE.cOm")] public async Task OriginIsValidatedForWebSocketRequests(HttpStatusCode expectedCode, params string[] origins) { - using (StartLog(out var loggerFactory)) + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, context => { - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, context => + Assert.True(context.WebSockets.IsWebSocketRequest); + return Task.CompletedTask; + }, + ClientPort, + o => + { + if (origins != null) { - Assert.True(context.WebSockets.IsWebSocketRequest); - return Task.CompletedTask; - }, o => - { - if (origins != null) + foreach (var origin in origins) { - foreach (var origin in origins) - { - o.AllowedOrigins.Add(origin); - } + o.AllowedOrigins.Add(origin); } - })) + } + })) + { + using (var client = new HttpClient()) { - using (var client = new HttpClient()) + var uri = new UriBuilder(ClientAddress); + uri.Scheme = "http"; + + // Craft a valid WebSocket Upgrade request + using (var request = new HttpRequestMessage(HttpMethod.Get, uri.ToString())) { - var uri = new UriBuilder(ClientAddress); - uri.Scheme = "http"; + request.Headers.Connection.Clear(); + request.Headers.Connection.Add("Upgrade"); + request.Headers.Upgrade.Add(new System.Net.Http.Headers.ProductHeaderValue("websocket")); + request.Headers.Add(Constants.Headers.SecWebSocketVersion, Constants.Headers.SupportedVersion); + // SecWebSocketKey required to be 16 bytes + request.Headers.Add(Constants.Headers.SecWebSocketKey, Convert.ToBase64String(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, Base64FormattingOptions.None)); - // Craft a valid WebSocket Upgrade request - using (var request = new HttpRequestMessage(HttpMethod.Get, uri.ToString())) - { - request.Headers.Connection.Clear(); - request.Headers.Connection.Add("Upgrade"); - request.Headers.Upgrade.Add(new System.Net.Http.Headers.ProductHeaderValue("websocket")); - request.Headers.Add(Constants.Headers.SecWebSocketVersion, Constants.Headers.SupportedVersion); - // SecWebSocketKey required to be 16 bytes - request.Headers.Add(Constants.Headers.SecWebSocketKey, Convert.ToBase64String(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, Base64FormattingOptions.None)); + request.Headers.Add("Origin", "http://example.com"); - request.Headers.Add("Origin", "http://example.com"); - - var response = await client.SendAsync(request); - Assert.Equal(expectedCode, response.StatusCode); - } + var response = await client.SendAsync(request); + Assert.Equal(expectedCode, response.StatusCode); } } } @@ -618,26 +587,25 @@ namespace Microsoft.AspNetCore.WebSockets.Test [Fact] public async Task OriginIsNotValidatedForNonWebSocketRequests() { - using (StartLog(out var loggerFactory)) + using (var server = KestrelWebSocketHelpers.CreateServer(LoggerFactory, context => { - using (var server = KestrelWebSocketHelpers.CreateServer(loggerFactory, context => + Assert.False(context.WebSockets.IsWebSocketRequest); + return Task.CompletedTask; + }, + ClientPort, + o => o.AllowedOrigins.Add("http://example.com"))) + { + using (var client = new HttpClient()) { - Assert.False(context.WebSockets.IsWebSocketRequest); - return Task.CompletedTask; - }, o => o.AllowedOrigins.Add("http://example.com"))) - { - using (var client = new HttpClient()) + var uri = new UriBuilder(ClientAddress); + uri.Scheme = "http"; + + using (var request = new HttpRequestMessage(HttpMethod.Get, uri.ToString())) { - var uri = new UriBuilder(ClientAddress); - uri.Scheme = "http"; + request.Headers.Add("Origin", "http://notexample.com"); - using (var request = new HttpRequestMessage(HttpMethod.Get, uri.ToString())) - { - request.Headers.Add("Origin", "http://notexample.com"); - - var response = await client.SendAsync(request); - Assert.Equal(HttpStatusCode.OK, response.StatusCode); - } + var response = await client.SendAsync(request); + Assert.Equal(HttpStatusCode.OK, response.StatusCode); } } }