private RequestAnalyzeModel CalculateNodeTimeSteps(DateTime from, TimeSpan span, IEnumerable <RequestAnalyzeModel> requests) { DateTime toTime = from + span; RequestAnalyzeModel result = new RequestAnalyzeModel(); var requestsInTime = requests.Where(x => x.FromTime >= from && x.ToTime <= toTime).ToList(); result.FromTime = from; result.ToTime = toTime; result.Request100Count = requestsInTime.Sum(x => x.Request100Count); result.Request200Count = requestsInTime.Sum(x => x.Request200Count); result.Request300Count = requestsInTime.Sum(x => x.Request300Count); result.Request400Count = requestsInTime.Sum(x => x.Request400Count); result.Request500Count = requestsInTime.Sum(x => x.Request500Count); result.Request900Count = requestsInTime.Sum(x => x.Request900Count); result.RequestCount = requestsInTime.Sum(x => x.RequestCount); result.SlowestRequests = requestsInTime.SelectMany(x => x.SlowestRequests).OrderByDescending(x => x.End - x.Start).Take(10).ToList(); result.ErrorRequests = requestsInTime.SelectMany(x => x.ErrorRequests).Take(5).ToList(); return(result); }
private RequestAnalyzeModel CalculateLeaveTimeSteps(DateTime from, TimeSpan span, List <WebRequest> webRequests) { DateTime toTime = from + span; var requestsInTime = webRequests.Where(x => x.Start >= from && x.Start <= toTime); RequestAnalyzeModel result = new RequestAnalyzeModel { FromTime = @from, ToTime = toTime, Request100Count = requestsInTime.Count(x => x.StatusCode >= 0 && x.StatusCode <= 199), Request200Count = requestsInTime.Count(x => x.StatusCode >= 200 && x.StatusCode <= 299), Request300Count = requestsInTime.Count(x => x.StatusCode >= 300 && x.StatusCode <= 399), Request400Count = requestsInTime.Count(x => x.StatusCode >= 400 && x.StatusCode <= 499), Request500Count = requestsInTime.Count(x => x.StatusCode >= 500 && x.StatusCode <= 599), Request900Count = requestsInTime.Count(x => x.StatusCode >= 600), RequestCount = requestsInTime.Count(), ErrorRequests = requestsInTime.Where(x => !x.IsStatusCodeSucceded).Take(10).ToList(), SlowestRequests = requestsInTime.OrderByDescending(x => x.End - x.Start).Take(10).ToList(), }; return(result); }