Exemple #1
0
        public async Task <bool> HasPreviousReleaseGotSameFailuresAsync(AbstractReport emailReportDto, PipelineConfiguration config, bool hasTestFailures, bool hasFailedTasks)
        {
            var hasPrevGotSameFailures = emailReportDto.HasPrevGotSameFailures();

            if (hasPrevGotSameFailures.HasValue)
            {
                return(hasPrevGotSameFailures.Value);
            }

            bool hasPrevFailedTasks = emailReportDto.HasPrevFailedTasks();

            if (emailReportDto.Summary == null)
            {
                return(false);
            }

            if (hasTestFailures)
            {
                var prevConfig = emailReportDto.GetPrevConfig(config);
                var lastCompletedTestResultSummary = await _tcmApiHelper.QueryTestResultsReportAsync(prevConfig);

                var failedInCurrent = GetFailureCountFromSummary(emailReportDto.Summary);
                var failedinPrev    = GetFailureCountFromSummary(lastCompletedTestResultSummary);

                // Threshold is 10 to decide whether they are same failures
                _logger.LogInformation($"Current Failures Found: '{failedInCurrent}'.");
                _logger.LogInformation($"Previous Failures Found: '{failedinPrev}'.");

                var hasSameFailures = failedInCurrent == failedinPrev;
                // No point in moving ahead if number of failures is different
                if (hasSameFailures)
                {
                    var currFailedTestCaseRefIds = await FetchFailedTestCaseIdsAsync(config);

                    var prevFailedTestCaseRefIds = await FetchFailedTestCaseIdsAsync(prevConfig);

                    var nonInteresection = currFailedTestCaseRefIds.Except(prevFailedTestCaseRefIds).Union(prevFailedTestCaseRefIds.Except(currFailedTestCaseRefIds));

                    if (nonInteresection.Any())
                    {
                        _logger.LogInformation($"Difference in Failed Test Reference Ids found between current - '{string.Join(",", nonInteresection.ToArray())}'.");
                        hasSameFailures = false;
                    }
                    else
                    {
                        _logger.LogInformation($"Failed Test Reference Ids match. No new failures found.");
                        hasSameFailures = true;
                    }
                }

                return(hasSameFailures);
            }
            else if (hasFailedTasks && hasPrevFailedTasks)
            {
                return(emailReportDto.ArePrevFailedTasksSame());
            }

            return(false);
        }
        public async Task AddReportDataAsync(AbstractReport reportData)
        {
            using (new PerformanceMeasurementBlock("In TestResultsDataProvider", _logger))
            {
                // This is to make sure the failing since information is computed before we fetch test results
                await _tcmApiHelper.QueryTestResultsReportAsync();

                _logger.LogInformation("Fetched test results data");
                await GetFilteredTestResultsAsync(reportData);
            }
        }