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 usage = await apiUsageTracker.GetMonthCostsAsync(appId.ToString(), today);
var usage = await apiUsageTracker.GetMonthCallsAsync(appId.ToString(), today);
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)
{
var costs = await usageTracker.GetMonthCostsAsync(target.AppId.Id.ToString(), today);
var costs = await usageTracker.GetMonthCallsAsync(target.AppId.Id.ToString(), today);
var limit = target.Limits;

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

@ -23,7 +23,7 @@ namespace Squidex.Infrastructure.UsageTracking
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);
@ -32,6 +32,15 @@ namespace Squidex.Infrastructure.UsageTracking
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)
{
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<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);
}

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)
.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);

20
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()
{

Loading…
Cancel
Save