From ad52ba7316392cd6d8c4a4988f8469a48832df4b Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Thu, 19 Apr 2018 16:50:02 +1200 Subject: [PATCH] Global suppress low impact logging verification in tests (#2089) --- .../VerifiableServerLoggedTest.cs | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.AspNetCore.SignalR.Tests.Utils/VerifiableServerLoggedTest.cs b/test/Microsoft.AspNetCore.SignalR.Tests.Utils/VerifiableServerLoggedTest.cs index 1035116e6a..6f64b4bd81 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests.Utils/VerifiableServerLoggedTest.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests.Utils/VerifiableServerLoggedTest.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Net.Http; +using System.Net.WebSockets; using System.Runtime.CompilerServices; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Testing; @@ -11,22 +13,63 @@ namespace Microsoft.AspNetCore.SignalR.Tests { public class VerifiableServerLoggedTest : VerifiableLoggedTest { + private readonly Func _globalExpectedErrorsFilter; + public ServerFixture ServerFixture { get; } public VerifiableServerLoggedTest(ServerFixture serverFixture, ITestOutputHelper output) : base(output) { ServerFixture = serverFixture; + + _globalExpectedErrorsFilter = (writeContext) => + { + // Suppress https://github.com/aspnet/SignalR/issues/2034 + if (writeContext.LoggerName == "Microsoft.AspNetCore.Http.Connections.Client.Internal.ServerSentEventsTransport" && + writeContext.Message.StartsWith("Error while sending to") && + writeContext.Exception is HttpRequestException) + { + return true; + } + + // Suppress https://github.com/aspnet/SignalR/issues/2069 + if (writeContext.LoggerName == "Microsoft.AspNetCore.Http.Connections.Internal.HttpConnectionManager" && + writeContext.Message.StartsWith("Failed disposing connection") && + writeContext.Exception is WebSocketException) + { + return true; + } + + return false; + }; + } + + private Func ResolveExpectedErrorsFilter(Func expectedErrorsFilter) + { + if (expectedErrorsFilter == null) + { + return _globalExpectedErrorsFilter; + } + + return (writeContext) => + { + if (expectedErrorsFilter(writeContext)) + { + return true; + } + + return _globalExpectedErrorsFilter(writeContext); + }; } public override IDisposable StartVerifableLog(out ILoggerFactory loggerFactory, LogLevel minLogLevel, [CallerMemberName] string testName = null, Func expectedErrorsFilter = null) { - var disposable = base.StartVerifableLog(out loggerFactory, minLogLevel, testName, expectedErrorsFilter); + var disposable = base.StartVerifableLog(out loggerFactory, minLogLevel, testName, ResolveExpectedErrorsFilter(expectedErrorsFilter)); return new ServerLogScope(ServerFixture, loggerFactory, disposable); } public override IDisposable StartVerifableLog(out ILoggerFactory loggerFactory, [CallerMemberName] string testName = null, Func expectedErrorsFilter = null) { - var disposable = base.StartVerifableLog(out loggerFactory, testName, expectedErrorsFilter); + var disposable = base.StartVerifableLog(out loggerFactory, testName, ResolveExpectedErrorsFilter(expectedErrorsFilter)); return new ServerLogScope(ServerFixture, loggerFactory, disposable); } }