public async Task Should_forward_query_call() { var dateFrom = date; var dateTo = dateFrom.AddDays(10); await sut.QueryAsync(key, dateFrom, dateTo); A.CallTo(() => inner.QueryAsync(key, dateFrom, dateTo)) .MustHaveHappened(); }
public async Task Should_forward_query_call() { await sut.QueryAsync(key, DateTime.MaxValue, DateTime.MinValue); A.CallTo(() => inner.QueryAsync(key, DateTime.MaxValue, DateTime.MinValue)) .MustHaveHappened(); }
public Task <Dictionary <string, List <(DateTime, Counters)> > > QueryAsync(string key, DateTime fromDate, DateTime toDate, CancellationToken ct = default) { Guard.NotNull(key, nameof(key)); return(inner.QueryAsync(key, fromDate, toDate, ct)); }
public async Task <IActionResult> GetUsages(string app, DateTime fromDate, DateTime toDate) { if (fromDate > toDate && (toDate - fromDate).TotalDays > 100) { return(BadRequest()); } var entities = await usageTracker.QueryAsync(AppId.ToString(), fromDate.Date, toDate.Date); var response = entities.ToDictionary(x => x.Key, x => x.Value.Select(CallsUsageDto.FromUsage).ToArray()); return(Ok(response)); }
public async Task <(ApiStatsSummary, Dictionary <string, List <ApiStats> > Details)> QueryAsync(string key, DateTime fromDate, DateTime toDate, CancellationToken ct = default) { var apiKey = GetKey(key); var queries = await usageTracker.QueryAsync(apiKey, fromDate, toDate, ct); var details = new Dictionary <string, List <ApiStats> >(); var summaryBytes = 0L; var summaryCalls = 0L; var summaryElapsed = 0L; foreach (var(category, usages) in queries) { var resultByCategory = new List <ApiStats>(); foreach (var(date, counters) in usages) { var dateBytes = counters.GetInt64(CounterTotalBytes); var dateCalls = counters.GetInt64(CounterTotalCalls); var dateElapsed = counters.GetInt64(CounterTotalElapsedMs); var dateElapsedAvg = CalculateAverage(dateCalls, dateElapsed); resultByCategory.Add(new ApiStats(date, dateCalls, dateElapsedAvg, dateBytes)); summaryBytes += dateBytes; summaryCalls += dateCalls; summaryElapsed += dateElapsed; } details[category] = resultByCategory; } var summaryElapsedAvg = CalculateAverage(summaryCalls, summaryElapsed); var monthStats = await usageTracker.GetForMonthAsync(apiKey, DateTime.Today, null, ct); var summary = new ApiStatsSummary( summaryElapsedAvg, summaryCalls, summaryBytes, monthStats.GetInt64(CounterTotalCalls), monthStats.GetInt64(CounterTotalBytes)); return(summary, details); }
public async Task <IReadOnlyList <AssetStats> > QueryAsync(DomainId appId, DateTime fromDate, DateTime toDate) { var enriched = new List <AssetStats>(); var usages = await usageTracker.QueryAsync(GetKey(appId), fromDate, toDate); if (usages.TryGetValue("*", out var byCategory1)) { AddCounters(enriched, byCategory1); } else if (usages.TryGetValue("Default", out var byCategory2)) { AddCounters(enriched, byCategory2); } return(enriched); }
public async Task <IActionResult> GetUsages(string app, DateTime fromDate, DateTime toDate) { if (fromDate > toDate && (toDate - fromDate).TotalDays > 100) { return(BadRequest()); } var entities = await usageTracker.QueryAsync(App.Id.ToString(), fromDate.Date, toDate.Date); var models = entities.Select(x => { var averageMs = x.TotalCount == 0 ? 0 : x.TotalElapsedMs / x.TotalCount; return(new CallsUsageDto { Date = x.Date, Count = x.TotalCount, AverageMs = averageMs }); }).ToList(); return(Ok(models)); }
public Task <IReadOnlyDictionary <string, IReadOnlyList <DateUsage> > > QueryAsync(string key, DateTime fromDate, DateTime toDate) { return(inner.QueryAsync(key, fromDate, toDate)); }
public Task <IReadOnlyDictionary <string, IReadOnlyList <DateUsage> > > QueryAsync(string key, DateTime fromDate, DateTime toDate) { Guard.NotNull(key, nameof(key)); return(inner.QueryAsync(key, fromDate, toDate)); }
public Task <Dictionary <string, List <(DateTime, Counters)> > > QueryAsync(string key, DateTime fromDate, DateTime toDate) { Guard.NotNull(key); return(inner.QueryAsync(key, fromDate, toDate)); }
public Task <IReadOnlyList <StoredUsage> > QueryAsync(string key, DateTime fromDate, DateTime toDate) { return(inner.QueryAsync(key, fromDate, toDate)); }