コード例 #1
0
        private static (AllCoverageReports AllCoverageReports, TestResults AllTestResults) RunListOfCoverage(ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, Guid workspaceGuid, IResourceCatalog catalog)
        {
            var allTestResults = new TestResults();

            var allCoverageReports = new AllCoverageReports
            {
                StartTime = DateTime.Now
            };

            var resources         = catalog.GetResources <IWarewolfWorkflow>(workspaceGuid);
            var selectedResources = resources.Where(resource => coverageData.CoverageReportResourceIds.Contains(resource.ResourceID)).ToArray();

            var testResultsTemp     = new List <WorkflowTestResults>();
            var coverageReportsTemp = new List <WorkflowCoverageReports>();

            foreach (var coverageResourceId in coverageData.CoverageReportResourceIds)
            {
                var res = selectedResources.FirstOrDefault(o => o.ResourceID == coverageResourceId);
                if (res is null)
                {
                    continue;
                }

                var workflowTestResults = new WorkflowTestResults();
                testCatalog.Fetch(coverageResourceId)
                ?.ForEach(o => workflowTestResults.Add(o));

                testResultsTemp.Add(workflowTestResults);

                var coverageReports = new WorkflowCoverageReports(res);
                testCoverageCatalog.Fetch(coverageResourceId)
                ?.ForEach(o => coverageReports.Add(o));

                coverageReportsTemp.Add(coverageReports);
            }

            testResultsTemp.ForEach(o => allTestResults.Add(o));

            coverageReportsTemp.ForEach(o => allCoverageReports.Add(o));

            allTestResults.EndTime     = DateTime.Now;
            allCoverageReports.EndTime = DateTime.Now;

            return(allCoverageReports, allTestResults);
        }
コード例 #2
0
 public void Add(WorkflowTestResults taskResult)
 {
     Results.Add(taskResult);
 }
コード例 #3
0
        static TestResults RunListOfTests(IDSFDataObject dataObject, IPrincipal userPrinciple, Guid workspaceGuid, Dev2JsonSerializer serializer, IResourceCatalog catalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IServiceTestExecutorWrapper serviceTestExecutorWrapper)
        {
            var result = new TestResults();

            var selectedResources = catalog.GetResources(workspaceGuid)
                                    ?.Where(resource => dataObject.TestsResourceIds.Contains(resource.ResourceID)).ToArray();

            if (selectedResources != null)
            {
                var workflowTaskList = new List <Task <WorkflowTestResults> >();
                foreach (var testsResourceId in dataObject.TestsResourceIds)
                {
                    var workflowTask = Task <WorkflowTestResults> .Factory.StartNew(() =>
                    {
                        var workflowTestTaskList = new List <Task <IServiceTestModelTO> >();
                        var res = selectedResources.FirstOrDefault(o => o.ResourceID == testsResourceId);
                        if (res is null)
                        {
                            return(null);
                        }
                        else
                        {
                            var resourcePath        = res.GetResourcePath(workspaceGuid).Replace("\\", "/");
                            var workflowTestResults = new WorkflowTestResults(res);

                            var allTests = testCatalog.Fetch(testsResourceId);
                            foreach (var(test, dataObjectClone) in from test in allTests
                                     let dataObjectClone = dataObject.Clone()
                                                           select(test, dataObjectClone))
                            {
                                dataObjectClone.Environment = new ExecutionEnvironment();
                                dataObjectClone.TestName    = test.TestName;
                                dataObjectClone.ServiceName = res.ResourceName;
                                dataObjectClone.ResourceID  = res.ResourceID;
                                var lastTask = serviceTestExecutorWrapper.ExecuteTestAsync(resourcePath, userPrinciple, workspaceGuid,
                                                                                           serializer, dataObjectClone);
                                workflowTestTaskList.Add(lastTask);
                                var report = testCoverageCatalog.FetchReport(res.ResourceID, test.TestName);
                                var lastTestCoverageRun = report?.LastRunDate;
                                if (report is null || test.LastRunDate > lastTestCoverageRun)
                                {
                                    testCoverageCatalog.GenerateSingleTestCoverage(res.ResourceID, lastTask.Result);
                                }
                            }

                            Task.WaitAll(workflowTestTaskList.Cast <Task>().ToArray());
                            foreach (var task in workflowTestTaskList)
                            {
                                workflowTestResults.Add(task.Result);
                            }

                            var testResults = workflowTestResults.Results;
                            if (testResults.Count > 0)
                            {
                                testCoverageCatalog.GenerateAllTestsCoverage(res.ResourceName, res.ResourceID, testResults);
                            }

                            return(workflowTestResults);
                        }
                    });

                    if (workflowTask != null)
                    {
                        workflowTaskList.Add(workflowTask);
                    }
                }

                Task.WaitAll(workflowTaskList.Cast <Task>().ToArray());

                foreach (var task in workflowTaskList)
                {
                    if (task.Result != null)
                    {
                        result.Add(task.Result);
                    }
                }
            }

            result.EndTime = DateTime.Now;

            return(result);
        }