示例#1
0
 private void StoreTestRunSummaryInEnvVar(TestRunSummary testRunSummary)
 {
     // Storing testrun summary in environment variable, which will be read by PublishPipelineMetadataTask and publish to evidence store.
     if (_calculateTestRunSummary)
     {
         TestResultUtils.StoreTestRunSummaryInEnvVar(_executionContext, testRunSummary, _testRunner, "PublishTestResults");
     }
 }
示例#2
0
        public async Task <bool> PublishAsync(TestRunContext runContext, List <string> testResultFiles, PublishOptions publishOptions, CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                TestDataProvider testDataProvider = ParseTestResultsFile(runContext, testResultFiles);
                var publishTasks = new List <Task>();

                if (testDataProvider != null)
                {
                    var testRunData = testDataProvider.GetTestRunData();
                    //publishing run level attachment
                    Task <IList <TestRun> > publishtestRunDataTask = Task.Run(() => _testRunPublisher.PublishTestRunDataAsync(runContext, _projectName, testRunData, publishOptions, cancellationToken));
                    Task uploadBuildDataAttachmentTask             = Task.Run(() => UploadBuildDataAttachment(runContext, testDataProvider.GetBuildData(), cancellationToken));

                    publishTasks.Add(publishtestRunDataTask);

                    //publishing build level attachment
                    publishTasks.Add(uploadBuildDataAttachmentTask);

                    await Task.WhenAll(publishTasks);

                    IList <TestRun> publishedRuns = publishtestRunDataTask.Result;

                    _calculateTestRunSummary = _featureFlagService.GetFeatureFlagState(TestResultsConstants.CalculateTestRunSummaryFeatureFlag, TestResultsConstants.TFSServiceInstanceGuid);

                    var isTestRunOutcomeFailed = GetTestRunOutcome(_executionContext, testRunData, out TestRunSummary testRunSummary);

                    // Storing testrun summary in environment variable, which will be read by PublishPipelineMetadataTask and publish to evidence store.
                    if (_calculateTestRunSummary)
                    {
                        TestResultUtils.StoreTestRunSummaryInEnvVar(_executionContext, testRunSummary, _testRunner, "PublishTestResults");
                    }

                    // Check failed results for flaky aware
                    // Fallback to flaky aware if there are any failures.
                    bool isFlakyCheckEnabled = _featureFlagService.GetFeatureFlagState(TestResultsConstants.EnableFlakyCheckInAgentFeatureFlag, TestResultsConstants.TCMServiceInstanceGuid);

                    if (isTestRunOutcomeFailed && isFlakyCheckEnabled)
                    {
                        var runOutcome = _testRunPublisherHelper.CheckRunsForFlaky(publishedRuns, _projectName);
                        if (runOutcome != null && runOutcome.HasValue)
                        {
                            isTestRunOutcomeFailed = runOutcome.Value;
                        }
                    }

                    return(isTestRunOutcomeFailed);
                }

                return(false);
            }
            catch (Exception ex)
            {
                _executionContext.Warning("Failed to publish test run data: " + ex.ToString());
            }
            return(false);
        }
示例#3
0
        /// <summary>
        /// Exports the average test results.
        /// </summary>
        /// <param name="testResults">The test results.</param>
        /// <param name="aStarTestResults">The A* test results</param>
        /// <param name="commonInfoDataTable">The common information data table.</param>
        /// <param name="outputDirectory">The output directory.</param>
        private void ExportAverageTestResults(List <HarmonySearchAverageTestResult> testResults,
                                              AverageTestResult aStarTestResults, DataTable commonInfoDataTable, string outputDirectory)
        {
            // Group Harmony Search results by type
            var groupedTestResults = TestResultUtils.GroupTestResults(testResults);

            // Get Harmony Search results data tables
            var resultDataTables = new Dictionary <string, List <DataTable> >();

            foreach (var(typeName, groupedResults) in groupedTestResults)
            {
                var groupDataTables = new List <DataTable>();

                foreach (var(groupKey, groupResults) in groupedResults)
                {
                    var dataTable = DataTableUtils.GetHarmonySearchTestResultsDataTable(groupKey, groupResults, typeName);
                    groupDataTables.Add(dataTable);
                }

                resultDataTables[typeName] = groupDataTables;
            }

            var comparisonResults = testResults.Where(r =>
                                                      r.HarmonyGeneratorType == HarmonyGeneratorType.RandomDirectedStop)
                                    .Cast <AverageTestResult>()
                                    .ToList();

            comparisonResults.Add(aStarTestResults);

            // Add A* result data tables
            var aStarResultDataTable = DataTableUtils.GetTestResultsDataTable("Comparison", comparisonResults);

            resultDataTables["AStar"] = new List <DataTable> {
                aStarResultDataTable
            };

            // Export average result to Excel
            var filePath = Path.Combine(outputDirectory, "AverageTestResults");

            _excelExportService.ExportToExcel(commonInfoDataTable, resultDataTables, filePath);
        }
        public async Task <bool> PublishAsync(TestRunContext runContext, List <string> testResultFiles, PublishOptions publishOptions, CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                TestDataProvider testDataProvider = ParseTestResultsFile(runContext, testResultFiles);
                var publishTasks = new List <Task>();

                if (testDataProvider != null)
                {
                    var testRunData = testDataProvider.GetTestRunData();
                    //publishing run level attachment
                    publishTasks.Add(Task.Run(() => _testRunPublisher.PublishTestRunDataAsync(runContext, _projectName, testRunData, publishOptions, cancellationToken)));

                    //publishing build level attachment
                    publishTasks.Add(Task.Run(() => UploadBuildDataAttachment(runContext, testDataProvider.GetBuildData(), cancellationToken)));

                    await Task.WhenAll(publishTasks);

                    _calculateTestRunSummary = _featureFlagService.GetFeatureFlagState(TestResultsConstants.CalculateTestRunSummaryFeatureFlag, TestResultsConstants.TFSServiceInstanceGuid);

                    var runOutcome = GetTestRunOutcome(_executionContext, testRunData, out TestRunSummary testRunSummary);

                    // Storing testrun summary in environment variable, which will be read by PublishPipelineMetadataTask and publish to evidence store.
                    if (_calculateTestRunSummary)
                    {
                        TestResultUtils.StoreTestRunSummaryInEnvVar(_executionContext, testRunSummary, _testRunner, "PublishTestResults");
                    }

                    return(runOutcome);
                }

                return(false);
            }
            catch (Exception ex)
            {
                _executionContext.Warning("Failed to publish test run data: " + ex.ToString());
            }
            return(false);
        }
        private Task PublishTestResultsDataToEvidenceStore(IExecutionContext context)
        {
            TestResultUtils.StoreTestRunSummaryInEnvVar(context, testRunSummary, testRunner, name, description);

            return(Task.FromResult(0));
        }