Improvements
This commit is contained in:
parent
a17320221e
commit
818497de64
|
|
@ -22,10 +22,11 @@ using Xunit.Abstractions;
|
|||
|
||||
namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests
|
||||
{
|
||||
[CollectionDefinition(Name)]
|
||||
// Disable running server tests in parallel so server logs can accurately be captured per test
|
||||
[CollectionDefinition(Name, DisableParallelization = true)]
|
||||
public class HubConnectionTestsCollection : ICollectionFixture<ServerFixture<Startup>>
|
||||
{
|
||||
public const string Name = "EndToEndTests";
|
||||
public const string Name = nameof(HubConnectionTestsCollection);
|
||||
}
|
||||
|
||||
[Collection(HubConnectionTestsCollection.Name)]
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@ using Xunit.Abstractions;
|
|||
|
||||
namespace Microsoft.AspNetCore.SignalR.Redis.Tests
|
||||
{
|
||||
[CollectionDefinition(Name)]
|
||||
public class EndToEndTestsCollection : ICollectionFixture<RedisServerFixture<Startup>>
|
||||
// Disable running server tests in parallel so server logs can accurately be captured per test
|
||||
[CollectionDefinition(Name, DisableParallelization = true)]
|
||||
public class RedisEndToEndTestsCollection : ICollectionFixture<RedisServerFixture<Startup>>
|
||||
{
|
||||
public const string Name = "RedisEndToEndTests";
|
||||
public const string Name = nameof(RedisEndToEndTestsCollection);
|
||||
}
|
||||
|
||||
[Collection(EndToEndTestsCollection.Name)]
|
||||
[Collection(RedisEndToEndTestsCollection.Name)]
|
||||
public class RedisEndToEndTests : VerifiableLoggedTest
|
||||
{
|
||||
private readonly RedisServerFixture<Startup> _serverFixture;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Microsoft.AspNetCore.SignalR.Tests
|
||||
|
|
@ -12,26 +13,33 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
private readonly ServerFixture _serverFixture;
|
||||
private readonly ILoggerFactory _loggerFactory;
|
||||
private readonly IDisposable _wrappedDisposable;
|
||||
private readonly ConcurrentDictionary<string, ILogger> _loggers;
|
||||
private readonly ConcurrentDictionary<string, ILogger> _serverLoggers;
|
||||
private readonly ILogger _scopeLogger;
|
||||
|
||||
public ServerLogScope(ServerFixture serverFixture, ILoggerFactory loggerFactory, IDisposable wrappedDisposable)
|
||||
{
|
||||
_serverFixture = serverFixture;
|
||||
_loggerFactory = loggerFactory;
|
||||
_wrappedDisposable = wrappedDisposable;
|
||||
_loggers = new ConcurrentDictionary<string, ILogger>(StringComparer.Ordinal);
|
||||
_scopeLogger = loggerFactory.CreateLogger(typeof(ServerLogScope));
|
||||
_serverLoggers = new ConcurrentDictionary<string, ILogger>(StringComparer.Ordinal);
|
||||
|
||||
_serverFixture.ServerLogged += ServerFixtureOnServerLogged;
|
||||
|
||||
_scopeLogger.LogInformation("Server log scope started.");
|
||||
}
|
||||
|
||||
private void ServerFixtureOnServerLogged(LogRecord logRecord)
|
||||
{
|
||||
var logger = _loggers.GetOrAdd(logRecord.Write.LoggerName, loggerName => _loggerFactory.CreateLogger(loggerName));
|
||||
// Create (or get) a logger with the same name as the server logger
|
||||
var logger = _serverLoggers.GetOrAdd(logRecord.Write.LoggerName, loggerName => _loggerFactory.CreateLogger(loggerName));
|
||||
logger.Log(logRecord.Write.LogLevel, logRecord.Write.EventId, logRecord.Write.State, logRecord.Write.Exception, logRecord.Write.Formatter);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_scopeLogger.LogInformation("Server log scope disposing.");
|
||||
|
||||
_serverFixture.ServerLogged -= ServerFixtureOnServerLogged;
|
||||
|
||||
_wrappedDisposable?.Dispose();
|
||||
|
|
|
|||
|
|
@ -27,10 +27,11 @@ using HttpConnectionOptions = Microsoft.AspNetCore.Http.Connections.Client.HttpC
|
|||
|
||||
namespace Microsoft.AspNetCore.SignalR.Tests
|
||||
{
|
||||
[CollectionDefinition(Name)]
|
||||
// Disable running server tests in parallel so server logs can accurately be captured per test
|
||||
[CollectionDefinition(Name, DisableParallelization = true)]
|
||||
public class EndToEndTestsCollection : ICollectionFixture<ServerFixture<Startup>>
|
||||
{
|
||||
public const string Name = "EndToEndTests";
|
||||
public const string Name = nameof(EndToEndTestsCollection);
|
||||
}
|
||||
|
||||
[Collection(EndToEndTestsCollection.Name)]
|
||||
|
|
|
|||
Loading…
Reference in New Issue