コード例 #1
0
        public void Calculte(ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog)
        {
            AllTestResults      = new List <IServiceTestModelTO>();
            _allCoverageReports = new AllCoverageReports();

            foreach (var coverageResource in _workflows)
            {
                if (coverageResource is null)
                {
                    continue;
                }

                SetWarewolfTestResults(testCatalog, coverageResource);
                SetWarewolfCoverageReports(testCoverageCatalog, coverageResource);
            }

            var workflowCoverageReportsTOs = _allCoverageReports.Calcute();

            AllCoverageReports                  = workflowCoverageReportsTOs;
            TotalWorkflowNodesCoveredCount      = workflowCoverageReportsTOs.Sum(o => o.CoveredWorkflowNodesIds.Count());
            TotalWorkflowNodesCount             = GetTotalWorkflowsNodesCount();
            TotalWorkflowNodesCoveredPercentage = GetTotalWorkflowNodesCoveredPercentage();

            _allCoverageReports.EndTime = DateTime.Now;
        }
コード例 #2
0
 public Executor(IWorkspaceRepository workspaceRepository, IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory)
 {
     _repository           = workspaceRepository;
     _resourceCatalog      = resourceCatalog;
     _testCatalog          = testCatalog;
     _testCoverageCatalog  = testCoverageCatalog;
     _authorizationService = authorizationService;
     _dataObjectFactory    = dataObjectFactory;
 }
コード例 #3
0
 protected AbstractWebRequestHandler(IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IWorkspaceRepository workspaceRepository, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory)
 {
     _resourceCatalog      = resourceCatalog;
     _testCatalog          = testCatalog;
     _testCoverageCatalog  = testCoverageCatalog;
     _workspaceRepository  = workspaceRepository;
     _authorizationService = authorizationService;
     _dataObjectFactory    = dataObjectFactory;
 }
コード例 #4
0
 protected ExecutorBase(IWorkspaceRepository workspaceRepository, IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory, IEsbChannelFactory esbChannelFactory, IJwtManager jwtManager)
 {
     _repository           = workspaceRepository;
     _resourceCatalog      = resourceCatalog;
     _testCatalog          = testCatalog;
     _testCoverageCatalog  = testCoverageCatalog;
     _authorizationService = authorizationService;
     _dataObjectFactory    = dataObjectFactory;
     _esbChannelFactory    = esbChannelFactory;
     _jwtManager           = jwtManager;
 }
コード例 #5
0
 protected AbstractWebRequestHandler(IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IWorkspaceRepository workspaceRepository, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory, IEsbChannelFactory esbChannelFactory, ISecuritySettings securitySettings, IJwtManager jwtManager)
 {
     _resourceCatalog      = resourceCatalog;
     _testCatalog          = testCatalog;
     _testCoverageCatalog  = testCoverageCatalog;
     _workspaceRepository  = workspaceRepository;
     _authorizationService = authorizationService;
     _dataObjectFactory    = dataObjectFactory;
     _esbChannelFactory    = esbChannelFactory;
     _securitySettings     = securitySettings;
     _jwtManager           = jwtManager;
 }
コード例 #6
0
        public override void ProcessRequest(ICommunicationContext ctx)
        {
            var postDataListId = ctx.GetDataListID();

            if (postDataListId != null)
            {
                _catalog             = _catalog ?? ResourceCatalog.Instance;
                _testCatalog         = _testCatalog ?? TestCatalog.Instance;
                _testCoverageCatalog = _testCoverageCatalog ?? TestCoverageCatalog.Instance;
                new WebPostRequestHandler(_catalog, _testCatalog, _testCoverageCatalog).ProcessRequest(ctx);
                return;
            }

            var serviceName = ctx.GetServiceName();
            var workspaceId = ctx.GetWorkspaceID();

            var requestTo = new WebRequestTO {
                ServiceName = serviceName, WebServerUrl = ctx.Request.Uri.ToString(), Dev2WebServer = $"{ctx.Request.Uri.Scheme}://{ctx.Request.Uri.Authority}"
            };
            var data = SubmittedData.GetPostData(ctx);

            if (!string.IsNullOrEmpty(data))
            {
                requestTo.RawRequestPayload = data;
            }
            var variables = ctx.Request.BoundVariables;

            if (variables != null)
            {
                foreach (string key in variables)
                {
                    requestTo.Variables.Add(key, variables[key]);
                }
            }
            // Execute in its own thread to give proper context ;)
            Thread.CurrentPrincipal = ctx.Request.User;

            var responseWriter = CreateForm(requestTo, serviceName, workspaceId, ctx.FetchHeaders(), ctx.Request.User);

            ctx.Send(responseWriter);
        }
コード例 #7
0
        private void SetWarewolfCoverageReports(ITestCoverageCatalog testCoverageCatalog, IWarewolfWorkflow coverageResource)
        {
            var resourceId      = coverageResource.ResourceID;
            var coverageReports = new WorkflowCoverageReports(coverageResource);

            if (!string.IsNullOrEmpty(_reportName) && _reportName != "*")
            {
                var report             = testCoverageCatalog.Fetch(resourceId);
                var tempcoverageReport = report?.Find(oo => oo.ReportName?.ToUpper() == _reportName.ToUpper());
                if (tempcoverageReport != null)
                {
                    coverageReports.Add(tempcoverageReport);
                }
            }
            else
            {
                testCoverageCatalog.Fetch(resourceId)
                ?.ForEach(o => coverageReports.Add(o));
            }

            _allCoverageReports.Add(coverageReports);
        }
コード例 #8
0
 protected AbstractWebRequestHandler(IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog)
     : this(resourceCatalog, testCatalog, testCoverageCatalog, WorkspaceRepository.Instance, ServerAuthorizationService.Instance, new DataObjectFactory())
 {
 }
コード例 #9
0
        public WebPostRequestHandler(IResourceCatalog catalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog)
            : base(catalog, testCatalog, testCoverageCatalog)
        {

        }
コード例 #10
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);
        }
コード例 #11
0
ファイル: Executor.cs プロジェクト: Warewolf-ESB/Warewolf
 public Executor(IWorkspaceRepository workspaceRepository, IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IServiceTestExecutor serviceTestExecutor, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory, IEsbChannelFactory esbChannelFactory, IJwtManager jwtManager)
     : base(workspaceRepository, resourceCatalog, testCatalog, testCoverageCatalog, serviceTestExecutor, authorizationService, dataObjectFactory, esbChannelFactory, jwtManager)
 {
 }
コード例 #12
0
        private static WarewolfWorkflowReports RunListOfCoverage(ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, Guid workspaceGuid, IResourceCatalog catalog)
        {
            var resourceReportTemp = new WarewolfWorkflowReports(coverageData.CoverageReportResources, coverageData.ReportName);

            resourceReportTemp.Calculte(testCoverageCatalog, testCatalog);

            resourceReportTemp.EndTime = DateTime.Now;

            return(resourceReportTemp);
        }
コード例 #13
0
        public static DataListFormat RunCoverageAndReturnHTML(this ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, IResourceCatalog catalog, Guid workspaceGuid, out string executePayload)
        {
            var(allCoverageReports, allTestResults) = RunListOfCoverage(coverageData, testCoverageCatalog, testCatalog, workspaceGuid, catalog);

            var formatter = DataListFormat.CreateFormat("HTML", EmitionTypes.Cover, "text/html; charset=utf-8");

            var stringWriter = new StringWriter();

            using (var writer = new HtmlTextWriter(stringWriter))
            {
                writer.SetupNavBarHtml();

                allTestResults.Results
                .SelectMany(o => o.Results)
                .ToList()
                .SetupCountSummaryHtml(writer, coverageData);

                allCoverageReports.AllCoverageReportsSummary
                .Where(o => o.HasTestReports)
                .ToList()
                .ForEach(oo =>
                {
                    var resourcePath = string.Empty;
                    if (oo.Resource is IFilePathResource filePath)
                    {
                        resourcePath = filePath.Path;
                    }

                    writer.SetupWorkflowRowHtml(resourcePath, coverageData, oo);
                });
            }

            executePayload = stringWriter.ToString();
            return(formatter);
        }
コード例 #14
0
        public static DataListFormat ExecuteTests(IDSFDataObject dataObject, IPrincipal userPrinciple, Guid workspaceGuid, Dev2JsonSerializer serializer, ITestCatalog testCatalog, IResourceCatalog resourceCatalog, out string executePayload, ITestCoverageCatalog testCoverageCatalog)
        {
            executePayload = null;

            DataListFormat formatter = null;

            if (dataObject.TestsResourceIds?.Any() ?? false)
            {
                if (dataObject.ReturnType == EmitionTypes.TEST)
                {
                    formatter = dataObject.RunMultipleTestBatchesAndReturnJSON(userPrinciple, workspaceGuid, serializer, resourceCatalog, testCatalog, out executePayload, testCoverageCatalog);
                }
                if (dataObject.ReturnType == EmitionTypes.TRX)
                {
                    formatter = dataObject.RunMultipleTestBatchesAndReturnTRX(userPrinciple, workspaceGuid, serializer, resourceCatalog, testCatalog, out executePayload, testCoverageCatalog);
                }
                dataObject.ResourceID = Guid.Empty;
            }
            else
            {
                Dev2.Common.Dev2Logger.Warn("No tests found to execute for requested resource", Dev2.Common.GlobalConstants.WarewolfWarn);
            }

            Dev2DataListDecisionHandler.Instance.RemoveEnvironment(dataObject.DataListID);
            dataObject.Environment = null;
            return(formatter ?? DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml"));
        }
コード例 #15
0
        public static DataListFormat GetTestCoverageReports(ICoverageDataObject coverageObject, Guid workspaceGuid, Dev2JsonSerializer serializer, ITestCoverageCatalog testCoverageCatalog, IResourceCatalog resourceCatalog, out string executePayload)
        {
            DataListFormat formatter = null;

            if (coverageObject.CoverageReportResourceIds.Any())
            {
                if (coverageObject.ReturnType == EmitionTypes.CoverJson)
                {
                    formatter = coverageObject.RunCoverageAndReturnJSON(testCoverageCatalog, resourceCatalog, workspaceGuid, serializer, out executePayload);
                }
                else if (coverageObject.ReturnType == EmitionTypes.Cover)
                {
                    formatter = coverageObject.RunCoverageAndReturnHTML(testCoverageCatalog, resourceCatalog, workspaceGuid, out executePayload);
                }
                else
                {
                    executePayload = null;
                }
            }
            else
            {
                executePayload = null;
                throw new Exception("do not expect this to be executed any longer");
            }
            return(formatter);
        }
コード例 #16
0
 protected AbstractWebRequestHandler(IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IServiceTestExecutor serviceTestExecutor, IWorkspaceRepository workspaceRepository, IAuthorizationService authorizationService, IDataObjectFactory dataObjectFactory, IEsbChannelFactory esbChannelFactory, ISecuritySettings securitySettings)
     : this(resourceCatalog, testCatalog, testCoverageCatalog, serviceTestExecutor, workspaceRepository, authorizationService, dataObjectFactory, esbChannelFactory, securitySettings, new JwtManager(securitySettings))
 {
 }
コード例 #17
0
        public static DataListFormat GetTestCoverageReports(ICoverageDataObject coverageObject, Guid workspaceGuid, Dev2JsonSerializer serializer, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, IResourceCatalog resourceCatalog, out string executePayload)
        {
            DataListFormat formatter = null;

            if (coverageObject.CoverageReportResourceIds?.Any() ?? false)
            {
                if (coverageObject.ReturnType == EmitionTypes.CoverJson)
                {
                    formatter = coverageObject.RunCoverageAndReturnJSON(testCoverageCatalog, testCatalog, resourceCatalog, workspaceGuid, serializer, out executePayload);
                }
                else if (coverageObject.ReturnType == EmitionTypes.Cover)
                {
                    formatter = coverageObject.RunCoverageAndReturnHTML(testCoverageCatalog, testCatalog, resourceCatalog, workspaceGuid, out executePayload);
                }
                else
                {
                    executePayload = null;
                }
            }
            else
            {
                executePayload = null;
                Common.Dev2Logger.Warn("No test coverage reports found to execute for requested resource", Common.GlobalConstants.WarewolfWarn);
            }
            return(formatter ?? DataListFormat.CreateFormat("HTML", EmitionTypes.Cover, "text/html; charset=utf-8"));
        }
コード例 #18
0
        public static DataListFormat RunCoverageAndReturnHTML(this ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, IResourceCatalog catalog, Guid workspaceGuid, out string executePayload)
        {
            var allCoverageReports = RunListOfCoverage(coverageData, testCoverageCatalog, workspaceGuid, catalog);
            var allTests           = TestCatalog.Instance.FetchAllTests();

            var formatter = DataListFormat.CreateFormat("HTML", EmitionTypes.Cover, "text/html; charset=utf-8");

            var stringWriter = new StringWriter();

            using (var writer = new HtmlTextWriter(stringWriter))
            {
                writer.SetupNavBarHtml("nav-bar-row", "Coverage Summary");
                allTests.SetupCountSummaryHtml(writer, "count-summary row", allCoverageReports, coverageData);

                allCoverageReports.AllCoverageReportsSummary
                .Where(o => o.HasTestReports)
                .ToList()
                .ForEach(oo =>
                {
                    var resourcePath = string.Empty;
                    if (oo.Resource is IFilePathResource filePath)
                    {
                        resourcePath = filePath.Path;
                    }

                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "SetupWorkflowPathHtml");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "#333");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "16px");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "20%");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "8px 16px 16px 8px");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "inline-block");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.Write(resourcePath);
                    writer.RenderEndTag();

                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "SetupWorkflowPathHtml-link");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100px");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "12px");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "inline-block");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.AddAttribute(HtmlTextWriterAttribute.Target, "_new");
                    var testUrl = coverageData.GetTestUrl(resourcePath);
                    writer.AddAttribute(HtmlTextWriterAttribute.Href, testUrl);
                    writer.RenderBeginTag(HtmlTextWriterTag.A);
                    writer.Write("Run Tests");
                    writer.RenderEndTag();
                    writer.RenderEndTag();

                    var(totalCoverage, workflowNodes, coveredNodes) = oo.GetTotalCoverage();

                    writer.SetupWorkflowReportsHtml(totalCoverage, "SetupWorkflowReportsHtml");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "16px");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "500");
                    writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0 0 0 35px");
                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "workflow-nodes-row");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);



                    workflowNodes.ForEach(node => node.SetupWorkflowNodeHtml(writer, "workflow-nodes", coveredNodes));

                    writer.RenderEndTag();
                });
            }

            executePayload = stringWriter.ToString();
            return(formatter);
        }
コード例 #19
0
 public WebGetRequestHandler(IResourceCatalog catalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog)
 {
     _catalog             = catalog;
     _testCatalog         = testCatalog;
     _testCoverageCatalog = testCoverageCatalog;
 }
コード例 #20
0
        private static AllCoverageReports RunListOfCoverage(ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, Guid workspaceGuid, IResourceCatalog catalog)
        {
            var allCoverageReports = new AllCoverageReports
            {
                StartTime = DateTime.Now
            };

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

            testCoverageCatalog.ReloadAllReports();
            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 coverageReports = new WorkflowCoverageReports(res);

                var allWorkflowReports = testCoverageCatalog.Fetch(coverageResourceId);
                if (allWorkflowReports?.Count > 0)
                {
                    foreach (var workflowReport in allWorkflowReports)
                    {
                        coverageReports.Add(workflowReport);
                    }

                    coverageReportsTemp.Add(coverageReports);
                }
            }

            foreach (var item in coverageReportsTemp)
            {
                allCoverageReports.Add(item);
            }

            allCoverageReports.EndTime = DateTime.Now;

            return(allCoverageReports);
        }
コード例 #21
0
 protected AbstractWebRequestHandler(IResourceCatalog resourceCatalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IEsbChannelFactory esbChannelFactory, ISecuritySettings securitySettings)
     : this(resourceCatalog, testCatalog, testCoverageCatalog, null, WorkspaceRepository.Instance, ServerAuthorizationService.Instance, new DataObjectFactory(), esbChannelFactory, securitySettings, new JwtManager(securitySettings))
 {
 }
コード例 #22
0
        public static DataListFormat RunMultipleTestBatchesAndReturnJSON(this IDSFDataObject dataObject, IPrincipal userPrinciple, Guid workspaceGuid,
                                                                         Dev2JsonSerializer serializer,
                                                                         IResourceCatalog catalog, ITestCatalog testCatalog,
                                                                         out string executePayload, ITestCoverageCatalog testCoverageCatalog,
                                                                         IServiceTestExecutorWrapper serviceTestExecutorWrapper)
        {
            var testResults = RunListOfTests(dataObject, userPrinciple, workspaceGuid, serializer, catalog, testCatalog, testCoverageCatalog, serviceTestExecutorWrapper);
            var formatter   = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");

            var objArray = testResults.Results
                           .Where(o => o.HasTestResults)
                           .Select(o =>
            {
                var name = o.Resource.ResourceName;
                if (o.Resource is IFilePathResource filePath)
                {
                    name = filePath.Path;
                }

                return(new JObject
                {
                    { "ResourceID", o.Resource.ResourceID },
                    { "Name", name },
                    { "Tests", new JArray(o.Results.Select(o1 => o1.BuildTestResultJSONForWebRequest())) }
                });
            });

            var obj = new JObject
            {
                { "StartTime", testResults.StartTime },
                { "EndTime", testResults.EndTime },
                { "Results", new JArray(objArray) },
            };

            executePayload = serializer.Serialize(obj);
            return(formatter);
        }
コード例 #23
0
 public WebGetRequestHandler(IResourceCatalog catalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog)
     : base(catalog, testCatalog, testCoverageCatalog, new DefaultEsbChannelFactory(), new SecuritySettings())
 {
 }
コード例 #24
0
        public static DataListFormat RunMultipleTestBatchesAndReturnTRX(this IDSFDataObject dataObject, IPrincipal userPrinciple, Guid workspaceGuid,
                                                                        Dev2JsonSerializer serializer,
                                                                        IResourceCatalog catalog, ITestCatalog testCatalog,
                                                                        out string executePayload, ITestCoverageCatalog testCoverageCatalog,
                                                                        IServiceTestExecutorWrapper serviceTestExecutorWrapper)
        {
            var testResults = RunListOfTests(dataObject, userPrinciple, workspaceGuid, serializer, catalog, testCatalog, testCoverageCatalog, serviceTestExecutorWrapper);
            var formatter   = DataListFormat.CreateFormat("XML", EmitionTypes.XML, "text/xml");

            executePayload = ServiceTestModelTRXResultBuilder.BuildTestResultTRX(dataObject.ServiceName, testResults.Results.SelectMany(o => o.Results).ToList());
            return(formatter);
        }
コード例 #25
0
 public WebPostRequestHandler(IResourceCatalog catalog, ITestCatalog testCatalog, ITestCoverageCatalog testCoverageCatalog, IEsbChannelFactory esbChannelFactory)
     : base(catalog, testCatalog, testCoverageCatalog, esbChannelFactory, new SecuritySettings())
 {
 }
コード例 #26
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);
        }
コード例 #27
0
        public static DataListFormat RunCoverageAndReturnJSON(this ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, IResourceCatalog catalog, Guid workspaceGuid, Dev2JsonSerializer serializer, out string executePayload)
        {
            var(allCoverageReports, _) = RunListOfCoverage(coverageData, testCoverageCatalog, testCatalog, workspaceGuid, catalog);

            var formatter = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");

            var objArray = allCoverageReports.AllCoverageReportsSummary
                           .Where(o => o.HasTestReports)
                           .Select(o =>
            {
                var name = o.Resource.ResourceName;
                if (o.Resource is IFilePathResource filePath)
                {
                    name = filePath.Path;
                }

                return(new JObject
                {
                    { "ResourceID", o.Resource.ResourceID },
                    { "Name", name },
                    { "Reports", new JArray(o.Reports.Select(o1 => o1.BuildTestResultJSONForWebRequest())) }
                });
            });

            var obj = new JObject
            {
                { "StartTime", allCoverageReports.StartTime },
                { "EndTime", allCoverageReports.EndTime },
                { "Results", new JArray(objArray) },
            };

            executePayload = serializer.Serialize(obj);
            return(formatter);
        }
コード例 #28
0
        public static DataListFormat RunCoverageAndReturnJSON(this ICoverageDataObject coverageData, ITestCoverageCatalog testCoverageCatalog, ITestCatalog testCatalog, IResourceCatalog catalog, Guid workspaceGuid, Dev2JsonSerializer serializer, out string executePayload)
        {
            var warewolfWorkflowReports = RunListOfCoverage(coverageData, testCoverageCatalog, testCatalog, workspaceGuid, catalog);

            var allTestResults     = warewolfWorkflowReports.AllTestResults;
            var allCoverageReports = warewolfWorkflowReports.AllCoverageReports;
            var formatter          = DataListFormat.CreateFormat("JSON", EmitionTypes.JSON, "application/json");

            var objArray = allCoverageReports
                           .Select(o =>
            {
                var name = o.Resource.ResourceName;
                if (o.Resource is IFilePathResource filePath)
                {
                    name = filePath.Path;
                }

                return(new JObject
                {
                    { "ResourceID", o.Resource.ResourceID },
                    { "Name", name },
                    { "Reports", new JArray(o.Reports.Select(o1 => o1.BuildTestResultJSONForWebRequest())) }
                });
            });

            var resultCoverageSummaryWriter = new StringWriter();

            using (var writer = new JsonTextWriter(resultCoverageSummaryWriter))
            {
                var totalNodes      = warewolfWorkflowReports.TotalWorkflowNodesCount;
                var coveredNodes    = warewolfWorkflowReports.TotalWorkflowNodesCoveredCount;
                var notCoveredNodes = totalNodes - coveredNodes;

                writer.WriteStartObject();
                writer.WritePropertyName("TotalNodes");
                writer.WriteValue(totalNodes);
                writer.WritePropertyName("CoveredNodes");
                writer.WriteValue(coveredNodes);
                writer.WritePropertyName("NotCoveredNodes");
                writer.WriteValue(notCoveredNodes);
                writer.WritePropertyName("TotalCoverage");
                writer.WriteValueAsync(warewolfWorkflowReports.TotalWorkflowNodesCoveredPercentage);
                writer.WriteEndObject();
            }

            var resultSummaryWriter = new StringWriter();
            var reportName          = coverageData.ReportName;

            if (!string.IsNullOrEmpty(reportName) && reportName != "*")
            {
                using (var writer = new JsonTextWriter(resultSummaryWriter))
                {
                    allTestResults.SetupResultSummaryJSON(writer);
                }
            }
            else
            {
                using (var writer = new JsonTextWriter(resultSummaryWriter))
                {
                    allTestResults.SetupResultSummaryJSON(writer);
                }
            }
            var obj = new JObject
            {
                { "StartTime", warewolfWorkflowReports.StartTime },
                { "EndTime", warewolfWorkflowReports.EndTime },
                { "CoverageSummary", JToken.Parse(resultCoverageSummaryWriter.ToString()) },
                { "TestSummary", JToken.Parse(resultSummaryWriter.ToString()) },
                { "TestResults", new JArray(objArray) },
            };

            executePayload = serializer.Serialize(obj);
            return(formatter);
        }