Exemplo n.º 1
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"));
        }
Exemplo n.º 2
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);
        }
        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);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
0
        public static void SetTestCoverageResourceIds(this ICoverageDataObject coverageData, IContextualResourceCatalog catalog, WebRequestTO webRequest, string serviceName, IWarewolfResource resource)
        {
            if (IsRunAllCoverageRequest(coverageData.ReturnType, serviceName))
            {
                var pathOfAllResources = webRequest.GetPathForAllResources();
                var path = pathOfAllResources;
                if (string.IsNullOrEmpty(pathOfAllResources))
                {
                    path = "/";
                }

                var resources = catalog.GetExecutableResources(path);
                coverageData.CoverageReportResourceIds = resources.Where(o => o is IWarewolfWorkflow).Select(p => p.ResourceID).GroupBy(o => o).Select(o => o.Key).ToArray();
            }
            else if (resource != null)
            {
                coverageData.CoverageReportResourceIds = new[] { resource.ResourceID };
            }
        }
Exemplo n.º 7
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);
        }
        public static void SetupWorkflowRowHtml(this HtmlTextWriter writer, string resourcePath, ICoverageDataObject coverageData, IWorkflowCoverageReports coverageReports)
        {
            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();

            (double totalCoverage, List <IWorkflowNode> workflowNodes, IWorkflowNode[] coveredNodes) = coverageReports.GetTotalCoverage();

            writer.SetupWorkflowReportsHtml(totalCoverage, nameof(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, coveredNodes));

            writer.RenderEndTag();
        }
        internal static void SetupCountSummaryHtml(this List <IServiceTestModelTO> allTests, HtmlTextWriter writer, ICoverageDataObject coverageData)
        {
            writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "10px 10px 20px 10px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "5px");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "count-summary row");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0 -15px 0 -15px");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-black");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Total Test Count: " + allTests.Count);
            writer.RenderEndTag();

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "green");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-green");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Tests Passed: " + allTests.Count(o => o.TestPassed));
            writer.RenderEndTag();

            var failedCount = allTests.Count(o => o.TestFailing);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            if (failedCount > 0)
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "red");
            }
            else
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-red");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Tests Failed: " + failedCount);
            writer.RenderEndTag();

            var invalidCount = allTests.Count(o => o.TestInvalid);

            writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "14px");
            writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "roboto sans-serif");
            if (invalidCount > 0)
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "orange");
            }
            else
            {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Color, "black");
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "table-td-red");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            writer.Write("Tests Invalid: " + invalidCount);
            writer.RenderEndTag();

            writer.RenderBeginTag(HtmlTextWriterTag.Td);
            if (coverageData.IsMultipleWorkflowReport)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Target, "_new");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, coverageData.GetAllTestsUrl());
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write("Run All Tests");
                writer.RenderEndTag();
            }
            writer.RenderEndTag();

            writer.RenderEndTag();
            writer.RenderEndTag();
            writer.RenderEndTag();
        }
Exemplo n.º 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);
        }
Exemplo n.º 11
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);
        }
Exemplo n.º 12
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);
        }