From aa2d71f4bca9dc88a44ac77aa5e0b25432e75acd Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 25 Apr 2018 15:27:03 +0200 Subject: [PATCH] Logging activation time for domain object grains. --- .../Apps/AppGrain.cs | 4 +++- .../Assets/AssetGrain.cs | 5 +++-- .../Contents/ContentGrain.cs | 4 +++- .../Rules/RuleGrain.cs | 5 +++-- .../Schemas/SchemaGrain.cs | 5 +++-- .../SquidexDomainObjectGrain.cs | 5 +++-- .../Commands/DomainObjectGrain.cs | 21 ++++++++++++++----- src/Squidex.Infrastructure/FileExtensions.cs | 3 ++- .../Apps/AppGrainTests.cs | 3 ++- .../Assets/AssetCommandMiddlewareTests.cs | 3 ++- .../Assets/AssetGrainTests.cs | 4 +++- .../Contents/ContentGrainTests.cs | 3 ++- .../Rules/RuleDequeuerTests.cs | 2 +- .../Rules/RuleGrainTests.cs | 3 ++- .../Schemas/SchemaGrainTests.cs | 3 ++- .../Commands/DomainObjectGrainTests.cs | 3 ++- .../TestHelpers/MyGrain.cs | 4 +++- 17 files changed, 55 insertions(+), 25 deletions(-) diff --git a/src/Squidex.Domain.Apps.Entities/Apps/AppGrain.cs b/src/Squidex.Domain.Apps.Entities/Apps/AppGrain.cs index 31b58c315..e6303003f 100644 --- a/src/Squidex.Domain.Apps.Entities/Apps/AppGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Apps/AppGrain.cs @@ -18,6 +18,7 @@ using Squidex.Domain.Apps.Events.Apps; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; @@ -36,11 +37,12 @@ namespace Squidex.Domain.Apps.Entities.Apps public AppGrain( InitialPatterns initialPatterns, IStore store, + ISemanticLog log, IAppProvider appProvider, IAppPlansProvider appPlansProvider, IAppPlanBillingManager appPlansBillingManager, IUserResolver userResolver) - : base(store) + : base(store, log) { Guard.NotNull(initialPatterns, nameof(initialPatterns)); Guard.NotNull(appProvider, nameof(appProvider)); diff --git a/src/Squidex.Domain.Apps.Entities/Assets/AssetGrain.cs b/src/Squidex.Domain.Apps.Entities/Assets/AssetGrain.cs index e44af49bf..ba0e1a19f 100644 --- a/src/Squidex.Domain.Apps.Entities/Assets/AssetGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Assets/AssetGrain.cs @@ -15,6 +15,7 @@ using Squidex.Domain.Apps.Events.Assets; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; @@ -23,8 +24,8 @@ namespace Squidex.Domain.Apps.Entities.Assets { public class AssetGrain : SquidexDomainObjectGrain, IAssetGrain { - public AssetGrain(IStore store) - : base(store) + public AssetGrain(IStore store, ISemanticLog log) + : base(store, log) { } diff --git a/src/Squidex.Domain.Apps.Entities/Contents/ContentGrain.cs b/src/Squidex.Domain.Apps.Entities/Contents/ContentGrain.cs index 0c060bfdc..316f6a8e0 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/ContentGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/ContentGrain.cs @@ -19,6 +19,7 @@ using Squidex.Domain.Apps.Events.Contents; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; @@ -33,11 +34,12 @@ namespace Squidex.Domain.Apps.Entities.Contents public ContentGrain( IStore store, + ISemanticLog log, IAppProvider appProvider, IAssetRepository assetRepository, IScriptEngine scriptEngine, IContentRepository contentRepository) - : base(store) + : base(store, log) { Guard.NotNull(appProvider, nameof(appProvider)); Guard.NotNull(scriptEngine, nameof(scriptEngine)); diff --git a/src/Squidex.Domain.Apps.Entities/Rules/RuleGrain.cs b/src/Squidex.Domain.Apps.Entities/Rules/RuleGrain.cs index 7bc1bf8a2..bea4bc7b5 100644 --- a/src/Squidex.Domain.Apps.Entities/Rules/RuleGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Rules/RuleGrain.cs @@ -15,6 +15,7 @@ using Squidex.Domain.Apps.Events.Rules; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; @@ -25,8 +26,8 @@ namespace Squidex.Domain.Apps.Entities.Rules { private readonly IAppProvider appProvider; - public RuleGrain(IStore store, IAppProvider appProvider) - : base(store) + public RuleGrain(IStore store, ISemanticLog log, IAppProvider appProvider) + : base(store, log) { Guard.NotNull(appProvider, nameof(appProvider)); diff --git a/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs b/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs index db9d92be5..5e61d86ba 100644 --- a/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs @@ -18,6 +18,7 @@ using Squidex.Domain.Apps.Events.Schemas; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.States; @@ -29,8 +30,8 @@ namespace Squidex.Domain.Apps.Entities.Schemas private readonly IAppProvider appProvider; private readonly FieldRegistry registry; - public SchemaGrain(IStore store, IAppProvider appProvider, FieldRegistry registry) - : base(store) + public SchemaGrain(IStore store, ISemanticLog log, IAppProvider appProvider, FieldRegistry registry) + : base(store, log) { Guard.NotNull(appProvider, nameof(appProvider)); Guard.NotNull(registry, nameof(registry)); diff --git a/src/Squidex.Domain.Apps.Entities/SquidexDomainObjectGrain.cs b/src/Squidex.Domain.Apps.Entities/SquidexDomainObjectGrain.cs index b3fd6f7d8..bf9c58327 100644 --- a/src/Squidex.Domain.Apps.Entities/SquidexDomainObjectGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/SquidexDomainObjectGrain.cs @@ -9,14 +9,15 @@ using System; using Squidex.Domain.Apps.Events; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.States; namespace Squidex.Domain.Apps.Entities { public abstract class SquidexDomainObjectGrain : DomainObjectGrain where T : IDomainState, new() { - protected SquidexDomainObjectGrain(IStore store) - : base(store) + protected SquidexDomainObjectGrain(IStore store, ISemanticLog log) + : base(store, log) { } diff --git a/src/Squidex.Infrastructure/Commands/DomainObjectGrain.cs b/src/Squidex.Infrastructure/Commands/DomainObjectGrain.cs index 6947927df..7df337ade 100644 --- a/src/Squidex.Infrastructure/Commands/DomainObjectGrain.cs +++ b/src/Squidex.Infrastructure/Commands/DomainObjectGrain.cs @@ -9,6 +9,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.States; using Squidex.Infrastructure.Tasks; @@ -19,6 +20,7 @@ namespace Squidex.Infrastructure.Commands { private readonly List> uncomittedEvents = new List>(); private readonly IStore store; + private readonly ISemanticLog log; private Guid id; private T snapshot = new T { Version = EtagVersion.Empty }; private IPersistence persistence; @@ -43,20 +45,29 @@ namespace Squidex.Infrastructure.Commands get { return snapshot; } } - protected DomainObjectGrain(IStore store) + protected DomainObjectGrain(IStore store, ISemanticLog log) { Guard.NotNull(store, nameof(store)); + Guard.NotNull(log, nameof(log)); this.store = store; + + this.log = log; } - public override Task OnActivateAsync(Guid key) + public override async Task OnActivateAsync(Guid key) { - id = key; + using (log.MeasureInformation(w => w + .WriteProperty("action", "ActivateDomainObject") + .WriteProperty("doType", GetType().Name) + .WriteProperty("doKey", key.ToString()))) + { + id = key; - persistence = store.WithSnapshotsAndEventSourcing(GetType(), id, ApplySnapshot, ApplyEvent); + persistence = store.WithSnapshotsAndEventSourcing(GetType(), id, ApplySnapshot, ApplyEvent); - return persistence.ReadAsync(); + await persistence.ReadAsync(); + } } public void RaiseEvent(IEvent @event) diff --git a/src/Squidex.Infrastructure/FileExtensions.cs b/src/Squidex.Infrastructure/FileExtensions.cs index 2b67ff008..07f4cc994 100644 --- a/src/Squidex.Infrastructure/FileExtensions.cs +++ b/src/Squidex.Infrastructure/FileExtensions.cs @@ -6,6 +6,7 @@ // ========================================================================== using System; +using System.Globalization; using System.IO; namespace Squidex.Infrastructure @@ -62,7 +63,7 @@ namespace Squidex.Infrastructure u = Extensions.Length - 1; } - return $"{Math.Round(d, 1)} {Extensions[u]}"; + return $"{Math.Round(d, 1).ToString(CultureInfo.InvariantCulture)} {Extensions[u]}"; } } } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppGrainTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppGrainTests.cs index 539d7778d..ae373ecd9 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppGrainTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppGrainTests.cs @@ -17,6 +17,7 @@ using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Domain.Apps.Events.Apps; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Squidex.Shared.Users; using Xunit; @@ -61,7 +62,7 @@ namespace Squidex.Domain.Apps.Entities.Apps { patternId2, new AppPattern("Numbers", "[0-9]*") } }; - sut = new AppGrain(initialPatterns, Store, appProvider, appPlansProvider, appPlansBillingManager, userResolver); + sut = new AppGrain(initialPatterns, Store, A.Dummy(), appProvider, appPlansProvider, appPlansBillingManager, userResolver); sut.OnActivateAsync(Id).Wait(); } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs index cf87d3020..5d8148151 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetCommandMiddlewareTests.cs @@ -16,6 +16,7 @@ using Squidex.Domain.Apps.Entities.Assets.State; using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Tasks; using Xunit; @@ -42,7 +43,7 @@ namespace Squidex.Domain.Apps.Entities.Assets { file = new AssetFile("my-image.png", "image/png", 1024, () => stream); - asset = new AssetGrain(Store); + asset = new AssetGrain(Store, A.Dummy()); asset.OnActivateAsync(Id).Wait(); A.CallTo(() => grainFactory.GetGrain(Id, null)) diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetGrainTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetGrainTests.cs index 81e1fa648..ae0a44f82 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetGrainTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Assets/AssetGrainTests.cs @@ -8,6 +8,7 @@ using System; using System.IO; using System.Threading.Tasks; +using FakeItEasy; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Assets.State; using Squidex.Domain.Apps.Entities.TestHelpers; @@ -15,6 +16,7 @@ using Squidex.Domain.Apps.Events.Assets; using Squidex.Infrastructure; using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Xunit; namespace Squidex.Domain.Apps.Entities.Assets @@ -33,7 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Assets public AssetGrainTests() { - sut = new AssetGrain(Store); + sut = new AssetGrain(Store, A.Dummy()); sut.OnActivateAsync(Id).Wait(); } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs index 4a558d197..11af3cf33 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentGrainTests.cs @@ -25,6 +25,7 @@ using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Domain.Apps.Events.Contents; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Xunit; namespace Squidex.Domain.Apps.Entities.Contents @@ -107,7 +108,7 @@ namespace Squidex.Domain.Apps.Entities.Contents patched = patch.MergeInto(data); - sut = new ContentGrain(Store, appProvider, A.Dummy(), scriptEngine, A.Dummy()); + sut = new ContentGrain(Store, A.Dummy(), appProvider, A.Dummy(), scriptEngine, A.Dummy()); sut.OnActivateAsync(Id).Wait(); } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDequeuerTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDequeuerTests.cs index c7303a074..a8f1bfd1c 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDequeuerTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleDequeuerTests.cs @@ -22,7 +22,7 @@ namespace Squidex.Domain.Apps.Entities.Rules public class RuleDequeuerTests { private readonly IClock clock = A.Fake(); - private readonly ISemanticLog log = A.Fake(); + private readonly ISemanticLog log = A.Dummy(); private readonly IAppProvider appProvider = A.Fake(); private readonly IRuleEventRepository ruleEventRepository = A.Fake(); private readonly Instant now = SystemClock.Instance.GetCurrentInstant(); diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleGrainTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleGrainTests.cs index a5e2bf969..2fa3d6770 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleGrainTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Rules/RuleGrainTests.cs @@ -17,6 +17,7 @@ using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Domain.Apps.Events.Rules; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Xunit; namespace Squidex.Domain.Apps.Entities.Rules @@ -34,7 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Rules public RuleGrainTests() { - sut = new RuleGrain(Store, appProvider); + sut = new RuleGrain(Store, A.Dummy(), appProvider); sut.OnActivateAsync(Id).Wait(); } diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs index 42583b002..2372d527e 100644 --- a/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemaGrainTests.cs @@ -17,6 +17,7 @@ using Squidex.Domain.Apps.Entities.TestHelpers; using Squidex.Domain.Apps.Events.Schemas; using Squidex.Infrastructure; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Xunit; namespace Squidex.Domain.Apps.Entities.Schemas @@ -41,7 +42,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas fieldId = new NamedId(1, fieldName); - sut = new SchemaGrain(Store, appProvider, registry); + sut = new SchemaGrain(Store, A.Dummy(), appProvider, registry); sut.OnActivateAsync(Id).Wait(); } diff --git a/tests/Squidex.Infrastructure.Tests/Commands/DomainObjectGrainTests.cs b/tests/Squidex.Infrastructure.Tests/Commands/DomainObjectGrainTests.cs index 8102f3a93..0a28ef533 100644 --- a/tests/Squidex.Infrastructure.Tests/Commands/DomainObjectGrainTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Commands/DomainObjectGrainTests.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Threading.Tasks; using FakeItEasy; using Squidex.Infrastructure.EventSourcing; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.States; using Squidex.Infrastructure.TestHelpers; @@ -60,7 +61,7 @@ namespace Squidex.Infrastructure.Commands public sealed class MyDomainObject : DomainObjectGrain { public MyDomainObject(IStore store) - : base(store) + : base(store, A.Dummy()) { } diff --git a/tests/Squidex.Infrastructure.Tests/TestHelpers/MyGrain.cs b/tests/Squidex.Infrastructure.Tests/TestHelpers/MyGrain.cs index 4991571e4..6f9c0717c 100644 --- a/tests/Squidex.Infrastructure.Tests/TestHelpers/MyGrain.cs +++ b/tests/Squidex.Infrastructure.Tests/TestHelpers/MyGrain.cs @@ -7,7 +7,9 @@ using System; using System.Threading.Tasks; +using FakeItEasy; using Squidex.Infrastructure.Commands; +using Squidex.Infrastructure.Log; using Squidex.Infrastructure.States; namespace Squidex.Infrastructure.TestHelpers @@ -15,7 +17,7 @@ namespace Squidex.Infrastructure.TestHelpers public class MyGrain : DomainObjectGrain { public MyGrain(IStore store) - : base(store) + : base(store, A.Dummy()) { }