From 173c1c8c8f92b448f2398bb96233075f1d7c23e7 Mon Sep 17 00:00:00 2001 From: Erik-Jan Westendorp Date: Mon, 4 Jul 2022 01:54:27 +0200 Subject: [PATCH] Add Current Server Role to system information (#12630) * Add Current Server Rule to system information * Update Unit Tests, Mock IServerRoleAccessor * Add CurrentServerRole to UnitTest * adds trailing commas Co-authored-by: Nathan Woulfe --- src/Umbraco.Core/Constants-Telemetry.cs | 3 ++- .../SystemInformationTelemetryProvider.cs | 18 ++++++++++++------ .../Telemetry/TelemetryServiceTests.cs | 3 ++- .../Services/UserDataServiceTests.cs | 6 ++++-- .../SystemInformationTelemetryProviderTests.cs | 6 ++++-- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Core/Constants-Telemetry.cs b/src/Umbraco.Core/Constants-Telemetry.cs index 6fc474d9ae..284841f104 100644 --- a/src/Umbraco.Core/Constants-Telemetry.cs +++ b/src/Umbraco.Core/Constants-Telemetry.cs @@ -1,4 +1,4 @@ -namespace Umbraco.Cms.Core +namespace Umbraco.Cms.Core { public static partial class Constants { @@ -27,6 +27,7 @@ public static string AspEnvironment = "AspEnvironment"; public static string IsDebug = "IsDebug"; public static string DatabaseProvider = "DatabaseProvider"; + public static string CurrentServerRole = "CurrentServerRole"; } } } diff --git a/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs b/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs index 4d01a41cd9..d0d2a40eb3 100644 --- a/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs +++ b/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs @@ -1,8 +1,5 @@ -using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Runtime.InteropServices; -using System.Threading; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Umbraco.Cms.Core; @@ -10,6 +7,7 @@ using Umbraco.Cms.Core.Configuration; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Sync; using Umbraco.Cms.Infrastructure.Persistence; using Umbraco.Cms.Infrastructure.Telemetry.Interfaces; using Umbraco.Extensions; @@ -25,6 +23,8 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, private readonly ModelsBuilderSettings _modelsBuilderSettings; private readonly IUmbracoDatabaseFactory _umbracoDatabaseFactory; private readonly IUmbracoVersion _version; + private readonly IServerRoleAccessor _serverRoleAccessor; + public SystemInformationTelemetryProvider( IUmbracoVersion version, @@ -33,12 +33,14 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, IOptionsMonitor hostingSettings, IOptionsMonitor globalSettings, IHostEnvironment hostEnvironment, - IUmbracoDatabaseFactory umbracoDatabaseFactory) + IUmbracoDatabaseFactory umbracoDatabaseFactory, + IServerRoleAccessor serverRoleAccessor) { _version = version; _localizationService = localizationService; _hostEnvironment = hostEnvironment; _umbracoDatabaseFactory = umbracoDatabaseFactory; + _serverRoleAccessor = serverRoleAccessor; _globalSettings = globalSettings.CurrentValue; _hostingSettings = hostingSettings.CurrentValue; @@ -63,6 +65,8 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, private string DatabaseProvider => _umbracoDatabaseFactory.CreateDatabase().DatabaseType.GetProviderName(); + private string CurrentServerRole => _serverRoleAccessor.CurrentServerRole.ToString(); + public IEnumerable GetInformation() => new UsageInformation[] { @@ -72,7 +76,8 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, new(Constants.Telemetry.ModelsBuilderMode, ModelsBuilderMode), new(Constants.Telemetry.CustomUmbracoPath, UmbracoPathCustomized), new(Constants.Telemetry.AspEnvironment, AspEnvironment), new(Constants.Telemetry.IsDebug, IsDebug), - new(Constants.Telemetry.DatabaseProvider, DatabaseProvider) + new(Constants.Telemetry.DatabaseProvider, DatabaseProvider), + new(Constants.Telemetry.CurrentServerRole, CurrentServerRole), }; public IEnumerable GetUserData() => @@ -84,7 +89,8 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, new("Current Culture", CurrentCulture), new("Current UI Culture", Thread.CurrentThread.CurrentUICulture.ToString()), new("Current Webserver", CurrentWebServer), new("Models Builder Mode", ModelsBuilderMode), - new("Debug Mode", IsDebug.ToString()), new("Database Provider", DatabaseProvider) + new("Debug Mode", IsDebug.ToString()), new("Database Provider", DatabaseProvider), + new("Current Server Role", CurrentServerRole), }; private bool IsRunningInProcessIIS() diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs index e898ba49ce..69a961fedd 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Microsoft.Extensions.DependencyInjection; using NUnit.Framework; @@ -53,6 +53,7 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Core.Telemetry Constants.Telemetry.AspEnvironment, Constants.Telemetry.IsDebug, Constants.Telemetry.DatabaseProvider, + Constants.Telemetry.CurrentServerRole }; MetricsConsentService.SetConsentLevel(TelemetryLevel.Detailed); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/UserDataServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/UserDataServiceTests.cs index 3c638fb2ef..243d51378d 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/UserDataServiceTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/UserDataServiceTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -13,6 +13,7 @@ using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Semver; using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Sync; using Umbraco.Cms.Infrastructure.Persistence; using Umbraco.Cms.Infrastructure.Telemetry.Providers; @@ -135,7 +136,8 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Services Mock.Of>(x => x.CurrentValue == new HostingSettings { Debug = isDebug }), Mock.Of>(x => x.CurrentValue == new GlobalSettings()), Mock.Of(), - Mock.Of(x=>x.CreateDatabase() == Mock.Of(y=>y.DatabaseType == DatabaseType.SQLite))); + Mock.Of(x=>x.CreateDatabase() == Mock.Of(y=>y.DatabaseType == DatabaseType.SQLite)), + Mock.Of()); } private ILocalizationService CreateILocalizationService(string culture) diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs index 42aae01281..412e0db6fc 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Globalization; using System.Linq; using System.Threading; @@ -12,6 +12,7 @@ using Umbraco.Cms.Core.Configuration; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Sync; using Umbraco.Cms.Infrastructure.Persistence; using Umbraco.Cms.Infrastructure.Telemetry.Providers; @@ -116,7 +117,8 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Telemetry Mock.Of>(x => x.CurrentValue == new HostingSettings { Debug = isDebug }), Mock.Of>(x => x.CurrentValue == new GlobalSettings{ UmbracoPath = umbracoPath }), hostEnvironment.Object, - Mock.Of(x=>x.CreateDatabase() == Mock.Of(y=>y.DatabaseType == DatabaseType.SQLite))); + Mock.Of(x=>x.CreateDatabase() == Mock.Of(y=>y.DatabaseType == DatabaseType.SQLite)), + Mock.Of()); } } }