From 71927df7f99158516fec5df8de1eee856425c5ae Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 11:06:26 +0200 Subject: [PATCH 01/10] Fix GC pipeline The GC pipeline has been broken for some time, failing with `[error]No image label found to route agent pool Azure Pipelines` --- gc-azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index cf6b208a8ee..9dc658c7623 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -34,7 +34,7 @@ jobs: # TODO: Add. - job: GCNotebookValidation_Windows pool: - vmImage: windows-2019 + vmImage: windows-2025 steps: # Install dotnet. We temporarily need both .NET 8 (for building and running the projects) and .NET 9 (for installing deps). From 194a70a6c9e6bad2b0dd52b510e3484396bf67f0 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 14:17:39 +0200 Subject: [PATCH 02/10] Switch to NetCore-Public with ImageOverride Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- gc-azure-pipelines.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index 9dc658c7623..11f31f0d919 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -34,7 +34,9 @@ jobs: # TODO: Add. - job: GCNotebookValidation_Windows pool: - vmImage: windows-2025 + name: NetCore-Public + demands: + - ImageOverride -equals windows.vs2022.amd64.open steps: # Install dotnet. We temporarily need both .NET 8 (for building and running the projects) and .NET 9 (for installing deps). From 1f0ac63673600cb08decae458b809e680f996292 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 14:23:25 +0200 Subject: [PATCH 03/10] Temporary change to trigger the GC pipeline --- .../Commands/Microbenchmark/MicrobenchmarkCommand.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs index ca063389ef5..f51847fc3b6 100644 --- a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs @@ -176,10 +176,10 @@ public static MicrobenchmarkOutputResults RunMicrobenchmarks(MicrobenchmarkConfi consoleError.AppendLine(e.Data); }; + bdnProcess.Start(); string traceName = $"{benchmarkCleanedName}_{index}"; - using (TraceCollector traceCollector = new TraceCollector(traceName, collectType, runPath)) + using (TraceCollector traceCollector = new TraceCollector(traceName, collectType, runPath, bdnProcess.Id)) { - bdnProcess.Start(); bdnProcess.BeginOutputReadLine(); bdnProcess.BeginErrorReadLine(); bdnProcess.WaitForExit((int)configuration.Environment.default_max_seconds * 1000); From 59b9135d784243ac33e4be2c73d6b9fb6f9f3008 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 14:25:55 +0200 Subject: [PATCH 04/10] Update gc-azure-pipelines.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- gc-azure-pipelines.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index 11f31f0d919..f96bc03f48c 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -35,8 +35,7 @@ jobs: - job: GCNotebookValidation_Windows pool: name: NetCore-Public - demands: - - ImageOverride -equals windows.vs2022.amd64.open + demands: ImageOverride -equals windows.vs2022.amd64.open steps: # Install dotnet. We temporarily need both .NET 8 (for building and running the projects) and .NET 9 (for installing deps). From fc4b0a05c958c2735a8c0a1bd9fd80aa6e49740e Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 22:00:40 +0200 Subject: [PATCH 05/10] Try to use the vmImage again --- gc-azure-pipelines.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index f96bc03f48c..9dc658c7623 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -34,8 +34,7 @@ jobs: # TODO: Add. - job: GCNotebookValidation_Windows pool: - name: NetCore-Public - demands: ImageOverride -equals windows.vs2022.amd64.open + vmImage: windows-2025 steps: # Install dotnet. We temporarily need both .NET 8 (for building and running the projects) and .NET 9 (for installing deps). From b804d27e5ae9189dc4af7ef13e5f52ff8e58899e Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 22:18:33 +0200 Subject: [PATCH 06/10] Add missing .NET 11 --- gc-azure-pipelines.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index 9dc658c7623..d94a537a08a 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -52,6 +52,11 @@ jobs: inputs: version: 10.0.x includePreviewVersions: true + - task: UseDotNet@2 + displayName: Install .NET 11.0 + inputs: + version: 11.0.x + includePreviewVersions: true - script: dotnet tool restore - script: dotnet tool install --global dotnet-repl - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.NotebookTests/GC.Infrastructure.NotebookTests.csproj --configuration Debug --framework net8.0 From 58f51cf1661aaa9e96aec71443409a3639079274 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Thu, 23 Apr 2026 23:57:41 +0200 Subject: [PATCH 07/10] Switch tests to core unit tests --- gc-azure-pipelines.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index d94a537a08a..f36b31d6f42 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -1,5 +1,5 @@ -# Project: src\benchmarks\gc\GC.Infrastructure\GC.Infrastructure.NotebookTests\GC.Infrastructure.NotebookTests.csproj. -# Output: artifacts\bin\GC.Infrastructure.NotebookTests\Debug\net8.0\GC.Infrastructure.NotebookTests.dll +# Project: src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core.UnitTests/GC.Infrastructure.Core.UnitTests.csproj. +# Output: artifacts\bin\GC.Infrastructure.Core.UnitTests\Debug\net8.0\GC.Infrastructure.Core.UnitTests.dll resources: containers: @@ -26,13 +26,13 @@ pr: jobs: # TODO: Add back once we have validated windows. - # - job: GCNotebookValidation_Ubuntu + # - job: GCInfrastructureValidation_Ubuntu # pool: # vmImage: ubuntu-latest # container: ubuntu_x64_build_container # TODO: Add. - - job: GCNotebookValidation_Windows + - job: GCInfrastructureValidation_Windows pool: vmImage: windows-2025 @@ -59,7 +59,7 @@ jobs: includePreviewVersions: true - script: dotnet tool restore - script: dotnet tool install --global dotnet-repl - - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.NotebookTests/GC.Infrastructure.NotebookTests.csproj --configuration Debug --framework net8.0 + - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core.UnitTests/GC.Infrastructure.Core.UnitTests.csproj --configuration Debug --framework net8.0 - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API/GC.Analysis.API.csproj --configuration Release --framework net8.0 # Run tests. Template installed from: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/vstest-v3?view=azure-pipelines @@ -68,16 +68,16 @@ jobs: # -------------- # # Test selection # # -------------- # - testAssemblyVer2: GC.Infrastructure.NotebookTests.dll - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Infrastructure.NotebookTests/Debug/net8.0' + testAssemblyVer2: GC.Infrastructure.Core.UnitTests.dll + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Infrastructure.Core.UnitTests/Debug/net8.0' # Uncomment to save results in the future. # resultsFolder: '$(Agent.TempDirectory)\TestResults' # string. Test results folder. Default: $(Agent.TempDirectory)\TestResults. # ----------------- # # Reporting options # # ----------------- # - testRunTitle: 'GC Notebook Test' + testRunTitle: 'GC Infrastructure Unit Test' # TODO: Double Check. platform: 'Windows' ## string. Build platform. # TODO: Double Check. - configuration: 'Test Notebooks' # string. Build configuration. \ No newline at end of file + configuration: 'Test GC Infrastructure' # string. Build configuration. From 364acd28f04d2c791fea8e875ea9c8ef3cb96a3f Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Fri, 24 Apr 2026 15:36:53 +0200 Subject: [PATCH 08/10] Try to fix the test task by explicitly specifying .NET 8.0 framework --- gc-azure-pipelines.yml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index f36b31d6f42..1db04e8e94c 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -59,8 +59,10 @@ jobs: includePreviewVersions: true - script: dotnet tool restore - script: dotnet tool install --global dotnet-repl + - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/GC.Infrastructure.Core.csproj --configuration Debug --framework net8.0 - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core.UnitTests/GC.Infrastructure.Core.UnitTests.csproj --configuration Debug --framework net8.0 - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API/GC.Analysis.API.csproj --configuration Release --framework net8.0 + - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API.UnitTests/GC.Analysis.API.UnitTests.csproj --configuration Release --framework net8.0 # Run tests. Template installed from: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/vstest-v3?view=azure-pipelines - task: VSTest@3 @@ -70,14 +72,34 @@ jobs: # -------------- # testAssemblyVer2: GC.Infrastructure.Core.UnitTests.dll searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Infrastructure.Core.UnitTests/Debug/net8.0' + otherConsoleOptions: '--Framework:net8.0' # Uncomment to save results in the future. # resultsFolder: '$(Agent.TempDirectory)\TestResults' # string. Test results folder. Default: $(Agent.TempDirectory)\TestResults. # ----------------- # # Reporting options # # ----------------- # - testRunTitle: 'GC Infrastructure Unit Test' + testRunTitle: 'GC Infrastructure Core Unit Test' # TODO: Double Check. platform: 'Windows' ## string. Build platform. # TODO: Double Check. - configuration: 'Test GC Infrastructure' # string. Build configuration. + configuration: 'Test GC Infrastructure Core' # string. Build configuration. + - task: VSTest@3 + inputs: + # -------------- # + # Test selection # + # -------------- # + testAssemblyVer2: GC.Analysis.API.UnitTests.dll + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Analysis.API.UnitTests/Debug/net8.0' + otherConsoleOptions: '--Framework:net8.0' + # Uncomment to save results in the future. + # resultsFolder: '$(Agent.TempDirectory)\TestResults' # string. Test results folder. Default: $(Agent.TempDirectory)\TestResults. + + # ----------------- # + # Reporting options # + # ----------------- # + testRunTitle: 'GC Analysis API Unit Test' + # TODO: Double Check. + platform: 'Windows' ## string. Build platform. + # TODO: Double Check. + configuration: 'Test GC Analysis API' # string. Build configuration. From 5be27e3b0beaf5cff354041a2f4ac433e808370f Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Fri, 24 Apr 2026 15:43:58 +0200 Subject: [PATCH 09/10] Fix indent tab and build config --- gc-azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gc-azure-pipelines.yml b/gc-azure-pipelines.yml index 1db04e8e94c..1d1fd31fb48 100644 --- a/gc-azure-pipelines.yml +++ b/gc-azure-pipelines.yml @@ -61,8 +61,8 @@ jobs: - script: dotnet tool install --global dotnet-repl - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core/GC.Infrastructure.Core.csproj --configuration Debug --framework net8.0 - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure.Core.UnitTests/GC.Infrastructure.Core.UnitTests.csproj --configuration Debug --framework net8.0 - - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API/GC.Analysis.API.csproj --configuration Release --framework net8.0 - - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API.UnitTests/GC.Analysis.API.UnitTests.csproj --configuration Release --framework net8.0 + - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API/GC.Analysis.API.csproj --configuration Debug --framework net8.0 + - script: dotnet build src/benchmarks/gc/GC.Infrastructure/GC.Analysis.API.UnitTests/GC.Analysis.API.UnitTests.csproj --configuration Debug --framework net8.0 # Run tests. Template installed from: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/vstest-v3?view=azure-pipelines - task: VSTest@3 @@ -72,7 +72,7 @@ jobs: # -------------- # testAssemblyVer2: GC.Infrastructure.Core.UnitTests.dll searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Infrastructure.Core.UnitTests/Debug/net8.0' - otherConsoleOptions: '--Framework:net8.0' + otherConsoleOptions: '--Framework:net8.0' # Uncomment to save results in the future. # resultsFolder: '$(Agent.TempDirectory)\TestResults' # string. Test results folder. Default: $(Agent.TempDirectory)\TestResults. @@ -91,7 +91,7 @@ jobs: # -------------- # testAssemblyVer2: GC.Analysis.API.UnitTests.dll searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/bin/GC.Analysis.API.UnitTests/Debug/net8.0' - otherConsoleOptions: '--Framework:net8.0' + otherConsoleOptions: '--Framework:net8.0' # Uncomment to save results in the future. # resultsFolder: '$(Agent.TempDirectory)\TestResults' # string. Test results folder. Default: $(Agent.TempDirectory)\TestResults. From 40d42d20c7716917765dee997fb5f1f42c0f5a35 Mon Sep 17 00:00:00 2001 From: Jan Vorlicek Date: Fri, 24 Apr 2026 16:12:16 +0200 Subject: [PATCH 10/10] Remove temporary change in .cs file --- .../Commands/Microbenchmark/MicrobenchmarkCommand.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs index f51847fc3b6..ca063389ef5 100644 --- a/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs +++ b/src/benchmarks/gc/GC.Infrastructure/GC.Infrastructure/Commands/Microbenchmark/MicrobenchmarkCommand.cs @@ -176,10 +176,10 @@ public static MicrobenchmarkOutputResults RunMicrobenchmarks(MicrobenchmarkConfi consoleError.AppendLine(e.Data); }; - bdnProcess.Start(); string traceName = $"{benchmarkCleanedName}_{index}"; - using (TraceCollector traceCollector = new TraceCollector(traceName, collectType, runPath, bdnProcess.Id)) + using (TraceCollector traceCollector = new TraceCollector(traceName, collectType, runPath)) { + bdnProcess.Start(); bdnProcess.BeginOutputReadLine(); bdnProcess.BeginErrorReadLine(); bdnProcess.WaitForExit((int)configuration.Environment.default_max_seconds * 1000);