Remove some test flakiness and add logging (#1402)

This commit is contained in:
BrennanConroy 2018-02-02 15:04:48 -08:00 committed by GitHub
parent 5ade419c53
commit 5ccc9e3a0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 743 additions and 643 deletions

View File

@ -17,20 +17,28 @@ using Microsoft.AspNetCore.Http.Internal;
using Microsoft.AspNetCore.Sockets.Features;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit;
using Xunit.Abstractions;
namespace Microsoft.AspNetCore.Sockets.Tests
{
public class HttpConnectionDispatcherTests
public class HttpConnectionDispatcherTests : LoggedTest
{
public HttpConnectionDispatcherTests(ITestOutputHelper output) : base(output)
{
}
[Fact]
public async Task NegotiateReservesConnectionIdAndReturnsIt()
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
var services = new ServiceCollection();
services.AddEndPoint<TestEndPoint>();
@ -45,6 +53,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.True(manager.TryGetConnection(connectionId, out var connectionContext));
Assert.Equal(connectionId, connectionContext.ConnectionId);
}
}
[Theory]
[InlineData(TransportType.All)]
@ -52,8 +61,10 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.LongPolling | TransportType.WebSockets)]
public async Task NegotiateReturnsAvailableTransports(TransportType transports)
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
context.Features.Set<IHttpResponseFeature>(new ResponseFeature());
var services = new ServiceCollection();
@ -74,6 +85,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(transports, availableTransports);
}
}
[Theory]
[InlineData(TransportType.WebSockets)]
@ -81,8 +93,10 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.LongPolling)]
public async Task EndpointsThatAcceptConnectionId404WhenUnknownConnectionIdProvided(TransportType transportType)
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
using (var strm = new MemoryStream())
{
@ -111,12 +125,15 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal("No Connection with that ID", Encoding.UTF8.GetString(strm.ToArray()));
}
}
}
[Fact]
public async Task EndpointsThatAcceptConnectionId404WhenUnknownConnectionIdProvidedForPost()
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
using (var strm = new MemoryStream())
{
@ -143,12 +160,15 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal("No Connection with that ID", Encoding.UTF8.GetString(strm.ToArray()));
}
}
}
[Fact]
public async Task PostNotAllowedForWebSocketConnections()
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var connection = manager.CreateConnection();
connection.Metadata[ConnectionMetadataNames.Transport] = TransportType.WebSockets;
@ -177,14 +197,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal("POST requests are not allowed for WebSocket connections.", Encoding.UTF8.GetString(strm.ToArray()));
}
}
}
[Theory]
[InlineData(TransportType.ServerSentEvents)]
[InlineData(TransportType.LongPolling)]
public async Task EndpointsThatRequireConnectionId400WhenNoConnectionIdProvided(TransportType transportType)
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
using (var strm = new MemoryStream())
{
var context = new DefaultHttpContext();
@ -208,12 +231,15 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal("Connection ID required", Encoding.UTF8.GetString(strm.ToArray()));
}
}
}
[Fact]
public async Task EndpointsThatRequireConnectionId400WhenNoConnectionIdProvidedForPost()
{
var manager = CreateConnectionManager();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
using (var strm = new MemoryStream())
{
var context = new DefaultHttpContext();
@ -234,6 +260,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal("Connection ID required", Encoding.UTF8.GetString(strm.ToArray()));
}
}
}
[Theory]
[InlineData(TransportType.LongPolling, 204)]
@ -241,7 +268,10 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.ServerSentEvents, 404)]
public async Task EndPointThatOnlySupportsLongPollingRejectsOtherTransports(TransportType transportType, int status)
{
await CheckTransportSupported(TransportType.LongPolling, transportType, status);
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
await CheckTransportSupported(TransportType.LongPolling, transportType, status, loggerFactory);
}
}
[Theory]
@ -250,7 +280,10 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.LongPolling, 404)]
public async Task EndPointThatOnlySupportsSSERejectsOtherTransports(TransportType transportType, int status)
{
await CheckTransportSupported(TransportType.ServerSentEvents, transportType, status);
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
await CheckTransportSupported(TransportType.ServerSentEvents, transportType, status, loggerFactory);
}
}
[Theory]
@ -259,23 +292,31 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.LongPolling, 404)]
public async Task EndPointThatOnlySupportsWebSockesRejectsOtherTransports(TransportType transportType, int status)
{
await CheckTransportSupported(TransportType.WebSockets, transportType, status);
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
await CheckTransportSupported(TransportType.WebSockets, transportType, status, loggerFactory);
}
}
[Theory]
[InlineData(TransportType.LongPolling, 404)]
public async Task EndPointThatOnlySupportsWebSocketsAndSSERejectsLongPolling(TransportType transportType, int status)
{
await CheckTransportSupported(TransportType.WebSockets | TransportType.ServerSentEvents, transportType, status);
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
await CheckTransportSupported(TransportType.WebSockets | TransportType.ServerSentEvents, transportType, status, loggerFactory);
}
}
[Fact]
public async Task CompletedEndPointEndsConnection()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, TransportType.ServerSentEvents);
@ -292,14 +333,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
bool exists = manager.TryGetConnection(connection.ConnectionId, out _);
Assert.False(exists);
}
}
[Fact]
public async Task SynchronusExceptionEndsConnection()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, TransportType.ServerSentEvents);
@ -315,14 +359,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
bool exists = manager.TryGetConnection(connection.ConnectionId, out _);
Assert.False(exists);
}
}
[Fact]
public async Task CompletedEndPointEndsLongPollingConnection()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
@ -338,14 +385,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
bool exists = manager.TryGetConnection(connection.ConnectionId, out _);
Assert.False(exists);
}
}
[Fact]
public async Task LongPollingTimeoutSets200StatusCode()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
@ -360,14 +410,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
}
}
[Fact]
public async Task WebSocketTransportTimesOutWhenCloseFrameNotReceived()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Trace))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, TransportType.WebSockets);
@ -384,16 +437,19 @@ namespace Microsoft.AspNetCore.Sockets.Tests
await task.OrTimeout();
}
}
[Theory]
[InlineData(TransportType.WebSockets)]
[InlineData(TransportType.ServerSentEvents)]
public async Task RequestToActiveConnectionId409ForStreamingTransports(TransportType transportType)
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context1 = MakeRequest("/foo", connection);
var context2 = MakeRequest("/foo", connection);
@ -425,14 +481,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
await request1.OrTimeout();
}
}
[Fact]
public async Task RequestToActiveConnectionIdKillsPreviousConnectionLongPolling()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context1 = MakeRequest("/foo", connection);
var context2 = MakeRequest("/foo", connection);
@ -457,17 +516,20 @@ namespace Microsoft.AspNetCore.Sockets.Tests
await request2;
}
}
[Theory]
[InlineData(TransportType.ServerSentEvents)]
[InlineData(TransportType.LongPolling)]
public async Task RequestToDisposedConnectionIdReturns404(TransportType transportType)
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
connection.Status = DefaultConnectionContext.ConnectionStatus.Disposed;
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, transportType);
@ -483,14 +545,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status404NotFound, context.Response.StatusCode);
}
}
[Fact]
public async Task ConnectionStateSetToInactiveAfterPoll()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
@ -514,14 +579,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
}
}
[Fact]
public async Task BlockingConnectionWorksWithStreamingConnections()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, TransportType.ServerSentEvents);
@ -545,14 +613,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
bool exists = manager.TryGetConnection(connection.ConnectionId, out _);
Assert.False(exists);
}
}
[Fact]
public async Task BlockingConnectionWorksWithLongPollingConnection()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
@ -575,14 +646,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
bool exists = manager.TryGetConnection(connection.ConnectionId, out _);
Assert.False(exists);
}
}
[Fact]
public async Task AttemptingToPollWhileAlreadyPollingReplacesTheCurrentPoll()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var services = new ServiceCollection();
services.AddEndPoint<TestEndPoint>();
@ -610,6 +684,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context2.Response.StatusCode);
Assert.Equal("Hello, World", GetContentAsString(context2.Response.Body));
}
}
[Theory]
[InlineData(TransportType.LongPolling, TransferMode.Binary | TransferMode.Text)]
@ -617,10 +692,12 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransportType.WebSockets, TransferMode.Binary | TransferMode.Text)]
public async Task TransportCapabilitiesSet(TransportType transportType, TransferMode expectedTransportCapabilities)
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
SetTransport(context, transportType);
@ -637,13 +714,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(expectedTransportCapabilities, connection.TransportCapabilities);
}
}
[Fact]
public async Task UnauthorizedConnectionFailsToStartEndPoint()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
var services = new ServiceCollection();
services.AddOptions();
@ -679,13 +759,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status401Unauthorized, context.Response.StatusCode);
}
}
[Fact]
public async Task AuthenticatedUserWithoutPermissionCausesForbidden()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
var services = new ServiceCollection();
services.AddOptions();
@ -723,13 +806,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status403Forbidden, context.Response.StatusCode);
}
}
[Fact]
public async Task AuthorizedConnectionCanConnectToEndPoint()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
context.Features.Set<IHttpResponseFeature>(new ResponseFeature());
var services = new ServiceCollection();
@ -776,13 +862,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
Assert.Equal("Hello, World", GetContentAsString(context.Response.Body));
}
}
[Fact]
public async Task AllPoliciesRequiredForAuthorizedEndPoint()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
context.Features.Set<IHttpResponseFeature>(new ResponseFeature());
var services = new ServiceCollection();
@ -854,13 +943,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
Assert.Equal("Hello, World", GetContentAsString(context.Response.Body));
}
}
[Fact]
public async Task AuthorizedConnectionWithAcceptedSchemesCanConnectToEndPoint()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
context.Features.Set<IHttpResponseFeature>(new ResponseFeature());
var services = new ServiceCollection();
@ -908,13 +1000,16 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status200OK, context.Response.StatusCode);
Assert.Equal("Hello, World", GetContentAsString(context.Response.Body));
}
}
[Fact]
public async Task AuthorizedConnectionWithRejectedSchemesFailsToConnectToEndPoint()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = new DefaultHttpContext();
var services = new ServiceCollection();
services.AddOptions();
@ -958,14 +1053,17 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.Equal(StatusCodes.Status401Unauthorized, context.Response.StatusCode);
}
}
[Fact]
public async Task SetsInherentKeepAliveFeatureOnFirstLongPollingRequest()
{
var manager = CreateConnectionManager();
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
var context = MakeRequest("/foo", connection);
@ -984,6 +1082,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
Assert.NotNull(connection.Features.Get<IConnectionInherentKeepAliveFeature>());
Assert.Equal(options.LongPolling.PollTimeout, connection.Features.Get<IConnectionInherentKeepAliveFeature>().KeepAliveInterval);
}
}
private class RejectHandler : TestAuthenticationHandler
{
@ -1029,11 +1128,11 @@ namespace Microsoft.AspNetCore.Sockets.Tests
}
}
private static async Task CheckTransportSupported(TransportType supportedTransports, TransportType transportType, int status)
private static async Task CheckTransportSupported(TransportType supportedTransports, TransportType transportType, int status, ILoggerFactory loggerFactory)
{
var manager = CreateConnectionManager();
var manager = CreateConnectionManager(loggerFactory);
var connection = manager.CreateConnection();
var dispatcher = new HttpConnectionDispatcher(manager, new LoggerFactory());
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
using (var strm = new MemoryStream())
{
var context = new DefaultHttpContext();
@ -1101,9 +1200,9 @@ namespace Microsoft.AspNetCore.Sockets.Tests
}
}
private static ConnectionManager CreateConnectionManager()
private static ConnectionManager CreateConnectionManager(ILoggerFactory loggerFactory)
{
return new ConnectionManager(new Logger<ConnectionManager>(new LoggerFactory()), new EmptyApplicationLifetime());
return new ConnectionManager(new Logger<ConnectionManager>(loggerFactory ?? new LoggerFactory()), new EmptyApplicationLifetime());
}
private string GetContentAsString(Stream body)

View File

@ -7,9 +7,9 @@ using System.Text;
using System.Threading;
using System.Threading.Channels;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR.Internal;
using Microsoft.AspNetCore.Sockets.Internal;
using Microsoft.AspNetCore.Sockets.Internal.Transports;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;
using Xunit;
using Xunit.Abstractions;
@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(WebSocketMessageType.Binary)]
public async Task ReceivedFramesAreWrittenToChannel(WebSocketMessageType webSocketMessageType)
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -75,7 +75,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[InlineData(TransferMode.Binary, WebSocketMessageType.Binary)]
public async Task WebSocketTransportSetsMessageTypeBasedOnTransferModeFeature(TransferMode transferMode, WebSocketMessageType expectedMessageType)
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task TransportFailsWhenClientDisconnectsAbnormally()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -159,7 +159,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task ClientReceivesInternalServerErrorWhenTheApplicationFails()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -194,7 +194,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task TransportClosesOnCloseTimeoutIfClientDoesNotSendCloseFrame()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -231,7 +231,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task TransportFailsOnTimeoutWithErrorWhenApplicationFailsAndClientDoesNotSendCloseFrame()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -268,7 +268,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task ServerGracefullyClosesWhenApplicationEndsThenClientSendsCloseFrame()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();
@ -310,7 +310,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
[Fact]
public async Task ServerGracefullyClosesWhenClientSendsCloseFrameThenApplicationEnds()
{
using (StartLog(out var loggerFactory))
using (StartLog(out var loggerFactory, LogLevel.Debug))
{
var transportToApplication = Channel.CreateUnbounded<byte[]>();
var applicationToTransport = Channel.CreateUnbounded<byte[]>();

View File

@ -1,4 +1,5 @@
{
"longRunningTestSeconds": 30,
"diagnosticMessages": true
"diagnosticMessages": true,
"maxParallelThreads": 16
}