From 9ed42bb6ab86818bfd2b94f3b3221fd07efaf4eb Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sun, 6 Aug 2017 20:18:32 +0200 Subject: [PATCH] Do not track immediately. --- .../UsageTracking/BackgroundUsageTracker.cs | 21 ++------------- .../UsageTracking/Usage.cs | 27 +++++++++++++++++++ .../BackgroundUsageTrackerTests.cs | 3 --- 3 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 src/Squidex.Infrastructure/UsageTracking/Usage.cs diff --git a/src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs b/src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs index 6cd3667a5..043232ff6 100644 --- a/src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs +++ b/src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs @@ -20,29 +20,12 @@ namespace Squidex.Infrastructure.UsageTracking { public sealed class BackgroundUsageTracker : DisposableObjectBase, IUsageTracker { + private const int Intervall = 60 * 1000; private readonly IUsageStore usageStore; private readonly ISemanticLog log; private readonly CompletionTimer timer; private ConcurrentDictionary usages = new ConcurrentDictionary(); - public sealed class Usage - { - public readonly double Count; - public readonly double ElapsedMs; - - public Usage(double elapsed, double count) - { - ElapsedMs = elapsed; - - Count = count; - } - - public Usage Add(double elapsed, double weight) - { - return new Usage(ElapsedMs + elapsed, Count + weight); - } - } - public BackgroundUsageTracker(IUsageStore usageStore, ISemanticLog log) { Guard.NotNull(usageStore, nameof(usageStore)); @@ -52,7 +35,7 @@ namespace Squidex.Infrastructure.UsageTracking this.log = log; - timer = new CompletionTimer(60 * 1000, ct => TrackAsync()); + timer = new CompletionTimer(Intervall, ct => TrackAsync(), Intervall); } protected override void DisposeObject(bool disposing) diff --git a/src/Squidex.Infrastructure/UsageTracking/Usage.cs b/src/Squidex.Infrastructure/UsageTracking/Usage.cs new file mode 100644 index 000000000..9a665be7b --- /dev/null +++ b/src/Squidex.Infrastructure/UsageTracking/Usage.cs @@ -0,0 +1,27 @@ +// ========================================================================== +// Usage.cs +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex Group +// All rights reserved. +// ========================================================================== +namespace Squidex.Infrastructure.UsageTracking +{ + public sealed class Usage + { + public readonly double Count; + public readonly double ElapsedMs; + + public Usage(double elapsed, double count) + { + ElapsedMs = elapsed; + + Count = count; + } + + public Usage Add(double elapsed, double weight) + { + return new Usage(ElapsedMs + elapsed, Count + weight); + } + } +} diff --git a/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs b/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs index aac4c9f8b..af1e3f5ad 100644 --- a/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs @@ -142,9 +142,6 @@ namespace Squidex.Infrastructure.UsageTracking await sut.TrackAsync("key3", 0.5, 6000); sut.Next(); - - await Task.Delay(100); - sut.Dispose(); A.CallTo(() => usageStore.TrackUsagesAsync(today, "key1", 1.0, 1000)).MustHaveHappened();