Пример #1
0
        public async Task <List <TestSummaryItem> > GetTestRunSummaryWithPriorityAsync()
        {
            using (new PerformanceMeasurementBlock("Get Test Run Summary from TCM", _logger))
            {
                TestResultDetailsParserForRun summaryByRun = null;
                IReadOnlyDictionary <TestOutcomeForPriority, TestResultDetailsParserForPriority>
                testResultDetailsByOutcomeForPriorityGroup = new Dictionary <TestOutcomeForPriority, TestResultDetailsParserForPriority>();

                var tasksToAwait        = new List <Task>();
                var runSummaryFetchTask = Task.Run(async() =>
                {
                    using (new PerformanceMeasurementBlock("Get test summary data by test run", _logger))
                    {
                        var result   = await GetTestResultsDetailsAsync();
                        summaryByRun = new TestResultDetailsParserForRun(result, _logger);
                    }
                });

                tasksToAwait.Add(runSummaryFetchTask);

                if (_emailReportConfig.ReportDataConfiguration.GroupTestSummaryBy == TestResultsGroupingType.Priority)
                {
                    var prioritySummaryFetchTask = Task.Run(async() =>
                    {
                        using (new PerformanceMeasurementBlock("Get test summary data by priority", _logger))
                        {
                            testResultDetailsByOutcomeForPriorityGroup = await GetTestSummaryDataByPriorityAsync();
                        }
                    });
                    tasksToAwait.Add(prioritySummaryFetchTask);
                }

                await Task.WhenAll(tasksToAwait);

                if (summaryByRun == null)
                {
                    throw new EmailReportException("unable to fetch summary data from tcm");
                }

                _logger.LogInformation("parsing data to get Test run ids");

                return(GetSummaryByRun(summaryByRun,
                                       testResultDetailsByOutcomeForPriorityGroup));
            }
        }
Пример #2
0
        /// <summary>
        ///     Merges the tcm summary data grouped by test run, & tcm summary data grouped by priority to create summary object
        /// </summary>
        /// <returns>Returns a Dictionary of Summary item grouped by test run</returns>
        private List <TestSummaryItem> GetSummaryByRun(
            TestResultDetailsParserForRun testResultByRun,
            IReadOnlyDictionary <TestOutcomeForPriority, TestResultDetailsParserForPriority> testResultsForPriorityByOutcome)
        {
            var summaryItemByRun = testResultByRun.GetSummaryItems();

            foreach (var summaryItem in summaryItemByRun)
            {
                var totalCountForTestOutcomeByPriority = new Dictionary <int, Dictionary <TestOutcomeForPriority, int> >();
                summaryItem.TestCountForOutcomeByPriority = totalCountForTestOutcomeByPriority;

                foreach (var supportedTestOutcome in testResultsForPriorityByOutcome.Keys)
                {
                    IReadOnlyDictionary <int, int> resultCountByPriority =
                        testResultsForPriorityByOutcome[supportedTestOutcome].GetTestResultsForRun(
                            int.Parse(summaryItem.Id));

                    foreach (var priority in resultCountByPriority.Keys)
                    {
                        if (!totalCountForTestOutcomeByPriority.ContainsKey(priority))
                        {
                            totalCountForTestOutcomeByPriority[priority] = new Dictionary <TestOutcomeForPriority, int>();
                        }

                        Dictionary <TestOutcomeForPriority, int> testCountByOutcome = totalCountForTestOutcomeByPriority[priority];

                        if (!testCountByOutcome.ContainsKey(supportedTestOutcome))
                        {
                            testCountByOutcome[supportedTestOutcome] = 0;
                        }

                        testCountByOutcome[supportedTestOutcome] += resultCountByPriority[priority];
                    }
                }
            }

            return(summaryItemByRun);
        }