Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
 public Task <IReadOnlyDictionary <string, IReadOnlyList <DateUsage> > > QueryAsync(string key, DateTime fromDate, DateTime toDate)
 {
     return(inner.QueryAsync(key, fromDate, toDate));
 }
Ejemplo n.º 9
0
        public Task <IReadOnlyDictionary <string, IReadOnlyList <DateUsage> > > QueryAsync(string key, DateTime fromDate, DateTime toDate)
        {
            Guard.NotNull(key, nameof(key));

            return(inner.QueryAsync(key, fromDate, toDate));
        }
Ejemplo n.º 10
0
        public Task <Dictionary <string, List <(DateTime, Counters)> > > QueryAsync(string key, DateTime fromDate, DateTime toDate)
        {
            Guard.NotNull(key);

            return(inner.QueryAsync(key, fromDate, toDate));
        }
Ejemplo n.º 11
0
 public Task <IReadOnlyList <StoredUsage> > QueryAsync(string key, DateTime fromDate, DateTime toDate)
 {
     return(inner.QueryAsync(key, fromDate, toDate));
 }