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);
 }