예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }