test duration on CI pipeline with more databases

This commit is contained in:
Paul Johnson
2020-12-19 11:49:37 +00:00
committed by Bjarke Berg
parent 817b63266d
commit f1aa22e9e3
6 changed files with 55 additions and 31 deletions

View File

@@ -3,7 +3,9 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Threading;
using Microsoft.Extensions.Logging;
using Umbraco.Core.Persistence;
@@ -16,28 +18,29 @@ namespace Umbraco.Tests.Integration.Testing
/// </remarks>
public class SqlDeveloperTestDatabase : BaseTestDatabase, ITestDatabase
{
private readonly TestDatabaseSettings _settings;
private readonly string _masterConnectionString;
public const string DatabaseName = "UmbracoTests";
public static SqlDeveloperTestDatabase Instance { get; private set; }
public SqlDeveloperTestDatabase(ILoggerFactory loggerFactory, IUmbracoDatabaseFactory databaseFactory, string masterConnectionString)
public SqlDeveloperTestDatabase(TestDatabaseSettings settings, ILoggerFactory loggerFactory, IUmbracoDatabaseFactory databaseFactory, string masterConnectionString)
{
_loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
_databaseFactory = databaseFactory ?? throw new ArgumentNullException(nameof(databaseFactory));
_settings = settings;
_masterConnectionString = masterConnectionString;
_testDatabases = new[]
{
// With Schema
TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-1", false, masterConnectionString),
TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-2", false, masterConnectionString),
var counter = 0;
// Empty (for migration testing etc)
TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-3", true, masterConnectionString),
TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-4", true, masterConnectionString),
};
var schema = Enumerable.Range(0, _settings.SchemaDatabaseCount)
.Select(x => TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-{++counter}", false, masterConnectionString));
var empty = Enumerable.Range(0, _settings.EmptyDatabasesCount)
.Select(x => TestDbMeta.CreateWithMasterConnectionString($"{DatabaseName}-{++counter}", true, masterConnectionString));
_testDatabases = schema.Concat(empty).ToList();
Instance = this; // For GlobalSetupTeardown.cs
}
@@ -54,7 +57,7 @@ namespace Umbraco.Tests.Integration.Testing
_prepareQueue.Add(meta);
}
for (int i = 0; i < ThreadCount; i++)
for (int i = 0; i < _settings.PrepareThreadCount; i++)
{
var thread = new Thread(PrepareDatabase);
thread.Start();