Add interpreter SOS leg to runtime-diagnostics pipeline#127840
Add interpreter SOS leg to runtime-diagnostics pipeline#127840max-charlamb wants to merge 1 commit intodotnet:mainfrom
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @BrzVlad, @janvorli, @kg |
There was a problem hiding this comment.
Pull request overview
This PR extends the runtime-diagnostics Azure Pipelines definition to add a new Interpreter SOS test leg that runs SOS diagnostics tests against a Checked CoreCLR build (required because FEATURE_INTERPRETER isn’t present in Release CoreCLR drops). It also updates the shared diagnostics job template to optionally pass a new -testInterpreter flag through to the diagnostics build script.
Changes:
- Add a new Checked CoreCLR build job that publishes a distinct runtime artifact (
..._coreclr_Checked) to avoid colliding with the existing Release artifact. - Add a new Interpreter test job (modeled after the existing cDAC job) that depends on the Checked build output and is the only job that sets
testInterpreter: true. - Extend
runtime-diag-job.ymlwith atestInterpreterparameter and plumb it through as-testInterpreterwhen enabled.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| eng/pipelines/runtime-diagnostics.yml | Adds a Checked CoreCLR build artifact + a new Interpreter SOS test job that consumes it. |
| eng/pipelines/diagnostics/runtime-diag-job.yml | Adds testInterpreter parameter and forwards it as -testInterpreter to the diagnostics build script. |
| platforms: | ||
| - windows_x64 | ||
| jobParameters: | ||
| buildArgs: -s clr+libs+tools.cdac+host+packs -c Debug -rc Checked -lc $(_BuildConfig) |
There was a problem hiding this comment.
Note that here you can pass -clrinterpreter (which enables it in release build as well), if you believe it is more consistent to test it directly in release.
Adds an opt-in Interpreter SOS test leg to runtime-diagnostics.yml that
exercises the diagnostics-side SOSInterpreterTests against a Checked CoreCLR
drop. FEATURE_INTERPRETER is only compiled into Debug/Checked CoreCLR, so the
existing Release build leg cannot run this test.
Changes:
* eng/pipelines/diagnostics/runtime-diag-job.yml: adds a testInterpreter
parameter (default false). When true, _TestInterpreterArgs resolves to
-testInterpreter and is forwarded to the diagnostics build script alongside
the existing -useCdac / -noFallback flags. Default-false invocation is
identical to today.
* eng/pipelines/runtime-diagnostics.yml:
- New build leg that produces a Checked CoreCLR (libs/SDK stay Release) under
a distinct artifact name (..._coreclr_Checked).
- New Interpreter test job that depends on the Checked build leg, downloads
its artifact, and is the only job that sets testInterpreter: true.
- The cDAC / cDAC_no_fallback / DAC test jobs and the existing Release build
leg are unchanged.
Tested with a manual ADO queue using diagnosticsBranch pointed at the
companion diagnostics PR (dotnet/diagnostics#5829).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
c7d325f to
e6dd287
Compare
Summary
Adds an opt-in Interpreter SOS test leg to
runtime-diagnostics.ymlthat exercises the diagnostics-sideSOSInterpreterTests.InterpreterStackTestagainst a Checked CoreCLR drop.FEATURE_INTERPRETERis only compiled into Debug/Checked CoreCLR, so the existing Release build leg cannot run this test.Companion diagnostics PR: dotnet/diagnostics#5829.
Changes
eng/pipelines/diagnostics/runtime-diag-job.ymltestInterpreterparameter (default false)._TestInterpreterArgsderived variable, set to-testInterpreterwhen the parameter is true.-useCdac/-noFallbackflags.eng/pipelines/runtime-diagnostics.yml-c Debug -rc Checked -lc $(_BuildConfig)). Distinct artifact name (..._coreclr_Checked) so it does not collide with the existing Release leg.Interpretertest job modelled on the existingcDACjob:$(Build.SourcesDirectory)/artifacts/runtime.testInterpreter: true.useCdac: true,classFilter: SOS.The existing cDAC / cDAC_no_fallback / DAC test jobs and the existing Release build leg are unchanged.
Activation flow
When the new leg runs,
runtime-diag-job.ymlinvokes the diagnostics build script with-testInterpreter, which exportsSOS_TEST_INTERPRETER=true.SOSRunner(in the diagnostics PR) seesconfig.TestInterpreter == trueand setsDOTNET_Interpreter=InterpTestMethod*on the debuggee process. The debuggee csproj declares<InterpreterTest>true</InterpreterTest>; the rest of the wiring is in the diagnostics PR.Validation
Manually queued the
runtime-diagnosticspipeline in dnceng-public/public against this branch with parameterdiagnosticsBranch=dev/max-charlamb/sos-interpreter-testsso the pipeline checks out the companion diagnostics PR.Expected:
Interpreter_windows_x64_releasejob runs and passes.testInterpreterand produce the same script invocation as today.