Browse Source

Monthly call usage.

pull/65/head
Sebastian Stehle 9 years ago
parent
commit
7ca6b9c74d
  1. 12
      src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs
  2. 2
      src/Squidex.Infrastructure/UsageTracking/IUsageTracker.cs
  3. 34
      tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs

12
src/Squidex.Infrastructure/UsageTracking/BackgroundUsageTracker.cs

@ -121,5 +121,17 @@ namespace Squidex.Infrastructure.UsageTracking
return result;
}
public async Task<long> GetMonthlyCalls(string key, DateTime date)
{
ThrowIfDisposed();
var dateFrom = new DateTime(date.Year, date.Month, 1);
var dateTo = dateFrom.AddMonths(1).AddDays(-1);
var originalUsages = await usageStore.FindAsync(key, dateFrom, dateTo);
return originalUsages.Sum(x => x.TotalCount);
}
}
}

2
src/Squidex.Infrastructure/UsageTracking/IUsageTracker.cs

@ -16,6 +16,8 @@ namespace Squidex.Infrastructure.UsageTracking
{
Task TrackAsync(string key, long elapsedMs);
Task<long> GetMonthlyCalls(string key, DateTime date);
Task<IReadOnlyList<StoredUsage>> FindAsync(string key, DateTime fromDate, DateTime toDate);
}
}

34
tests/Squidex.Infrastructure.Tests/UsageTracking/BackgroundUsageTrackerTests.cs

@ -43,14 +43,42 @@ namespace Squidex.Infrastructure.UsageTracking
return Assert.ThrowsAsync<ObjectDisposedException>(() => sut.FindAsync("key1", DateTime.Today, DateTime.Today.AddDays(1)));
}
[Fact]
public Task Should_throw_if_querying_montly_usage_on_disposed_object()
{
sut.Dispose();
return Assert.ThrowsAsync<ObjectDisposedException>(() => sut.GetMonthlyCalls("key1", DateTime.Today));
}
[Fact]
public async Task Should_sum_up_when_getting_monthly_calls()
{
var date = new DateTime(2016, 1, 15);
IReadOnlyList<StoredUsage> originalData = new List<StoredUsage>
{
new StoredUsage(date.AddDays(1), 10, 15),
new StoredUsage(date.AddDays(3), 13, 18),
new StoredUsage(date.AddDays(5), 15, 20),
new StoredUsage(date.AddDays(7), 17, 22)
};
usageStore.Setup(x => x.FindAsync("key", new DateTime(2016, 1, 1), new DateTime(2016, 1, 31))).Returns(Task.FromResult(originalData));
var result = await sut.GetMonthlyCalls("key", date);
Assert.Equal(55, result);
}
[Fact]
public async Task Should_fill_missing_days()
{
var dateFrom = DateTime.Today;
var dateTo = DateTime.Today.AddDays(7);
IReadOnlyList<StoredUsage> originalDate = new List<StoredUsage>
IReadOnlyList<StoredUsage> originalData = new List<StoredUsage>
{
new StoredUsage(dateFrom.AddDays(1), 10, 15),
new StoredUsage(dateFrom.AddDays(3), 13, 18),
@ -58,7 +86,7 @@ namespace Squidex.Infrastructure.UsageTracking
new StoredUsage(dateFrom.AddDays(7), 17, 22)
};
usageStore.Setup(x => x.FindAsync("key", dateFrom, dateTo)).Returns(Task.FromResult(originalDate));
usageStore.Setup(x => x.FindAsync("key", dateFrom, dateTo)).Returns(Task.FromResult(originalData));
var result = await sut.FindAsync("key", dateFrom, dateTo);

Loading…
Cancel
Save