From e41a59305b6b19ac5650f19933c9480fb7b44584 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 24 May 2020 15:52:42 +0200 Subject: [PATCH] Get total bytes. --- .../Apps/Plans/UsageGate.cs | 2 +- .../Rules/UsageTracking/UsageTrackerGrain.cs | 2 +- .../UsageTracking/ApiUsageTracker.cs | 11 +++++++++- .../UsageTracking/IApiUsageTracker.cs | 4 +++- .../Apps/Plans/UsageGateTests.cs | 2 +- .../UsageTracking/ApiUsageTrackerTests.cs | 20 +++++++++++++++++-- 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs index fd2f7ce42..3418bf0f6 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs @@ -50,7 +50,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans { var appId = app.Id; - var usage = await apiUsageTracker.GetMonthCostsAsync(appId.ToString(), today); + var usage = await apiUsageTracker.GetMonthCallsAsync(appId.ToString(), today); if (IsAboutToBeLocked(today, plan.MaxApiCalls, usage) && !HasNotifiedBefore(app.Id)) { diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerGrain.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerGrain.cs index 8edaf0882..dd63d0d45 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerGrain.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerGrain.cs @@ -83,7 +83,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.UsageTracking if (!target.Triggered.HasValue || target.Triggered < from) { - var costs = await usageTracker.GetMonthCostsAsync(target.AppId.Id.ToString(), today); + var costs = await usageTracker.GetMonthCallsAsync(target.AppId.Id.ToString(), today); var limit = target.Limits; diff --git a/backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs b/backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs index 727655a6a..d475fa3c0 100644 --- a/backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs +++ b/backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs @@ -23,7 +23,7 @@ namespace Squidex.Infrastructure.UsageTracking this.usageTracker = usageTracker; } - public async Task GetMonthCostsAsync(string key, DateTime date) + public async Task GetMonthCallsAsync(string key, DateTime date) { var apiKey = GetKey(key); @@ -32,6 +32,15 @@ namespace Squidex.Infrastructure.UsageTracking return counters.GetInt64(CounterTotalCalls); } + public async Task GetMonthBytesAsync(string key, DateTime date) + { + var apiKey = GetKey(key); + + var counters = await usageTracker.GetForMonthAsync(apiKey, date); + + return counters.GetInt64(CounterTotalBytes); + } + public Task TrackAsync(DateTime date, string key, string? category, double weight, long elapsedMs, long bytes) { var apiKey = GetKey(key); diff --git a/backend/src/Squidex.Infrastructure/UsageTracking/IApiUsageTracker.cs b/backend/src/Squidex.Infrastructure/UsageTracking/IApiUsageTracker.cs index 6c31bd099..0d960eb1f 100644 --- a/backend/src/Squidex.Infrastructure/UsageTracking/IApiUsageTracker.cs +++ b/backend/src/Squidex.Infrastructure/UsageTracking/IApiUsageTracker.cs @@ -15,7 +15,9 @@ namespace Squidex.Infrastructure.UsageTracking { Task TrackAsync(DateTime date, string key, string? category, double weight, long elapsedMs, long bytes); - Task GetMonthCostsAsync(string key, DateTime date); + Task GetMonthCallsAsync(string key, DateTime date); + + Task GetMonthBytesAsync(string key, DateTime date); Task<(ApiStatsSummary, Dictionary> Details)> QueryAsync(string key, DateTime fromDate, DateTime toDate); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/UsageGateTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/UsageGateTests.cs index 968dc7e5e..34fc2c65f 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/UsageGateTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/UsageGateTests.cs @@ -51,7 +51,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans A.CallTo(() => appPlan.BlockingApiCalls) .ReturnsLazily(x => apiCallsBlocking); - A.CallTo(() => usageTracker.GetMonthCostsAsync(appId.Id.ToString(), today)) + A.CallTo(() => usageTracker.GetMonthCallsAsync(appId.Id.ToString(), today)) .ReturnsLazily(x => Task.FromResult(apiCallsCurrent)); sut = new UsageGate(appPlansProvider, usageTracker, grainFactory); diff --git a/backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs b/backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs index 932816305..7e33e731f 100644 --- a/backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs +++ b/backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs @@ -48,7 +48,7 @@ namespace Squidex.Infrastructure.UsageTracking } [Fact] - public async Task Should_query_from_tracker() + public async Task Should_query_calls_from_tracker() { var counters = new Counters { @@ -58,11 +58,27 @@ namespace Squidex.Infrastructure.UsageTracking A.CallTo(() => usageTracker.GetForMonthAsync($"{key}_API", date)) .Returns(counters); - var result = await sut.GetMonthCostsAsync(key, date); + var result = await sut.GetMonthCallsAsync(key, date); Assert.Equal(4, result); } + [Fact] + public async Task Should_query_bytes_from_tracker() + { + var counters = new Counters + { + [ApiUsageTracker.CounterTotalBytes] = 14 + }; + + A.CallTo(() => usageTracker.GetForMonthAsync($"{key}_API", date)) + .Returns(counters); + + var result = await sut.GetMonthBytesAsync(key, date); + + Assert.Equal(14, result); + } + [Fact] public async Task Should_query_stats_from_tracker() {