public void Process(CombinedWorkerThreadResult wtResult) { Seconds = wtResult.Seconds; StatusCodes = wtResult.StatusCodes; Exceptions = wtResult.Exceptions.Values.ToList(); var items = wtResult.Seconds.Select(r => r.Value).DefaultIfEmpty(new Second()).ToList(); Count = items.Sum(s => s.Count); Errors = items.Sum(s => s.Errors); RequestsPerSecond = Count / (Elapsed.TotalMilliseconds / 1000); BytesPrSecond = items.Sum(s => s.Bytes) / (Elapsed.TotalMilliseconds / 1000); var responseTimes = GetResponseTimes(wtResult.ResponseTimes); if (!responseTimes.Any()) { return; } Median = responseTimes.GetMedian(); StdDev = responseTimes.GetStdDev(); Min = responseTimes.First(); Max = responseTimes.Last(); P99 = responseTimes[(int)(responseTimes.Length * 0.99)]; P95 = responseTimes[(int)(responseTimes.Length * 0.95)]; P50 = responseTimes[(int)(responseTimes.Length / 2)]; Histogram = GenerateHistogram(responseTimes); }
internal void Process(CombinedWorkerThreadResult wtResult) { Seconds = wtResult.Seconds; var items = wtResult.Seconds.Select(r => r.Value).DefaultIfEmpty(new Second(0)).ToList(); Count = items.Sum(s => s.Count); RequestsPerSecond = Count / (Elapsed.TotalMilliseconds / 1000); BytesPrSecond = items.Sum(s => s.Bytes) / (Elapsed.TotalMilliseconds / 1000); foreach (var statusCode in items.SelectMany(s => s.StatusCodes)) { if (StatusCodes.ContainsKey(statusCode.Key)) { StatusCodes[statusCode.Key] += statusCode.Value; } else { StatusCodes.Add(statusCode.Key, statusCode.Value); } } foreach (var exception in items.SelectMany(s => s.Exceptions)) { if (Exceptions.ContainsKey(exception.Key)) { Exceptions[exception.Key] += exception.Value; } else { Exceptions.Add(exception.Key, exception.Value); } } Errors = StatusCodes.Where(s => s.Key >= 400).Sum(s => s.Value) + Exceptions.Sum(e => e.Value); var responseTimes = GetResponseTimes(wtResult.ResponseTimes); if (!responseTimes.Any()) { return; } Median = responseTimes.GetMedian(); StdDev = responseTimes.GetStdDev(); Min = responseTimes.First(); Max = responseTimes.Last(); Histogram = GenerateHistogram(responseTimes); }
internal void Process(CombinedWorkerThreadResult wtResult) { Seconds = wtResult.Seconds; var items = wtResult.Seconds.Select(r => r.Value).DefaultIfEmpty(new Second(0)).ToList(); Count = items.Sum(s => s.Count); RequestsPerSecond = Count / (Elapsed.TotalMilliseconds / 1000); BytesPrSecond = items.Sum(s => s.Bytes) / (Elapsed.TotalMilliseconds / 1000); foreach (var statusCode in items.SelectMany(s => s.StatusCodes)) { if (StatusCodes.ContainsKey(statusCode.Key)) StatusCodes[statusCode.Key] += statusCode.Value; else StatusCodes.Add(statusCode.Key, statusCode.Value); } foreach (var exception in items.SelectMany(s => s.Exceptions)) { if (Exceptions.ContainsKey(exception.Key)) Exceptions[exception.Key] += exception.Value; else Exceptions.Add(exception.Key, exception.Value); } Errors = StatusCodes.Where(s => s.Key >= 400).Sum(s => s.Value) + Exceptions.Sum(e => e.Value); var responseTimes = GetResponseTimes(wtResult.ResponseTimes); if (!responseTimes.Any()) return; // Median = responseTimes.GetMedian(); // StdDev = responseTimes.GetStdDev(); Min = responseTimes.First(); Max = responseTimes.Last(); Histogram = GenerateHistogram(responseTimes); }