示例#1
0
        public async Task<WatcherStatsDto> GetStatsAsync(GetWatcherStats query)
        {
            var watcher = await GetAsync(query.OrganizationId, query.WardenId, query.WatcherName);
            if (watcher == null)
                return null;

            var iterations = await _database.WardenIterations()
               .GetForWatcherAsync(query.OrganizationId, query.WardenId, query.WatcherName);
            var results = iterations.SelectMany(x => x.Results)
                .Select(x => x.WatcherCheckResult)
                .Where(x => x.Watcher.Name.EqualsCaseInvariant(query.WatcherName))
                .ToList();
            var stats = _statsCalculator.Calculate(results);
            Logger.Trace($"Statistics for watcher {watcher.Name} for Warden: '{query.WardenId}' " +
                         $"in organization: '{query.OrganizationId}' were created.");

            return new WatcherStatsDto
            {
                Name = watcher.Name,
                Type = watcher.Type,
                TotalUptime = stats.TotalUptime,
                TotalDowntime = stats.TotalDowntime,
                TotalChecks = stats.TotalResults,
                TotalValidChecks = stats.TotalValidResults,
                TotalInvalidChecks = stats.TotalInvalidResults
            };
        }
示例#2
0
        public async Task <WatcherStatsDto> GetStatsAsync(GetWatcherStats query)
        {
            var watcher = await GetAsync(query.OrganizationId, query.WardenId, query.WatcherName);

            if (watcher == null)
            {
                return(null);
            }

            var iterations = await _database.WardenIterations()
                             .GetForWatcherAsync(query.OrganizationId, query.WardenId, query.WatcherName);

            var results = iterations.SelectMany(x => x.Results)
                          .Select(x => x.WatcherCheckResult)
                          .Where(x => x.Watcher.Name.EqualsCaseInvariant(query.WatcherName))
                          .ToList();
            var stats = _statsCalculator.Calculate(results);

            Logger.Trace($"Statistics for watcher {watcher.Name} for Warden: '{query.WardenId}' " +
                         $"in organization: '{query.OrganizationId}' were created.");

            return(new WatcherStatsDto
            {
                Name = watcher.Name,
                Type = watcher.Type,
                TotalUptime = stats.TotalUptime,
                TotalDowntime = stats.TotalDowntime,
                TotalChecks = stats.TotalResults,
                TotalValidChecks = stats.TotalValidResults,
                TotalInvalidChecks = stats.TotalInvalidResults
            });
        }