From 3e5e776d55c19aa17fd888562604139bd0925b5a Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 14:06:27 +0530 Subject: [PATCH 01/12] Fixing the FileContainer issue --- src/CoveragePublisher/CoverageProcessor.cs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 862142c..6cbd505 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -93,20 +93,9 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell else { - foreach (string nativeCoverageFile in config.CoverageFiles) + using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) { - if (!(nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson - nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) // .covx - { - using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) - { - await _publisher.PublishHTMLReport(config.ReportDirectory, token); - } - } - + await _publisher.PublishHTMLReport(config.ReportDirectory, token); } } From 8813a8856e3379685f5d1535843cd9a8984e3e0f Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 16:01:18 +0530 Subject: [PATCH 02/12] update1 --- src/CoveragePublisher/CoverageProcessor.cs | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 6cbd505..6d11d8e 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -84,22 +84,7 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell } //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade - if (config.GenerateHTMLReport) - { - if (!Directory.Exists(config.ReportDirectory)) - { - TraceLogger.Warning(Resources.NoReportDirectoryGenerated); - } - - else - { - using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) - { - await _publisher.PublishHTMLReport(config.ReportDirectory, token); - } - } - - } + } // Only catastrophic failures should trickle down to these catch blocks catch (ParsingException ex) From 2e5ec8a5417e2b047e4fff3e367c16f780e15e91 Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 17:37:56 +0530 Subject: [PATCH 03/12] update2 --- src/CoveragePublisher/CoverageProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 6d11d8e..5c1057d 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -82,7 +82,7 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell await _publisher.PublishFileCoverage(fileCoverage, token); } } - + TraceLogger.Debug("Vinayak - HTML NOT supported"); //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade } From e3329f3bf19870657acfcd0ad78cee1d7450241f Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 18:18:29 +0530 Subject: [PATCH 04/12] update4 --- src/CoveragePublisher/CoverageProcessor.cs | 3 +++ .../Publishers/DefaultPublisher/AzurePipelinesPublisher.cs | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 5c1057d..1e3572a 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -45,6 +45,8 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell // Upload native coverage files to TCM TraceLogger.Debug("Publishing native coverage files is supported."); + TraceLogger.Debug("Vinayak - Trying to get Debug1"); + await _publisher.PublishNativeCoverageFiles(config.CoverageFiles, token); var fileCoverage = parser.GetFileCoverageInfos(); @@ -67,6 +69,7 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell { using (new SimpleTimer("CoverageProcesser", "PublishCoverageSummary", _telemetry)) { + TraceLogger.Debug("Vinayak - Trying to get Debug2"); await _publisher.PublishCoverageSummary(summary, token); } } diff --git a/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs b/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs index 04defcf..b810164 100644 --- a/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs +++ b/src/CoveragePublisher/Publishers/DefaultPublisher/AzurePipelinesPublisher.cs @@ -130,7 +130,7 @@ public async Task PublishFileCoverage(IList coverageInfos, Can { var fileContent = JsonUtility.ToString(coverageInfos); File.WriteAllText(jsonFile, fileContent); - + TraceLogger.Debug("Vinayak - PublishFileCoverage"); _executionContext.TelemetryDataCollector.AddOrUpdate("FileCoverageLength", fileContent.Length); Dictionary metaData = new Dictionary(); @@ -160,6 +160,7 @@ public async Task PublishFileCoverage(IList coverageInfos, Can public async Task PublishHTMLReport(string reportDirectory, CancellationToken token) { + TraceLogger.Debug("Vinayak - Trying to get PublishHTMLREport"); await _htmlReportPublisher.PublishHTMLReportAsync(reportDirectory, token); } @@ -180,6 +181,7 @@ public async Task PublishNativeCoverageFiles(IList nativeCoverageFiles, using (new SimpleTimer("AzurePipelinesPublisher", "UploadNativeCoverageFiles", _executionContext.TelemetryDataCollector)) { int uploadedFileCount = 0; + TraceLogger.Debug("Vinayak - Trying to get Debug3"); foreach (string nativeCoverageFile in nativeCoverageFiles) { if (!(nativeCoverageFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || @@ -190,7 +192,7 @@ public async Task PublishNativeCoverageFiles(IList nativeCoverageFiles, { continue; } - + TraceLogger.Debug("Vinayak - Trying to get Debug4"); TestLogType testLogType = GetTestLogType(nativeCoverageFile); await _logStoreHelper.UploadTestBuildLogAsync(_executionContext.ProjectId, _executionContext.BuildId, testLogType, nativeCoverageFile, metaData, null, true, cancellationToken); uploadedFileCount++; From 8f4dd30ddcb631bb67a87b8f53afb389f015f66d Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 18:45:50 +0530 Subject: [PATCH 05/12] update5 --- src/CoveragePublisher/CoverageProcessor.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 1e3572a..56c275c 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -85,7 +85,23 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell await _publisher.PublishFileCoverage(fileCoverage, token); } } - TraceLogger.Debug("Vinayak - HTML NOT supported"); + + if (config.GenerateHTMLReport) + { + if (!Directory.Exists(config.ReportDirectory)) + { + TraceLogger.Warning(Resources.NoReportDirectoryGenerated); + } + + else + { + using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) + { + await _publisher.PublishHTMLReport(config.ReportDirectory, token); + } + } + } + TraceLogger.Debug("Vinayak - HTML supported"); //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade } From 82cc4257fa9e551696708b59efa03e0a8a787dba Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Mon, 20 Jan 2025 18:48:10 +0530 Subject: [PATCH 06/12] update6 --- src/CoveragePublisher/CoverageProcessor.cs | 5 ++++- .../Publishers/DefaultPublisher/HtmlReportPublisher.cs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 56c275c..30468a5 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -88,8 +88,10 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell if (config.GenerateHTMLReport) { + TraceLogger.Debug("Vinayak - ConfigHTML"); if (!Directory.Exists(config.ReportDirectory)) { + TraceLogger.Debug("Vinayak - Warning html supported"); TraceLogger.Warning(Resources.NoReportDirectoryGenerated); } @@ -97,11 +99,12 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell { using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) { + TraceLogger.Debug("Vinayak - HTML supported"); await _publisher.PublishHTMLReport(config.ReportDirectory, token); } } } - TraceLogger.Debug("Vinayak - HTML supported"); + TraceLogger.Debug("Vinayak - HTML END"); //Feature Flag for PublishHTMLReport; To be cleaned up post PCCRV2 upgrade } diff --git a/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs b/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs index 18c488e..2d3ae0b 100644 --- a/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs +++ b/src/CoveragePublisher/Publishers/DefaultPublisher/HtmlReportPublisher.cs @@ -46,7 +46,7 @@ public async Task PublishHTMLReportAsync(string reportDirectory, CancellationTok RenameIndexHtmExtensionIfRequired(reportDirectory); uploadDirectories.Add(new Tuple(reportDirectory, GetCoverageDirectoryName(buildId))); - + TraceLogger.Debug("Vinayak - HTMLReportAsync"); TraceLogger.Info(Resources.PublishingCodeCoverageReport); await this.PublishCodeCoverageFilesAsync(uploadDirectories, File.Exists(Path.Combine(reportDirectory, Constants.DefaultIndexFile)), cancellationToken); @@ -70,13 +70,16 @@ private async Task PublishCodeCoverageFilesAsync(List> dir }; // Upload to file container service + TraceLogger.Debug("Vinayak - Upload to file Container service"); var fileContainerHelper = _serviceFactory.GetFileContainerService(_clientFactory, _executionContext); await fileContainerHelper.CopyToContainerAsync(tuple, cancellationToken); string fileContainerFullPath = string.Format($"#/{_executionContext.ContainerId}/{tuple.Item2}"); // Associate with build artifact + TraceLogger.Debug("Vinayak - Build Artifact"); var buildHelper = _serviceFactory.GetBuildService(_clientFactory, _executionContext); await buildHelper.AssociateArtifact(_executionContext.BuildId, tuple.Item2, ArtifactResourceTypes.Container, fileContainerFullPath, artifactProperties, cancellationToken); + TraceLogger.Debug("Vinayak - Associate Artifact"); TraceLogger.Info(string.Format(Resources.PublishedCodeCoverageArtifact, tuple.Item1, tuple.Item2)); }); From 0b0817002db5690d7170092aa67f76a1c50a58ab Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 00:20:45 +0530 Subject: [PATCH 07/12] update7 --- src/CoveragePublisher/Parsers/Parser.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/CoveragePublisher/Parsers/Parser.cs b/src/CoveragePublisher/Parsers/Parser.cs index f92b832..29f6b89 100644 --- a/src/CoveragePublisher/Parsers/Parser.cs +++ b/src/CoveragePublisher/Parsers/Parser.cs @@ -83,11 +83,18 @@ protected virtual void GenerateHTMLReport(ICoverageParserTool tool) // Copy the files foreach (var summaryFile in _configuration.CoverageFiles) { - var summaryFileName = Path.GetFileName(summaryFile); - var destinationSummaryFile = Path.Combine(summaryFilesSubDir, summaryFileName); + if (!(summaryFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer + summaryFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage + summaryFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb + summaryFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson + summaryFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) + { + var summaryFileName = Path.GetFileName(summaryFile); + var destinationSummaryFile = Path.Combine(summaryFilesSubDir, summaryFileName); - TraceLogger.Debug("Parser.GenerateHTMLReport: Copying summary file " + summaryFile); - File.Copy(summaryFile, destinationSummaryFile, true); + TraceLogger.Debug("Parser.GenerateHTMLReport: Copying summary file " + summaryFile); + File.Copy(summaryFile, destinationSummaryFile, true); + } } } else From a5ecab640333374b601eb92d0a5790e70f45dbda Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 00:23:14 +0530 Subject: [PATCH 08/12] update8 --- src/CoveragePublisher/Parsers/Parser.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/CoveragePublisher/Parsers/Parser.cs b/src/CoveragePublisher/Parsers/Parser.cs index 29f6b89..a102bb3 100644 --- a/src/CoveragePublisher/Parsers/Parser.cs +++ b/src/CoveragePublisher/Parsers/Parser.cs @@ -94,6 +94,10 @@ protected virtual void GenerateHTMLReport(ICoverageParserTool tool) TraceLogger.Debug("Parser.GenerateHTMLReport: Copying summary file " + summaryFile); File.Copy(summaryFile, destinationSummaryFile, true); + } + + else{ + TraceLogger.Debug("Parser.GenerateHTMLReport: Skipping copying of coverage input file " + summaryFile); } } } From 64a4ba10a6051a82cfd106255fb3ab06c468946b Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 00:31:32 +0530 Subject: [PATCH 09/12] update9 --- src/CoveragePublisher/Parsers/Parser.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CoveragePublisher/Parsers/Parser.cs b/src/CoveragePublisher/Parsers/Parser.cs index a102bb3..ad70826 100644 --- a/src/CoveragePublisher/Parsers/Parser.cs +++ b/src/CoveragePublisher/Parsers/Parser.cs @@ -6,6 +6,7 @@ using System.IO; using Microsoft.Azure.Pipelines.CoveragePublisher.Model; using Microsoft.Azure.Pipelines.CoveragePublisher.Utils; +using Microsoft.Azure.Pipelines.CoveragePublisher.Publishers.DefaultPublisher; namespace Microsoft.Azure.Pipelines.CoveragePublisher.Parsers { From 32be8b35e0cef3e001f86994e75321364090dd2f Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 01:11:55 +0530 Subject: [PATCH 10/12] update10 --- src/CoveragePublisher/CoverageProcessor.cs | 25 ++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 30468a5..f05bf0d 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -24,6 +24,21 @@ public CoverageProcessor(ICoveragePublisher publisher, ITelemetryDataCollector t _telemetry = telemetry; } + public bool IsContainsNativeCoverage(config) + { + foreach (var file in config.CoverageFiles) + { + if (file.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || + file.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || + file.EndsWith(Constants.CoverageConstants.CoverageXFileExtension) || + file.EndsWith(Constants.CoverageConstants.CoverageBFileExtension)) + { + return true; + } + } + return false; + } + public async Task ParseAndPublishCoverage(PublisherConfiguration config, CancellationToken token, Parser parser) { if (_publisher != null) @@ -99,8 +114,14 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell { using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) { - TraceLogger.Debug("Vinayak - HTML supported"); - await _publisher.PublishHTMLReport(config.ReportDirectory, token); + if(!IsContainsNativeCoverage(config)) + { + TraceLogger.Debug("Vinayak - HTML supported"); + await _publisher.PublishHTMLReport(config.ReportDirectory, token); + } + else{ + TraceLogger.Debug("Vinayak - HTML not supported"); + } } } } From 047a43f2b387af42f61133a8b6707c98d6853e57 Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 01:14:10 +0530 Subject: [PATCH 11/12] update11 --- src/CoveragePublisher/CoverageProcessor.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index f05bf0d..6c34a78 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -26,12 +26,13 @@ public CoverageProcessor(ICoveragePublisher publisher, ITelemetryDataCollector t public bool IsContainsNativeCoverage(config) { - foreach (var file in config.CoverageFiles) + foreach (var summaryFile in config.CoverageFiles) { - if (file.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || - file.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || - file.EndsWith(Constants.CoverageConstants.CoverageXFileExtension) || - file.EndsWith(Constants.CoverageConstants.CoverageBFileExtension)) + if (!(summaryFile.EndsWith(Constants.CoverageConstants.CoverageBufferFileExtension) || // .coveragebuffer + summaryFile.EndsWith(Constants.CoverageConstants.CoverageFileExtension) || // .coverage + summaryFile.EndsWith(Constants.CoverageConstants.CoverageBFileExtension) || //.covb + summaryFile.EndsWith(Constants.CoverageConstants.CoverageJsonFileExtension) || //.cjson + summaryFile.EndsWith(Constants.CoverageConstants.CoverageXFileExtension))) { return true; } @@ -114,7 +115,7 @@ public async Task ParseAndPublishCoverage(PublisherConfiguration config, Cancell { using (new SimpleTimer("CoverageProcesser", "PublishHTMLReport", _telemetry)) { - if(!IsContainsNativeCoverage(config)) + if(IsContainsNativeCoverage(config)) { TraceLogger.Debug("Vinayak - HTML supported"); await _publisher.PublishHTMLReport(config.ReportDirectory, token); From 77a9bb4d7ff986bc4bfe153d146d078ad5a6014c Mon Sep 17 00:00:00 2001 From: "Vinayak Joshi (from Dev Box)" Date: Tue, 21 Jan 2025 01:19:27 +0530 Subject: [PATCH 12/12] update12 --- src/CoveragePublisher/CoverageProcessor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CoveragePublisher/CoverageProcessor.cs b/src/CoveragePublisher/CoverageProcessor.cs index 6c34a78..22eefef 100644 --- a/src/CoveragePublisher/CoverageProcessor.cs +++ b/src/CoveragePublisher/CoverageProcessor.cs @@ -24,7 +24,7 @@ public CoverageProcessor(ICoveragePublisher publisher, ITelemetryDataCollector t _telemetry = telemetry; } - public bool IsContainsNativeCoverage(config) + public bool IsContainsNativeCoverage(PublisherConfiguration config) { foreach (var summaryFile in config.CoverageFiles) {