React to logging in DI changes (#1873)
This commit is contained in:
parent
69b4100bbc
commit
3c731ceb13
|
|
@ -1,6 +1,6 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.26403.7
|
VisualStudioVersion = 15.0.26510.0
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7972A5D6-3385-4127-9277-428506DD44FF}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7972A5D6-3385-4127-9277-428506DD44FF}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
|
@ -22,7 +22,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{0EF2AC
|
||||||
test\shared\DummyApplication.cs = test\shared\DummyApplication.cs
|
test\shared\DummyApplication.cs = test\shared\DummyApplication.cs
|
||||||
test\shared\HttpClientSlim.cs = test\shared\HttpClientSlim.cs
|
test\shared\HttpClientSlim.cs = test\shared\HttpClientSlim.cs
|
||||||
test\shared\HttpParsingData.cs = test\shared\HttpParsingData.cs
|
test\shared\HttpParsingData.cs = test\shared\HttpParsingData.cs
|
||||||
test\shared\KestrelTestLoggerFactory.cs = test\shared\KestrelTestLoggerFactory.cs
|
test\shared\KestrelTestLoggerProvider.cs = test\shared\KestrelTestLoggerProvider.cs
|
||||||
test\shared\LifetimeNotImplemented.cs = test\shared\LifetimeNotImplemented.cs
|
test\shared\LifetimeNotImplemented.cs = test\shared\LifetimeNotImplemented.cs
|
||||||
test\shared\MockConnectionInformation.cs = test\shared\MockConnectionInformation.cs
|
test\shared\MockConnectionInformation.cs = test\shared\MockConnectionInformation.cs
|
||||||
test\shared\MockFrameControl.cs = test\shared\MockFrameControl.cs
|
test\shared\MockFrameControl.cs = test\shared\MockFrameControl.cs
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
|
|
||||||
private static KestrelServer CreateServer(KestrelServerOptions options, ILogger testLogger)
|
private static KestrelServer CreateServer(KestrelServerOptions options, ILogger testLogger)
|
||||||
{
|
{
|
||||||
return new KestrelServer(Options.Create(options), new MockTransportFactory(), new KestrelTestLoggerFactory(testLogger));
|
return new KestrelServer(Options.Create(options), new MockTransportFactory(), new LoggerFactory(new [] { new KestrelTestLoggerProvider(testLogger)} ));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StartDummyApplication(IServer server)
|
private static void StartDummyApplication(IServer server)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core;
|
||||||
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
|
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.AspNetCore.Testing.xunit;
|
using Microsoft.AspNetCore.Testing.xunit;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -31,9 +32,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
private const int MaxRetries = 10;
|
private const int MaxRetries = 10;
|
||||||
|
|
||||||
private readonly ILoggerFactory _loggerFactory;
|
private readonly Action<ILoggingBuilder> _configureLoggingDelegate;
|
||||||
|
|
||||||
public AddressRegistrationTests(ITestOutputHelper output) => _loggerFactory = new LoggerFactory().AddXunit(output);
|
public AddressRegistrationTests(ITestOutputHelper output) => _configureLoggingDelegate = builder => builder.AddXunit(output);
|
||||||
|
|
||||||
[ConditionalFact]
|
[ConditionalFact]
|
||||||
[NetworkIsReachable]
|
[NetworkIsReachable]
|
||||||
|
|
@ -161,7 +162,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseUrls(addressInput)
|
.UseUrls(addressInput)
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
||||||
|
|
@ -220,7 +221,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
private async Task RegisterIPEndPoint_Success(IPEndPoint endPoint, string testUrl, int testPort = 0)
|
private async Task RegisterIPEndPoint_Success(IPEndPoint endPoint, string testUrl, int testPort = 0)
|
||||||
{
|
{
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
options.Listen(endPoint, listenOptions =>
|
options.Listen(endPoint, listenOptions =>
|
||||||
|
|
@ -301,9 +302,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var testLogger = new TestApplicationErrorLogger();
|
var testLogger = new TestApplicationErrorLogger();
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger))
|
.ConfigureLogging(builder => builder
|
||||||
|
.AddProvider(new KestrelTestLoggerProvider(testLogger))
|
||||||
|
.SetMinimumLevel(LogLevel.Debug))
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -331,7 +334,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseUrls($"http://127.0.0.1:{port}")
|
.UseUrls($"http://127.0.0.1:{port}")
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
@ -354,7 +357,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseUrls($"http://[::1]:{port}")
|
.UseUrls($"http://[::1]:{port}")
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
@ -382,7 +385,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
})
|
})
|
||||||
.UseUrls(useUrlsAddress)
|
.UseUrls(useUrlsAddress)
|
||||||
.PreferHostingUrls(true)
|
.PreferHostingUrls(true)
|
||||||
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger))
|
.ConfigureLogging(builder => builder.AddProvider(new KestrelTestLoggerProvider(testLogger)))
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -412,7 +415,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var useUrlsAddress = $"http://127.0.0.1:0";
|
var useUrlsAddress = $"http://127.0.0.1:0";
|
||||||
var testLogger = new TestApplicationErrorLogger();
|
var testLogger = new TestApplicationErrorLogger();
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
|
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
|
||||||
|
|
@ -422,7 +425,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
})
|
})
|
||||||
.UseUrls($"http://127.0.0.1:0")
|
.UseUrls($"http://127.0.0.1:0")
|
||||||
.PreferHostingUrls(false)
|
.PreferHostingUrls(false)
|
||||||
.UseLoggerFactory(_ => new KestrelTestLoggerFactory(testLogger))
|
.ConfigureLogging(builder => builder.AddProvider(new KestrelTestLoggerProvider(testLogger)))
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -450,7 +453,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
public async Task DoesNotOverrideDirectConfigurationWithIServerAddressesFeature_IfAddressesEmpty()
|
public async Task DoesNotOverrideDirectConfigurationWithIServerAddressesFeature_IfAddressesEmpty()
|
||||||
{
|
{
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
|
options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions =>
|
||||||
|
|
@ -528,7 +531,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
var port = ((IPEndPoint)socket.LocalEndPoint).Port;
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseLoggerFactory(_loggerFactory)
|
.ConfigureLogging(_configureLoggingDelegate)
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
.UseUrls($"http://localhost:{port}")
|
.UseUrls($"http://localhost:{port}")
|
||||||
.Configure(ConfigureEchoAddress);
|
.Configure(ConfigureEchoAddress);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
|
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
|
||||||
using Microsoft.AspNetCore.Testing;
|
using Microsoft.AspNetCore.Testing;
|
||||||
using Microsoft.AspNetCore.Testing.xunit;
|
using Microsoft.AspNetCore.Testing.xunit;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var tcs = new TaskCompletionSource<object>();
|
var tcs = new TaskCompletionSource<object>();
|
||||||
return tcs.Task;
|
return tcs.Task;
|
||||||
},
|
},
|
||||||
new TestServiceContext(new KestrelTestLoggerFactory(), mockTrace.Object)))
|
new TestServiceContext(new LoggerFactory(), mockTrace.Object)))
|
||||||
{
|
{
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Server.Kestrel.Https;
|
using Microsoft.AspNetCore.Server.Kestrel.Https;
|
||||||
|
|
@ -26,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task EmptyRequestLoggedAsInformation()
|
public async Task EmptyRequestLoggedAsInformation()
|
||||||
{
|
{
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
|
|
@ -36,7 +37,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => { });
|
.Configure(app => { });
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -48,19 +49,19 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// Close socket immediately
|
// Close socket immediately
|
||||||
}
|
}
|
||||||
|
|
||||||
await loggerFactory.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
|
await loggerProvider.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.Equal(1, loggerFactory.FilterLogger.LastEventId.Id);
|
Assert.Equal(1, loggerProvider.FilterLogger.LastEventId.Id);
|
||||||
Assert.Equal(LogLevel.Information, loggerFactory.FilterLogger.LastLogLevel);
|
Assert.Equal(LogLevel.Information, loggerProvider.FilterLogger.LastLogLevel);
|
||||||
Assert.True(loggerFactory.ErrorLogger.TotalErrorsLogged == 0,
|
Assert.True(loggerProvider.ErrorLogger.TotalErrorsLogged == 0,
|
||||||
userMessage: string.Join(Environment.NewLine, loggerFactory.ErrorLogger.ErrorMessages));
|
userMessage: string.Join(Environment.NewLine, loggerProvider.ErrorLogger.ErrorMessages));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ClientHandshakeFailureLoggedAsInformation()
|
public async Task ClientHandshakeFailureLoggedAsInformation()
|
||||||
{
|
{
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
|
|
@ -70,7 +71,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => { });
|
.Configure(app => { });
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -84,20 +85,20 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await stream.WriteAsync(new byte[10], 0, 10);
|
await stream.WriteAsync(new byte[10], 0, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
await loggerFactory.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
|
await loggerProvider.FilterLogger.LogTcs.Task.TimeoutAfter(TimeSpan.FromSeconds(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.Equal(1, loggerFactory.FilterLogger.LastEventId.Id);
|
Assert.Equal(1, loggerProvider.FilterLogger.LastEventId.Id);
|
||||||
Assert.Equal(LogLevel.Information, loggerFactory.FilterLogger.LastLogLevel);
|
Assert.Equal(LogLevel.Information, loggerProvider.FilterLogger.LastLogLevel);
|
||||||
Assert.True(loggerFactory.ErrorLogger.TotalErrorsLogged == 0,
|
Assert.True(loggerProvider.ErrorLogger.TotalErrorsLogged == 0,
|
||||||
userMessage: string.Join(Environment.NewLine, loggerFactory.ErrorLogger.ErrorMessages));
|
userMessage: string.Join(Environment.NewLine, loggerProvider.ErrorLogger.ErrorMessages));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regression test for https://github.com/aspnet/KestrelHttpServer/issues/1103#issuecomment-246971172
|
// Regression test for https://github.com/aspnet/KestrelHttpServer/issues/1103#issuecomment-246971172
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task DoesNotThrowObjectDisposedExceptionOnConnectionAbort()
|
public async Task DoesNotThrowObjectDisposedExceptionOnConnectionAbort()
|
||||||
{
|
{
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
|
|
@ -106,7 +107,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => app.Run(async httpContext =>
|
.Configure(app => app.Run(async httpContext =>
|
||||||
{
|
{
|
||||||
var ct = httpContext.RequestAborted;
|
var ct = httpContext.RequestAborted;
|
||||||
|
|
@ -142,14 +143,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.False(loggerFactory.ErrorLogger.ObjectDisposedExceptionLogged);
|
Assert.False(loggerProvider.ErrorLogger.ObjectDisposedExceptionLogged);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task DoesNotThrowObjectDisposedExceptionFromWriteAsyncAfterConnectionIsAborted()
|
public async Task DoesNotThrowObjectDisposedExceptionFromWriteAsyncAfterConnectionIsAborted()
|
||||||
{
|
{
|
||||||
var tcs = new TaskCompletionSource<object>();
|
var tcs = new TaskCompletionSource<object>();
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
|
|
@ -158,7 +159,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => app.Run(async httpContext =>
|
.Configure(app => app.Run(async httpContext =>
|
||||||
{
|
{
|
||||||
httpContext.Abort();
|
httpContext.Abort();
|
||||||
|
|
@ -198,7 +199,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task DoesNotThrowObjectDisposedExceptionOnEmptyConnection()
|
public async Task DoesNotThrowObjectDisposedExceptionOnEmptyConnection()
|
||||||
{
|
{
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
{
|
{
|
||||||
|
|
@ -207,7 +208,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => app.Run(httpContext => Task.CompletedTask));
|
.Configure(app => app.Run(httpContext => Task.CompletedTask));
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -224,14 +225,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.False(loggerFactory.ErrorLogger.ObjectDisposedExceptionLogged);
|
Assert.False(loggerProvider.ErrorLogger.ObjectDisposedExceptionLogged);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regression test for https://github.com/aspnet/KestrelHttpServer/pull/1197
|
// Regression test for https://github.com/aspnet/KestrelHttpServer/pull/1197
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ConnectionFilterDoesNotLeakBlock()
|
public void ConnectionFilterDoesNotLeakBlock()
|
||||||
{
|
{
|
||||||
var loggerFactory = new HandshakeErrorLoggerFactory();
|
var loggerProvider = new HandshakeErrorLoggerProvider();
|
||||||
|
|
||||||
var hostBuilder = new WebHostBuilder()
|
var hostBuilder = new WebHostBuilder()
|
||||||
.UseKestrel(options =>
|
.UseKestrel(options =>
|
||||||
|
|
@ -241,7 +242,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword");
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.UseLoggerFactory(loggerFactory)
|
.ConfigureLogging(builder => builder.AddProvider(loggerProvider))
|
||||||
.Configure(app => { });
|
.Configure(app => { });
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
|
|
@ -258,7 +259,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class HandshakeErrorLoggerFactory : ILoggerFactory
|
private class HandshakeErrorLoggerProvider : ILoggerProvider
|
||||||
{
|
{
|
||||||
public HttpsConnectionFilterLogger FilterLogger { get; } = new HttpsConnectionFilterLogger();
|
public HttpsConnectionFilterLogger FilterLogger { get; } = new HttpsConnectionFilterLogger();
|
||||||
public ApplicationErrorLogger ErrorLogger { get; } = new ApplicationErrorLogger();
|
public ApplicationErrorLogger ErrorLogger { get; } = new ApplicationErrorLogger();
|
||||||
|
|
@ -275,11 +276,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddProvider(ILoggerProvider provider)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.Http" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,16 @@ using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Testing
|
namespace Microsoft.AspNetCore.Testing
|
||||||
{
|
{
|
||||||
public class KestrelTestLoggerFactory : ILoggerFactory
|
public class KestrelTestLoggerProvider : ILoggerProvider
|
||||||
{
|
{
|
||||||
private readonly ILogger _testLogger;
|
private readonly ILogger _testLogger;
|
||||||
|
|
||||||
public KestrelTestLoggerFactory()
|
public KestrelTestLoggerProvider()
|
||||||
: this(new TestApplicationErrorLogger())
|
: this(new TestApplicationErrorLogger())
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public KestrelTestLoggerFactory(ILogger testLogger)
|
public KestrelTestLoggerProvider(ILogger testLogger)
|
||||||
{
|
{
|
||||||
_testLogger = testLogger;
|
_testLogger = testLogger;
|
||||||
}
|
}
|
||||||
|
|
@ -25,11 +25,6 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
return _testLogger;
|
return _testLogger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddProvider(ILoggerProvider provider)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
|
|
@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
public class TestServiceContext : ServiceContext
|
public class TestServiceContext : ServiceContext
|
||||||
{
|
{
|
||||||
public TestServiceContext()
|
public TestServiceContext()
|
||||||
: this(new KestrelTestLoggerFactory())
|
: this(new LoggerFactory(new[] { new KestrelTestLoggerProvider() }))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue