protected void CalculateLastXBuildsStats(int buildsInGroup, LastXBuildStatType lastXBuildStatType) { var byBuildNumber = GetResultsOrderedByBuildNumber().ToList(); LastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType).OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); byBuildNumber = GetResultsOrderedByBuildNumber(FlytApplication.BV).ToList(); BVLastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType) .OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); byBuildNumber = GetResultsOrderedByBuildNumber(FlytApplication.BVV).ToList(); BVVLastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType) .OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); byBuildNumber = GetResultsOrderedByBuildNumber(FlytApplication.CAR).ToList(); CARLastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType) .OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); byBuildNumber = GetResultsOrderedByBuildNumber(FlytApplication.PPT).ToList(); PPTLastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType) .OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); byBuildNumber = GetResultsOrderedByBuildNumber(FlytApplication.SCC).ToList(); SCCLastXBuildsDict = CreateLastXBuildDictionary(byBuildNumber, buildsInGroup, lastXBuildStatType) .OrderByDescending(x => x.Key) .ToDictionary(x => x.Key, y => y.Value); }
private Dictionary <int, LastXBuildsStat> CreateLastXBuildDictionary(List <IGrouping <int, TestResultViewModel> > byBuildGrouping, int buildsInGroup, LastXBuildStatType lastXBuildStatType) { var lastXBuildsDict = new Dictionary <int, LastXBuildsStat>(); if (byBuildGrouping.Count == 0) { return(lastXBuildsDict); } if (byBuildGrouping.Count() >= buildsInGroup) { for (int i = 0; i <= byBuildGrouping.Count() - buildsInGroup; i++) { var take = byBuildGrouping.Skip(i).Take(buildsInGroup).ToList(); int buildNumber = take.First().Key; lastXBuildsDict.TryAdd(buildNumber, new LastXBuildsStat(take, lastXBuildStatType)); } } else { int buildNumber = byBuildGrouping.First().Key; var take = byBuildGrouping.Take(Math.Min(buildsInGroup, byBuildGrouping.Count())); lastXBuildsDict.TryAdd(buildNumber, new LastXBuildsStat(take, lastXBuildStatType)); } return(lastXBuildsDict); }
public LastXBuildsStat(IEnumerable <IGrouping <int, TestResultViewModel> > buildsGroup, LastXBuildStatType lastXBuildStatType) { Builds = buildsGroup; int failed = 0; int builds = 0; Builds.ToList().ForEach(results => { foreach (var testResult in results) { if (lastXBuildStatType == LastXBuildStatType.Failed) { failed += testResult.IsPassed ? 0 : 1; } else if (lastXBuildStatType == LastXBuildStatType.SeleniumGridError) { failed += testResult.IsSeleniumGridError ? 1 : 0; } } builds += results.Count(); }); TotalBuilds = builds; TotalFailed = failed; FailureRate = (int)(builds > 0 ? Decimal.Divide(failed, builds) * 100 : 0); }