private string GetExceptionJson() { var resultsList = new List <TestExceptionReportItem>(); foreach (var key in _statusService.Results.Keys) { var results = new TestDurationReport(); results.Name = key; var events = _statusService.Results[key].Where(s => s.Status == ResultStatusType.Failed) .OrderByDescending(s => s.StartDate) .Take(50); var reportItems = events.Select(e => new TestExceptionReportItem() { TestName = key , StartDate = e.StartDate , ResponseCode = e.StatusCode == 0 ? "" : e.StatusCode.ToString() , Message = e.Exception.Message , Duration = e.Duration.Value }); resultsList.AddRange(reportItems); } var report = new TestExceptionReport(); report.Exceptions = resultsList.OrderByDescending(s => s.StartDate).Take(50); return(JsonConvert.SerializeObject(report)); }
private string GetDurationJson() { var resultsList = new List <TestDurationReport>(); foreach (var key in _statusService.Results.Keys) { var results = new TestDurationReport(); results.Name = key; var events = _statusService.Results[key].Where(r => r.Duration.HasValue && r.StartDate > DateTime.Now.AddHours(-1)).ToList();; var rows = new List <TestDurationReportItem>(); foreach (var group in events.GroupBy(g => g.StartDate.ToString("HH:mm"))) { var item = new TestDurationReportItem() { AverageDuration = group.Average(g => g.Duration.Value), SuccessfulRequests = group.Where(g => g.Status == ResultStatusType.Success).Count(), FailedRequests = group.Where(g => g.Status == ResultStatusType.Failed).Count(), EventTime = group.Key }; rows.Add(item); } results.Items = rows; if (rows.Count > 0 && rows.Count < 60) { var minDate = events.Min(e => e.StartDate); var paddedRows = new List <TestDurationReportItem>(); for (int i = 60 - rows.Count; i > 0; i--) { paddedRows.Add(new TestDurationReportItem() { EventTime = minDate.AddMinutes(-1 - i).ToString("HH:mm") }); } paddedRows.AddRange(rows.OrderBy(r => r.EventTime)); results.Items = paddedRows; } resultsList.Add(results); } return(JsonConvert.SerializeObject(resultsList)); }