From aae5fc0048ab8858dc0e6897c40a6e61cb03f59e Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 19 Dec 2019 17:45:28 +1100 Subject: [PATCH 1/3] Removes BulkInsertRecordsWithTransaction and changes tests --- .../NPocoDatabaseExtensions-Bulk.cs | 20 --------- .../Services/PerformanceTests.cs | 41 ++++--------------- 2 files changed, 9 insertions(+), 52 deletions(-) diff --git a/src/Umbraco.Infrastructure/Persistence/NPocoDatabaseExtensions-Bulk.cs b/src/Umbraco.Infrastructure/Persistence/NPocoDatabaseExtensions-Bulk.cs index 59a3c3afd5..6a7716ded7 100644 --- a/src/Umbraco.Infrastructure/Persistence/NPocoDatabaseExtensions-Bulk.cs +++ b/src/Umbraco.Infrastructure/Persistence/NPocoDatabaseExtensions-Bulk.cs @@ -30,26 +30,6 @@ namespace Umbraco.Core.Persistence SqlBulkCopyHelper.SqlTransactionResolver = dbTran => GetTypedTransaction(dbTran); } - /// - /// Bulk-inserts records within a transaction. - /// - /// The type of the records. - /// The database. - /// The records. - /// Whether to use native bulk insert when available. - public static void BulkInsertRecordsWithTransaction(this IUmbracoDatabase database, IEnumerable records, bool useNativeBulkInsert = true) - { - var recordsA = records.ToArray(); - if (recordsA.Length == 0) - return; - - // no need to "try...catch", if the transaction is not completed it will rollback! - using (var tr = database.GetTransaction()) - { - database.BulkInsertRecords(recordsA, useNativeBulkInsert); - tr.Complete(); - } - } /// /// Creates bulk-insert commands. diff --git a/src/Umbraco.Tests/Services/PerformanceTests.cs b/src/Umbraco.Tests/Services/PerformanceTests.cs index 0ac6eeb863..2471b8061d 100644 --- a/src/Umbraco.Tests/Services/PerformanceTests.cs +++ b/src/Umbraco.Tests/Services/PerformanceTests.cs @@ -29,11 +29,9 @@ namespace Umbraco.Tests.Services [TestFixture] [Apartment(ApartmentState.STA)] [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] - [NUnit.Framework.Ignore("These should not be run by the server, only directly as they are only benchmark tests")] + [NUnit.Framework.Explicit("These should not be run by the server, only directly as they are only benchmark tests")] public class PerformanceTests : TestWithDatabaseBase { - // FIXME: probably making little sense in places due to scope creating a transaction?! - protected override string GetDbConnectionString() { return @"server=.\SQLEXPRESS;database=UmbTest;user id=sa;password=test"; @@ -160,24 +158,6 @@ namespace Umbraco.Tests.Services scope.Complete(); } - //now, test truncating but then do bulk insertion of records - using (proflog.DebugDuration("Starting truncate + bulk insert test")) - using (var scope = ScopeProvider.CreateScope()) - { - //do this 10x! - for (var i = 0; i < 10; i++) - { - //clear all the xml entries - scope.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN - (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml - INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); - - //now we insert each record for the ones we've deleted like we do in the content service. - var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); - scope.Database.BulkInsertRecordsWithTransaction(xmlItems); - } - } - //now, test truncating but then do bulk insertion of records using (proflog.DebugDuration("Starting truncate + bulk insert test in one transaction")) using (var scope = ScopeProvider.CreateScope()) @@ -188,19 +168,16 @@ namespace Umbraco.Tests.Services //now we insert each record for the ones we've deleted like we do in the content service. var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = UpdatedXmlStructure }).ToList(); - using (var tr = scope.Database.GetTransaction()) - { - //clear all the xml entries - scope.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN + //clear all the xml entries + scope.Database.Execute(@"DELETE FROM cmsContentXml WHERE nodeId IN (SELECT DISTINCT cmsContentXml.nodeId FROM cmsContentXml INNER JOIN cmsContent ON cmsContentXml.nodeId = cmsContent.nodeId)"); - scope.Database.BulkInsertRecords(xmlItems); - - tr.Complete(); - } + scope.Database.BulkInsertRecords(xmlItems); } + + scope.Complete(); } } @@ -267,7 +244,7 @@ namespace Umbraco.Tests.Services using (var scope = ScopeProvider.CreateScope()) { - scope.Database.BulkInsertRecordsWithTransaction(nodes); + scope.Database.BulkInsertRecords(nodes); //re-get the nodes with ids var sql = Current.SqlContext.Sql(); @@ -277,11 +254,11 @@ namespace Umbraco.Tests.Services //create the cmsContent data, each with a new content type id (so we can query on it later if needed) var contentTypeId = 0; var cmsContentItems = nodes.Select(node => new ContentDto { NodeId = node.NodeId, ContentTypeId = contentTypeId++ }).ToList(); - scope.Database.BulkInsertRecordsWithTransaction(cmsContentItems); + scope.Database.BulkInsertRecords(cmsContentItems); //create the xml data var xmlItems = nodes.Select(node => new ContentXmlDto { NodeId = node.NodeId, Xml = TestXmlStructure }).ToList(); - scope.Database.BulkInsertRecordsWithTransaction(xmlItems); + scope.Database.BulkInsertRecords(xmlItems); scope.Complete(); } From a8f006e36e158690c8364b9e19337260a024ae2c Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 19 Dec 2019 17:56:48 +1100 Subject: [PATCH 2/3] Removes the useNativeBulkInsert parameter, it's super old and useless --- .../Persistence/SqlCeBulkSqlInsertProvider.cs | 9 +- .../Persistence/IBulkSqlInsertProvider.cs | 2 +- .../Persistence/IUmbracoDatabase.cs | 2 +- .../SqlServerBulkSqlInsertProvider.cs | 5 +- .../Persistence/UmbracoDatabase.cs | 4 +- .../BulkInsertBenchmarks.cs | 200 ------------------ .../Umbraco.Tests.Benchmarks.csproj | 1 - .../NPocoTests/NPocoBulkInsertTests.cs | 67 +----- src/Umbraco.Tests/Testing/TestDatabase.cs | 2 +- 9 files changed, 11 insertions(+), 281 deletions(-) delete mode 100644 src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs diff --git a/src/Umbraco.Core/Persistence/SqlCeBulkSqlInsertProvider.cs b/src/Umbraco.Core/Persistence/SqlCeBulkSqlInsertProvider.cs index 988b1696dc..e7c38ef5db 100644 --- a/src/Umbraco.Core/Persistence/SqlCeBulkSqlInsertProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlCeBulkSqlInsertProvider.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Persistence { public class SqlCeBulkSqlInsertProvider : IBulkSqlInsertProvider { - public int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records, bool useNativeBulkInsert) + public int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records) { var recordsA = records.ToArray(); if (recordsA.Length == 0) return 0; @@ -17,11 +17,8 @@ namespace Umbraco.Core.Persistence var pocoData = database.PocoDataFactory.ForType(typeof(T)); if (pocoData == null) throw new InvalidOperationException("Could not find PocoData for " + typeof(T)); - if (useNativeBulkInsert) return BulkInsertRecordsSqlCe(database, pocoData, recordsA); - // else, no other choice - foreach (var record in recordsA) - database.Insert(record); - return recordsA.Length; + return BulkInsertRecordsSqlCe(database, pocoData, recordsA); + } /// diff --git a/src/Umbraco.Infrastructure/Persistence/IBulkSqlInsertProvider.cs b/src/Umbraco.Infrastructure/Persistence/IBulkSqlInsertProvider.cs index b4d4a021c2..e41367288b 100644 --- a/src/Umbraco.Infrastructure/Persistence/IBulkSqlInsertProvider.cs +++ b/src/Umbraco.Infrastructure/Persistence/IBulkSqlInsertProvider.cs @@ -4,6 +4,6 @@ namespace Umbraco.Core.Persistence { public interface IBulkSqlInsertProvider { - int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records, bool useNativeBulkInsert); + int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records); } } diff --git a/src/Umbraco.Infrastructure/Persistence/IUmbracoDatabase.cs b/src/Umbraco.Infrastructure/Persistence/IUmbracoDatabase.cs index 699c12ee2d..1b0d1d9c2b 100644 --- a/src/Umbraco.Infrastructure/Persistence/IUmbracoDatabase.cs +++ b/src/Umbraco.Infrastructure/Persistence/IUmbracoDatabase.cs @@ -24,6 +24,6 @@ namespace Umbraco.Core.Persistence bool EnableSqlCount { get; set; } int SqlCount { get; } - int BulkInsertRecords(IEnumerable records, bool useNativeBulkInsert = true); + int BulkInsertRecords(IEnumerable records); } } diff --git a/src/Umbraco.Infrastructure/Persistence/SqlServerBulkSqlInsertProvider.cs b/src/Umbraco.Infrastructure/Persistence/SqlServerBulkSqlInsertProvider.cs index 71c50fdcce..68e7f7acdc 100644 --- a/src/Umbraco.Infrastructure/Persistence/SqlServerBulkSqlInsertProvider.cs +++ b/src/Umbraco.Infrastructure/Persistence/SqlServerBulkSqlInsertProvider.cs @@ -10,7 +10,7 @@ namespace Umbraco.Core.Persistence { public class SqlServerBulkSqlInsertProvider : IBulkSqlInsertProvider { - public int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records, bool useNativeBulkInsert) + public int BulkInsertRecords(IUmbracoDatabase database, IEnumerable records) { var recordsA = records.ToArray(); if (recordsA.Length == 0) return 0; @@ -18,10 +18,9 @@ namespace Umbraco.Core.Persistence var pocoData = database.PocoDataFactory.ForType(typeof(T)); if (pocoData == null) throw new InvalidOperationException("Could not find PocoData for " + typeof(T)); - return useNativeBulkInsert && database.DatabaseType.IsSqlServer2008OrLater() + return database.DatabaseType.IsSqlServer2008OrLater() ? BulkInsertRecordsSqlServer(database, pocoData, recordsA) : BulkInsertRecordsWithCommands(database, recordsA); - throw new NotSupportedException(); } /// diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs index 568a1d22d1..ea3d603f95 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs @@ -162,9 +162,9 @@ namespace Umbraco.Core.Persistence /// public int SqlCount { get; private set; } - public int BulkInsertRecords(IEnumerable records, bool useNativeBulkInsert = true) + public int BulkInsertRecords(IEnumerable records) { - return _bulkSqlInsertProvider.BulkInsertRecords(this, records, useNativeBulkInsert); + return _bulkSqlInsertProvider.BulkInsertRecords(this, records); } diff --git a/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs b/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs deleted file mode 100644 index 775bec75f0..0000000000 --- a/src/Umbraco.Tests.Benchmarks/BulkInsertBenchmarks.cs +++ /dev/null @@ -1,200 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data.SqlServerCe; -using System.IO; -using System.Linq; -using BenchmarkDotNet.Attributes; -using Umbraco.Core; -using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; -using Umbraco.Core.Migrations.Install; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Dtos; -using Umbraco.Core.Persistence.Mappers; -using Umbraco.Core.Scoping; -using Umbraco.Tests.Benchmarks.Config; -using Umbraco.Tests.TestHelpers; -using ILogger = Umbraco.Core.Logging.ILogger; - -namespace Umbraco.Tests.Benchmarks -{ - [QuickRunWithMemoryDiagnoserConfig] - public class BulkInsertBenchmarks - { - private static byte[] _initDbBytes; - - // FIXME: should run on LocalDb same as NPoco tests! - - private IUmbracoDatabase GetSqlServerDatabase(ILogger logger) - { - IScopeProvider f = null; - var l = new Lazy(() => f); - var factory = new UmbracoDatabaseFactory( - "server=.\\SQLExpress;database=YOURDB;user id=YOURUSER;password=YOURPASS", - Constants.DatabaseProviders.SqlServer, - logger, - new Lazy(() => new MapperCollection(Enumerable.Empty())), - TestHelper.DbProviderFactoryCreator, - TestHelper.BulkSqlInsertProvider); - return factory.CreateDatabase(); - } - - private IUmbracoDatabase GetSqlCeDatabase(string cstr, ILogger logger) - { - var f = new UmbracoDatabaseFactory( - cstr, - Constants.DatabaseProviders.SqlCe, - logger, - new Lazy(() => new MapperCollection(Enumerable.Empty())), - TestHelper.DbProviderFactoryCreator, - TestHelper.BulkSqlInsertProvider); - return f.CreateDatabase(); - } - - [GlobalSetup] - public void Setup() - { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var path = TestHelper.CurrentAssemblyDirectory; - var umbracoVersion = TestHelper.GetUmbracoVersion(); - SetupSqlCe(path, logger, umbracoVersion); - SetupSqlServer(logger); - - - } - - private void SetupSqlServer(ILogger logger) - { - //create the db - _dbSqlServer = GetSqlServerDatabase(logger); - - //drop the table - // note: DROP TABLE IF EXISTS is SQL 2016+ - _dbSqlServer.Execute("IF OBJECT_ID('dbo.umbracoServer', 'U') IS NOT NULL DROP TABLE [umbracoServer]"); - - //re-create it - _dbSqlServer.Execute(@"CREATE TABLE [umbracoServer]( - [id] [int] IDENTITY(1,1) NOT NULL, - [address] [nvarchar](500) NOT NULL, - [computerName] [nvarchar](255) NOT NULL, - [registeredDate] [datetime] NOT NULL CONSTRAINT [DF_umbracoServer_registeredDate] DEFAULT (getdate()), - [lastNotifiedDate] [datetime] NOT NULL, - [isActive] [bit] NOT NULL, - [isMaster] [bit] NOT NULL, - CONSTRAINT [PK_umbracoServer] PRIMARY KEY CLUSTERED -( - [id] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -)"); - } - - private void SetupSqlCe(string path, ILogger logger, IUmbracoVersion umbracoVersion) - { - var dbName = string.Concat("Umb", Guid.NewGuid(), ".sdf"); - AppDomain.CurrentDomain.SetData("DataDirectory", path); - var sqlCeConnectionString = $"Datasource=|DataDirectory|\\{dbName};Flush Interval=1;"; - - _dbFile = Path.Combine(path, dbName); - - //only create the db one time - if (_initDbBytes == null) - { - using (var engine = new SqlCeEngine(sqlCeConnectionString)) - { - engine.CreateDatabase(); - } - - //use the db to create the initial schema so we can reuse in each bench - using (_dbSqlCe = GetSqlCeDatabase(sqlCeConnectionString, logger)) - { - var creation = new DatabaseSchemaCreator(_dbSqlCe, logger, umbracoVersion); - creation.InitializeDatabaseSchema(); - } - _initDbBytes = File.ReadAllBytes(_dbFile); - } - else - { - File.WriteAllBytes(_dbFile, _initDbBytes); - } - - //create the db - _dbSqlCe = GetSqlCeDatabase(sqlCeConnectionString, logger); - } - - private List GetData() - { - var data = new List(); - for (var i = 0; i < 1000; i++) - { - data.Add(new ServerRegistrationDto - { - ServerAddress = "address" + Guid.NewGuid(), - ServerIdentity = "computer" + Guid.NewGuid(), - DateRegistered = DateTime.Now, - IsActive = true, - DateAccessed = DateTime.Now - }); - } - return data; - } - - [GlobalCleanup] - public void Cleanup() - { - _dbSqlCe.Dispose(); - _dbSqlServer.Dispose(); - File.Delete(_dbFile); - } - - private string _dbFile; - private IUmbracoDatabase _dbSqlCe; - private IUmbracoDatabase _dbSqlServer; - - /// - /// Tests updating the existing XML way - /// - [Benchmark(Baseline = true)] - public void SqlCeOneByOne() - { - using (var tr = _dbSqlCe.GetTransaction()) - { - _dbSqlCe.BulkInsertRecords(GetData(), false); - tr.Complete(); - } - } - - /// - /// Tests updating with only the object graph - /// - [Benchmark] - public void SqlCeTableDirect() - { - using (var tr = _dbSqlCe.GetTransaction()) - { - _dbSqlCe.BulkInsertRecords(GetData()); - tr.Complete(); - } - } - - [Benchmark] - public void SqlServerBulkInsertStatements() - { - using (var tr = _dbSqlServer.GetTransaction()) - { - _dbSqlServer.BulkInsertRecords(GetData(), false); - tr.Complete(); - } - } - - [Benchmark] - public void SqlServerBulkCopy() - { - using (var tr = _dbSqlServer.GetTransaction()) - { - _dbSqlServer.BulkInsertRecords(GetData()); - tr.Complete(); - } - } - - } -} diff --git a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj index 97a2ef35ba..45026b974f 100644 --- a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj +++ b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj @@ -45,7 +45,6 @@ - diff --git a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs index 85b07d4828..6c4a23fa00 100644 --- a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs +++ b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs @@ -18,72 +18,7 @@ namespace Umbraco.Tests.Persistence.NPocoTests [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] public class NPocoBulkInsertTests : TestWithDatabaseBase { - [Test] - public void Can_Bulk_Insert_One_By_One() - { - var servers = new List(); - for (var i = 0; i < 1000; i++) - { - servers.Add(new ServerRegistrationDto - { - ServerAddress = "address" + i, - ServerIdentity = "computer" + i, - DateRegistered = DateTime.Now, - IsActive = true, - DateAccessed = DateTime.Now - }); - } - - // Act - using (ProfilingLogger.TraceDuration("starting insert", "finished insert")) - { - using (var scope = ScopeProvider.CreateScope()) - { - scope.Database.BulkInsertRecords(servers, false); - scope.Complete(); - } - } - - // Assert - using (var scope = ScopeProvider.CreateScope()) - { - Assert.That(scope.Database.ExecuteScalar("SELECT COUNT(*) FROM umbracoServer"), Is.EqualTo(1000)); - } - } - - [Test] - public void Can_Bulk_Insert_One_By_One_Transaction_Rollback() - { - var servers = new List(); - for (var i = 0; i < 1000; i++) - { - servers.Add(new ServerRegistrationDto - { - ServerAddress = "address" + i, - ServerIdentity = "computer" + i, - DateRegistered = DateTime.Now, - IsActive = true, - DateAccessed = DateTime.Now - }); - } - - // Act - using (ProfilingLogger.TraceDuration("starting insert", "finished insert")) - { - using (var scope = ScopeProvider.CreateScope()) - { - scope.Database.BulkInsertRecords(servers, false); - //don't call complete here - the trans will be rolled back - } - } - - // Assert - using (var scope = ScopeProvider.CreateScope()) - { - Assert.That(scope.Database.ExecuteScalar("SELECT COUNT(*) FROM umbracoServer"), Is.EqualTo(0)); - } - } - + [NUnit.Framework.Ignore("Ignored because you need to configure your own SQL Server to test thsi with")] [Test] diff --git a/src/Umbraco.Tests/Testing/TestDatabase.cs b/src/Umbraco.Tests/Testing/TestDatabase.cs index ff24e3f30a..a5ff9a5c05 100644 --- a/src/Umbraco.Tests/Testing/TestDatabase.cs +++ b/src/Umbraco.Tests/Testing/TestDatabase.cs @@ -107,7 +107,7 @@ namespace Umbraco.Tests.Testing public bool InTransaction { get; } public bool EnableSqlCount { get; set; } public int SqlCount { get; } - public int BulkInsertRecords(IEnumerable records, bool useNativeBulkInsert = true) => throw new NotImplementedException(); + public int BulkInsertRecords(IEnumerable records) => throw new NotImplementedException(); public DbParameter CreateParameter() { From 67c54bec50503284cd9150a34d22780a3f6738f4 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 19 Dec 2019 11:23:31 +0100 Subject: [PATCH 3/3] AB4227 - Review fixes - Added null logger + clean up --- src/Umbraco.Abstractions/Composing/Current.cs | 2 +- .../Logging/NullLogger.cs | 109 ++++++++++++++++++ .../Umbraco.Infrastructure.csproj | 12 -- src/Umbraco.Tests/Models/MemberTests.cs | 3 - src/Umbraco.Tests/TestHelpers/TestHelper.cs | 8 +- src/Umbraco.Web/Editors/UsersController.cs | 7 +- .../PropertyEditors/GridPropertyEditor.cs | 2 +- 7 files changed, 117 insertions(+), 26 deletions(-) create mode 100644 src/Umbraco.Abstractions/Logging/NullLogger.cs diff --git a/src/Umbraco.Abstractions/Composing/Current.cs b/src/Umbraco.Abstractions/Composing/Current.cs index 63da21fe88..f99a32a585 100644 --- a/src/Umbraco.Abstractions/Composing/Current.cs +++ b/src/Umbraco.Abstractions/Composing/Current.cs @@ -5,6 +5,6 @@ namespace Umbraco.Composing public static class Current { - public static ILogger Logger { get; set; } + public static ILogger Logger { get; set; } = new NullLogger(); } } diff --git a/src/Umbraco.Abstractions/Logging/NullLogger.cs b/src/Umbraco.Abstractions/Logging/NullLogger.cs new file mode 100644 index 0000000000..7945e0b965 --- /dev/null +++ b/src/Umbraco.Abstractions/Logging/NullLogger.cs @@ -0,0 +1,109 @@ +using System; + +namespace Umbraco.Core.Logging +{ + public class NullLogger : ILogger + { + public bool IsEnabled(Type reporting, LogLevel level) => false; + + public void Fatal(Type reporting, Exception exception, string message) + { + + } + + public void Fatal(Type reporting, Exception exception) + { + + } + + public void Fatal(Type reporting, string message) + { + + } + + public void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) + { + + } + + public void Fatal(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + + public void Error(Type reporting, Exception exception, string message) + { + + } + + public void Error(Type reporting, Exception exception) + { + + } + + public void Error(Type reporting, string message) + { + + } + + public void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) + { + + } + + public void Error(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + + public void Warn(Type reporting, string message) + { + + } + + public void Warn(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + + public void Warn(Type reporting, Exception exception, string message) + { + + } + + public void Warn(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) + { + + } + + public void Info(Type reporting, string message) + { + + } + + public void Info(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + + public void Debug(Type reporting, string message) + { + + } + + public void Debug(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + + public void Verbose(Type reporting, string message) + { + + } + + public void Verbose(Type reporting, string messageTemplate, params object[] propertyValues) + { + + } + } +} diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index f3fe26ca76..45f6dd0e3e 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -31,13 +31,6 @@ - - - - - - - @@ -64,9 +57,4 @@ - - - - - diff --git a/src/Umbraco.Tests/Models/MemberTests.cs b/src/Umbraco.Tests/Models/MemberTests.cs index 1fe648a3bd..049d7d72a8 100644 --- a/src/Umbraco.Tests/Models/MemberTests.cs +++ b/src/Umbraco.Tests/Models/MemberTests.cs @@ -4,9 +4,7 @@ using System.Linq; using Newtonsoft.Json; using NUnit.Framework; using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; using Umbraco.Core.Models; -using Umbraco.Core.Serialization; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; @@ -18,7 +16,6 @@ namespace Umbraco.Tests.Models [SetUp] public void Setup() { - Umbraco.Composing.Current.Logger = Current.Logger; Current.Reset(); Current.UnlockConfigs(TestHelper.GetConfigsFactory(), TestHelper.IOHelper); Current.Configs.Add(SettingsForTests.GetDefaultGlobalSettings); diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index fbbb0ecff7..83cd171c04 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -84,11 +84,11 @@ namespace Umbraco.Tests.TestHelpers } } - public static IShortStringHelper ShortStringHelper => new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); - public static IDbProviderFactoryCreator DbProviderFactoryCreator => new UmbracoDbProviderFactoryCreator(Constants.DbProviderNames.SqlCe); - public static IBulkSqlInsertProvider BulkSqlInsertProvider => new SqlCeBulkSqlInsertProvider(); + public static IShortStringHelper ShortStringHelper { get; } = new DefaultShortStringHelper(new DefaultShortStringHelperConfig()); + public static IDbProviderFactoryCreator DbProviderFactoryCreator { get; } = new UmbracoDbProviderFactoryCreator(Constants.DbProviderNames.SqlCe); + public static IBulkSqlInsertProvider BulkSqlInsertProvider { get; } = new SqlCeBulkSqlInsertProvider(); - public static IIOHelper IOHelper = new IOHelper(GetHostingEnvironment()); + public static IIOHelper IOHelper { get; } = new IOHelper(GetHostingEnvironment()); /// /// Maps the given making it rooted on . must start with ~/ diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index 1e751d2383..5ab374ce99 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -40,12 +40,9 @@ namespace Umbraco.Web.Editors [IsCurrentUserModelFilter] public class UsersController : UmbracoAuthorizedJsonController { - private readonly IGlobalSettings _globalSettings; - public UsersController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, IProfilingLogger logger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper) : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper) { - _globalSettings = globalSettings; } /// @@ -346,7 +343,7 @@ namespace Umbraco.Web.Editors throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } - if (EmailSender.CanSendRequiredEmail(_globalSettings) == false) + if (EmailSender.CanSendRequiredEmail(GlobalSettings) == false) { throw new HttpResponseException( Request.CreateNotificationValidationErrorResponse("No Email server is configured")); @@ -476,7 +473,7 @@ namespace Umbraco.Web.Editors await UserManager.EmailService.SendAsync( //send the special UmbracoEmailMessage which configures it's own sender //to allow for events to handle sending the message if no smtp is configured - new UmbracoEmailMessage(new EmailSender(_globalSettings, true)) + new UmbracoEmailMessage(new EmailSender(GlobalSettings, true)) { Body = emailBody, Destination = userDisplay.Email, diff --git a/src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs index 62ab5c0c09..8baca0e27d 100644 --- a/src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs +++ b/src/Umbraco.Web/PropertyEditors/GridPropertyEditor.cs @@ -55,7 +55,7 @@ namespace Umbraco.Web.PropertyEditors _umbracoContextAccessor = umbracoContextAccessor; _dataTypeService = dataTypeService; _localizationService = localizationService; - _ioHelper = Current.IOHelper; + _ioHelper = ioHelper; _logger = logger; _mediaService = mediaService; _contentTypeBaseServiceProvider = contentTypeBaseServiceProvider;