private IReadOnlyCollection<LoadMetricsSummary> GetSummary(string serverName, DateTimeOffset queryOffset, SummaryInterval interval) { var metrics = metricsCache.Get(serverName); if (metrics.Any()) { var summary = metrics .OrderByDescending(m => m.CreatedTimeStamp) .Where(m => m.CreatedTimeStamp >= queryOffset) .GroupBy(g => { if (interval == SummaryInterval.Hourly) return g.CreatedTimeStamp.Hour; else return g.CreatedTimeStamp.Minute; }) .Select(g => { var avgCpuLoad = g.Average(m => m.CpuLoad); var avgRamLoad = g.Average(m => m.RamLoad); var period = g.Key; var periodSummary = new LoadMetricsSummary(interval, avgCpuLoad, avgRamLoad, period); return periodSummary; }).ToList(); return summary; } else return GetEmptySummary(); }
public LoadMetricsSummaryTests() { validMetricsSummary = new LoadMetricsSummary(SummaryInterval.Hourly, 2.45, 15.4, 13); }