Make sure logger factories are disposed during integration tests

This commit is contained in:
Mark Monteiro 2020-05-03 15:31:17 -04:00
parent 519d65b9c8
commit ea82e2158c

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.IO; using System.IO;
using Emby.Server.Implementations; using Emby.Server.Implementations;
@ -22,7 +23,7 @@ namespace MediaBrowser.Api.Tests
public class JellyfinApplicationFactory : WebApplicationFactory<Startup> public class JellyfinApplicationFactory : WebApplicationFactory<Startup>
{ {
private static readonly string _testPathRoot = Path.Combine(Path.GetTempPath(), "jellyfin-test-data"); private static readonly string _testPathRoot = Path.Combine(Path.GetTempPath(), "jellyfin-test-data");
private static readonly ConcurrentBag<ApplicationHost> _appHosts = new ConcurrentBag<ApplicationHost>(); private static readonly ConcurrentBag<IDisposable> _disposableComponents = new ConcurrentBag<IDisposable>();
/// <summary> /// <summary>
/// Initializes a new instance of <see cref="JellyfinApplicationFactory"/>. /// Initializes a new instance of <see cref="JellyfinApplicationFactory"/>.
@ -70,15 +71,17 @@ namespace MediaBrowser.Api.Tests
// Create a copy of the application configuration to use for startup // Create a copy of the application configuration to use for startup
var startupConfig = Program.CreateAppConfiguration(commandLineOpts, appPaths); var startupConfig = Program.CreateAppConfiguration(commandLineOpts, appPaths);
// Create the app host and initialize it
ILoggerFactory loggerFactory = new SerilogLoggerFactory(); ILoggerFactory loggerFactory = new SerilogLoggerFactory();
_disposableComponents.Add(loggerFactory);
// Create the app host and initialize it
var appHost = new CoreAppHost( var appHost = new CoreAppHost(
appPaths, appPaths,
loggerFactory, loggerFactory,
commandLineOpts, commandLineOpts,
new ManagedFileSystem(loggerFactory.CreateLogger<ManagedFileSystem>(), appPaths), new ManagedFileSystem(loggerFactory.CreateLogger<ManagedFileSystem>(), appPaths),
new NetworkManager(loggerFactory.CreateLogger<NetworkManager>())); new NetworkManager(loggerFactory.CreateLogger<NetworkManager>()));
_appHosts.Add(appHost); _disposableComponents.Add(appHost);
var serviceCollection = new ServiceCollection(); var serviceCollection = new ServiceCollection();
appHost.Init(serviceCollection); appHost.Init(serviceCollection);
@ -104,12 +107,12 @@ namespace MediaBrowser.Api.Tests
/// <inheritdoc/> /// <inheritdoc/>
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
foreach (var host in _appHosts) foreach (var disposable in _disposableComponents)
{ {
host.Dispose(); disposable.Dispose();
} }
_appHosts.Clear(); _disposableComponents.Clear();
base.Dispose(disposing); base.Dispose(disposing);
} }