Use MS ILogger in database stuff

This commit is contained in:
Nikolaj
2020-09-17 12:52:25 +02:00
parent 4b254a02a8
commit c89659c597
14 changed files with 93 additions and 79 deletions

View File

@@ -8,9 +8,9 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using Microsoft.Extensions.Logging;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -24,7 +24,7 @@ namespace Umbraco.Tests.Integration.Testing
public const string InstanceName = "UmbracoTests";
public const string DatabaseName = "UmbracoTests";
private readonly ILogger _logger;
private readonly ILoggerFactory _loggerFactory;
private readonly IGlobalSettings _globalSettings;
private readonly LocalDb _localDb;
private readonly IUmbracoVersion _umbracoVersion;
@@ -38,10 +38,10 @@ namespace Umbraco.Tests.Integration.Testing
private DatabasePool _currentPool;
//It's internal because `Umbraco.Core.Persistence.LocalDb` is internal
internal LocalDbTestDatabase(ILogger logger, IGlobalSettings globalSettings, LocalDb localDb, string filesPath, IUmbracoDatabaseFactory dbFactory)
internal LocalDbTestDatabase(ILoggerFactory loggerFactory, IGlobalSettings globalSettings, LocalDb localDb, string filesPath, IUmbracoDatabaseFactory dbFactory)
{
_umbracoVersion = new UmbracoVersion();
_logger = logger;
_loggerFactory = loggerFactory;
_globalSettings = globalSettings;
_localDb = localDb;
_filesPath = filesPath;
@@ -130,7 +130,7 @@ namespace Umbraco.Tests.Integration.Testing
using var trans = database.GetTransaction();
var creator = new DatabaseSchemaCreator(database, _logger, _umbracoVersion, _globalSettings);
var creator = new DatabaseSchemaCreator(database, _loggerFactory.CreateLogger<DatabaseSchemaCreator>(), _loggerFactory, _umbracoVersion, _globalSettings);
creator.InitializeDatabaseSchema();
trans.Complete(); // commit it

View File

@@ -262,7 +262,7 @@ namespace Umbraco.Tests.Integration.Testing
OnTestTearDown(() => runtime.Terminate());
// This will create a db, install the schema and ensure the app is configured to run
InstallTestLocalDb(args.DatabaseFactory, runtime.Logger, runtime.Configs.Global(), runtime.State, TestHelper.WorkingDirectory, out var connectionString);
InstallTestLocalDb(args.DatabaseFactory, runtime.RuntimeLoggerFactory, runtime.Configs.Global(), runtime.State, TestHelper.WorkingDirectory, out var connectionString);
TestDBConnectionString = connectionString;
InMemoryConfiguration["ConnectionStrings:" + Constants.System.UmbracoConnectionName] = TestDBConnectionString;
}
@@ -272,13 +272,14 @@ namespace Umbraco.Tests.Integration.Testing
/// </summary>
/// <param name="filesPath"></param>
/// <param name="logger"></param>
/// <param name="loggerFactory"></param>
/// <param name="globalSettings"></param>
/// <param name="dbFactory"></param>
/// <returns></returns>
/// <remarks>
/// There must only be ONE instance shared between all tests in a session
/// </remarks>
private static LocalDbTestDatabase GetOrCreateDatabase(string filesPath, ILogger logger, IGlobalSettings globalSettings, IUmbracoDatabaseFactory dbFactory)
private static LocalDbTestDatabase GetOrCreateDatabase(string filesPath, ILoggerFactory loggerFactory, IGlobalSettings globalSettings, IUmbracoDatabaseFactory dbFactory)
{
lock (_dbLocker)
{
@@ -287,7 +288,7 @@ namespace Umbraco.Tests.Integration.Testing
var localDb = new LocalDb();
if (localDb.IsAvailable == false)
throw new InvalidOperationException("LocalDB is not available.");
_dbInstance = new LocalDbTestDatabase(logger, globalSettings, localDb, filesPath, dbFactory);
_dbInstance = new LocalDbTestDatabase(loggerFactory, globalSettings, localDb, filesPath, dbFactory);
return _dbInstance;
}
}
@@ -295,13 +296,15 @@ namespace Umbraco.Tests.Integration.Testing
/// <summary>
/// Creates a LocalDb instance to use for the test
/// </summary>
/// <param name="serviceProvider"></param>
/// <param name="runtimeState"></param>
/// <param name="workingDirectory"></param>
/// <param name="integrationTest"></param>
/// <param name="connectionString"></param>
/// <param name="databaseFactory"></param>
/// <param name="loggerFactory"></param>
/// <param name="globalSettings"></param>
/// <returns></returns>
private void InstallTestLocalDb(
IUmbracoDatabaseFactory databaseFactory, ILogger logger, IGlobalSettings globalSettings,
IUmbracoDatabaseFactory databaseFactory, ILoggerFactory loggerFactory, IGlobalSettings globalSettings,
IRuntimeState runtimeState, string workingDirectory, out string connectionString)
{
connectionString = null;
@@ -319,7 +322,7 @@ namespace Umbraco.Tests.Integration.Testing
if (!Directory.Exists(dbFilePath))
Directory.CreateDirectory(dbFilePath);
var db = GetOrCreateDatabase(dbFilePath, logger, globalSettings, databaseFactory);
var db = GetOrCreateDatabase(dbFilePath, loggerFactory, globalSettings, databaseFactory);
switch (testOptions.Database)
{