Browse Source

Get total bytes.

pull/525/head
Sebastian 6 years ago
parent
commit
e41a59305b
  1. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/UsageGate.cs
  2. 2
      backend/src/Squidex.Domain.Apps.Entities/Rules/UsageTracking/UsageTrackerGrain.cs
  3. 11
      backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs
  4. 4
      backend/src/Squidex.Infrastructure/UsageTracking/IApiUsageTracker.cs
  5. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/UsageGateTests.cs
  6. 20
      backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs

2
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 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)) if (IsAboutToBeLocked(today, plan.MaxApiCalls, usage) && !HasNotifiedBefore(app.Id))
{ {

2
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) 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; var limit = target.Limits;

11
backend/src/Squidex.Infrastructure/UsageTracking/ApiUsageTracker.cs

@ -23,7 +23,7 @@ namespace Squidex.Infrastructure.UsageTracking
this.usageTracker = usageTracker; this.usageTracker = usageTracker;
} }
public async Task<long> GetMonthCostsAsync(string key, DateTime date) public async Task<long> GetMonthCallsAsync(string key, DateTime date)
{ {
var apiKey = GetKey(key); var apiKey = GetKey(key);
@ -32,6 +32,15 @@ namespace Squidex.Infrastructure.UsageTracking
return counters.GetInt64(CounterTotalCalls); return counters.GetInt64(CounterTotalCalls);
} }
public async Task<long> 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) public Task TrackAsync(DateTime date, string key, string? category, double weight, long elapsedMs, long bytes)
{ {
var apiKey = GetKey(key); var apiKey = GetKey(key);

4
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 TrackAsync(DateTime date, string key, string? category, double weight, long elapsedMs, long bytes);
Task<long> GetMonthCostsAsync(string key, DateTime date); Task<long> GetMonthCallsAsync(string key, DateTime date);
Task<long> GetMonthBytesAsync(string key, DateTime date);
Task<(ApiStatsSummary, Dictionary<string, List<ApiStats>> Details)> QueryAsync(string key, DateTime fromDate, DateTime toDate); Task<(ApiStatsSummary, Dictionary<string, List<ApiStats>> Details)> QueryAsync(string key, DateTime fromDate, DateTime toDate);
} }

2
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) A.CallTo(() => appPlan.BlockingApiCalls)
.ReturnsLazily(x => apiCallsBlocking); .ReturnsLazily(x => apiCallsBlocking);
A.CallTo(() => usageTracker.GetMonthCostsAsync(appId.Id.ToString(), today)) A.CallTo(() => usageTracker.GetMonthCallsAsync(appId.Id.ToString(), today))
.ReturnsLazily(x => Task.FromResult(apiCallsCurrent)); .ReturnsLazily(x => Task.FromResult(apiCallsCurrent));
sut = new UsageGate(appPlansProvider, usageTracker, grainFactory); sut = new UsageGate(appPlansProvider, usageTracker, grainFactory);

20
backend/tests/Squidex.Infrastructure.Tests/UsageTracking/ApiUsageTrackerTests.cs

@ -48,7 +48,7 @@ namespace Squidex.Infrastructure.UsageTracking
} }
[Fact] [Fact]
public async Task Should_query_from_tracker() public async Task Should_query_calls_from_tracker()
{ {
var counters = new Counters var counters = new Counters
{ {
@ -58,11 +58,27 @@ namespace Squidex.Infrastructure.UsageTracking
A.CallTo(() => usageTracker.GetForMonthAsync($"{key}_API", date)) A.CallTo(() => usageTracker.GetForMonthAsync($"{key}_API", date))
.Returns(counters); .Returns(counters);
var result = await sut.GetMonthCostsAsync(key, date); var result = await sut.GetMonthCallsAsync(key, date);
Assert.Equal(4, result); 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] [Fact]
public async Task Should_query_stats_from_tracker() public async Task Should_query_stats_from_tracker()
{ {

Loading…
Cancel
Save