public async Task <List <MetricResultViewModel> > GetErrorsResultsRuntime() { var from = DateTime.Now.AddDays(-1); var to = DateTime.Now; List <List <MetricResultViewModel> > metricResultViewModelsAll = new List <List <MetricResultViewModel> >(); using (FlashTunaDbContext db = new FlashTunaDbContext()) { var globalGroupedMetricResults = await db.ErrorResults.Where(o => (o.TimePoint >= from) || (o.TimePoint <= to)) .ToListAsync(); List <MetricResultViewModel> metricResultViewModels = new List <MetricResultViewModel>(); foreach (var groupedMetricResult in globalGroupedMetricResults) { var metricResult = new MetricResultViewModel() { ClassName = groupedMetricResult.ClassName, StartPoint = groupedMetricResult.TimePoint, EndPoint = groupedMetricResult.TimePoint, MethodName = groupedMetricResult.MethodName, Tag = groupedMetricResult.Tag }; metricResultViewModels.Add(metricResult); } return(metricResultViewModels); } }
public async Task <int> AnalyzeProblemsCount() { var from = DateTime.Now.AddDays(-1); var to = DateTime.Now; List <List <MetricResultViewModel> > metricResultViewModelsAll = new List <List <MetricResultViewModel> >(); using (FlashTunaDbContext db = new FlashTunaDbContext()) { var globalGroupedMetricResults = await db.OperationMetricResults.Where(o => (o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Started && o.TimePoint >= from) || (o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Stopped && o.TimePoint <= to)) .GroupBy(x => x.MethodName) .ToListAsync(); foreach (var methodGroupedMetricResult in globalGroupedMetricResults) { List <MetricResultViewModel> metricResultViewModels = new List <MetricResultViewModel>(); foreach (var groupedMetricResult in methodGroupedMetricResult.GroupBy(x => x.CallId)) { var start = groupedMetricResult.OrderBy(x => x.MetricResultStatus).First(); var end = groupedMetricResult.OrderBy(x => x.MetricResultStatus).Last(); if (start == end) { continue; } var metricResult = new MetricResultViewModel() { ClassName = start.ClassName, StartPoint = start.TimePoint, EndPoint = end.TimePoint, Id = start.CallId, MethodName = start.MethodName, Milliseconds = (end.TimePoint.TimeOfDay - start.TimePoint.TimeOfDay).Milliseconds, ModuleName = start.ModuleName, Tag = start.Tag }; metricResultViewModels.Add(metricResult); } metricResultViewModelsAll.Add( metricResultViewModels.OrderBy(x => x.StartPoint).ToList() ); } } int problemsCount = 0; foreach (var result in metricResultViewModelsAll) { var timings = result.Select(x => x.Milliseconds).OrderBy(x => x).ToArray(); var isProblematic = chechMethodProblem(timings); if (isProblematic) { problemsCount++; } } return(problemsCount); }
public async Task <List <List <MetricResultViewModel> > > GetResultsRuntime() { var from = DateTime.Now.AddDays(-1); var to = DateTime.Now; List <List <MetricResultViewModel> > metricResultViewModelsAll = new List <List <MetricResultViewModel> >(); using (FlashTunaDbContext db = new FlashTunaDbContext()) { var globalGroupedMetricResults = await db.OperationMetricResults.Where(o => (o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Started && o.TimePoint >= from) || (o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Stopped && o.TimePoint <= to)) .GroupBy(x => x.MethodName) .ToListAsync(); foreach (var methodGroupedMetricResult in globalGroupedMetricResults) { List <MetricResultViewModel> metricResultViewModels = new List <MetricResultViewModel>(); foreach (var groupedMetricResult in methodGroupedMetricResult.GroupBy(x => x.CallId)) { var start = groupedMetricResult.OrderBy(x => x.MetricResultStatus).First(); var end = groupedMetricResult.OrderBy(x => x.MetricResultStatus).Last(); if (start == end) { continue; } var metricResult = new MetricResultViewModel() { ClassName = start.ClassName, StartPoint = start.TimePoint, EndPoint = end.TimePoint, Id = start.CallId, MethodName = start.Tag != "Operation"? start.Tag + start.MethodName: start.MethodName, Milliseconds = (end.TimePoint.TimeOfDay - start.TimePoint.TimeOfDay).Milliseconds, ModuleName = start.ModuleName, Tag = start.Tag }; metricResultViewModels.Add(metricResult); } metricResultViewModelsAll.Add( metricResultViewModels.OrderBy(x => x.StartPoint).ToList() ); } } return(metricResultViewModelsAll); }
public async Task <List <MetricResultViewModel> > GetResultsByPeriod(DateTime from, DateTime to, string methodName) { List <MetricResultViewModel> metricResultViewModels = new List <MetricResultViewModel>(); using (FlashTunaDbContext db = new FlashTunaDbContext()) { var groupedMetricsResults = await db.OperationMetricResults .Where(o => o.MethodName == methodName && ((o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Started && o.TimePoint >= from) || (o.MetricResultStatus == (int)Common.Metric.MetricResultStatus.Stopped && o.TimePoint <= to))) .GroupBy(x => x.CallId) .ToListAsync(); foreach (var groupedMetricResult in groupedMetricsResults) { var start = groupedMetricResult.OrderBy(x => x.MetricResultStatus).First(); var end = groupedMetricResult.OrderBy(x => x.MetricResultStatus).Last(); if (start == end) { continue; } var metricResult = new MetricResultViewModel() { ClassName = start.ClassName, StartPoint = start.TimePoint, EndPoint = end.TimePoint, Id = start.CallId, MethodName = start.MethodName, Milliseconds = (end.TimePoint.TimeOfDay - start.TimePoint.TimeOfDay).Milliseconds, ModuleName = start.ModuleName, Tag = start.Tag }; metricResultViewModels.Add(metricResult); } } return(metricResultViewModels.OrderBy(x => x.StartPoint).ToList()); }