Skip to content

Commit 3ce2c88

Browse files
Enable SuperPMI collection of a libraries tests run (#91101)
Currently, we have a PMI collection of the libraries tests. A PMI collection doesn't represent actual code run, so doesn't have PGO data and compilations, OSR compilations, and tends to overemphasize generics since it attempts many instantiations that might not occur in practice. Similar to #74961, which enabled a collection of a run coreclr tests, this change enables a collection of a run of libraries tests. We collect two different scenarios: "normal", meaning no configuration switch variables set, and "no_tiered_compilation", meaning we set DOTNET_TieredCompilation=0. Because the amount of data collected is so large, we create each of these scenarios as a separate job, and a separate resulting .mch file. (If done all at once, we end up running out of disk space on the Azure DevOps machines that collect all the per-Helix collections and merge them into the single, large resulting .mch file.) The changes here are similar to (and sometimes a copy of) the changes in #74961, altered because the process of running the libraries tests is somewhat different in a few ways. The "control flow" is as follows: - eng/pipelines/coreclr/superpmi-collect.yml: specifies two additional collection runs, as described above. - eng/pipelines/libraries/run-test-job.yml: specifies the scenarios to run, the additional job dependencies, and adds the logic to post-process all the per-Helix-machine .mch files - eng/pipelines/libraries/superpmi-collect-variables.yml: extract out SuperPMI-specific variables from run-test-job.yml - eng/pipelines/libraries/superpmi-postprocess-step.yml: extract out SuperPMI post-processing steps from run-test-job.yml - src/libraries/sendtohelix.proj: additional logic to add files needed for collection to the Helix correlation payload. In particular, we need superpmi.py (and dependencies), and superpmi/mcs/superpmi-shim-collector, as well as the JIT dll itself (which is already in the payload, but not in an easily found location). We could probably significantly trim down what we copy, as currently I just copy the entire Core_Root, which is over 1GB, and we only need 4 files. - src/libraries/sendtohelixhelp.proj: call sendtohelix-superpmi-collect.targets, and define Helix artifacts to download to the AzDO machine. - src/libraries/sendtohelix-superpmi-collect.targets: extract out SuperPMI specific HelixPreCommand and HelixPostCommand logic from sendtohelixhelp.proj. Define some Helix "pre" and "post" commands. The "pre" commands set up the collection before the tests are run. The "post" commands merge/dedup/thin the collection, preparing it to be uploaded to artifact storage. - eng/testing/RunnerTemplate.cmd/sh: This is built into every libraries test RunTests.cmd/sh file, and is activated (enabled superpmi collection) by the Helix "pre" commands mentioned above. The change to CultureInfoCurrentCulture.cs is to fix a problem where the test creates a new clean environment but copies over a few environment variables. It needs to also copy over SuperPMIShim* variables. The collected data is quite large: about 700,000 methods in the "normal" scenario, and 300,000 in the "no_tiered_compilation" scenario, for a total of about 17GB for both.
1 parent d28bac7 commit 3ce2c88

File tree

15 files changed

+435
-21
lines changed

15 files changed

+435
-21
lines changed

eng/pipelines/common/templates/runtimes/run-test-job.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ jobs:
631631
displayName: Create SuperPMI directories
632632
condition: always()
633633
634-
- script: $(PythonScript) $(Build.SourcesDirectory)/src/coreclr/scripts/superpmi.py merge-mch -log_level DEBUG -pattern $(MchFilesLocation)$(CollectionName).$(CollectionType)*.mch -output_mch_path $(MergedMchFileLocation)$(CollectionName).$(CollectionType).$(MchFileTag).mch
634+
- script: $(PythonScript) $(Build.SourcesDirectory)/src/coreclr/scripts/superpmi.py merge-mch -log_level DEBUG -pattern $(MchFilesLocation)$(CollectionName).$(CollectionType)*.mch -output_mch_path $(MergedMchFileLocation)$(CollectionName).$(CollectionType).$(MchFileTag).mch
635635
displayName: 'Merge $(CollectionName)-$(CollectionType) SuperPMI collections'
636636
condition: always()
637637

eng/pipelines/coreclr/superpmi-collect.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,3 +234,57 @@ extends:
234234
testGroup: outerloop
235235
liveLibrariesBuildConfig: Release
236236
SuperPmiCollect: true
237+
238+
#
239+
# Collection of libraries test run: normal
240+
# Libraries Test Run using Release libraries, and Checked CoreCLR
241+
#
242+
- template: /eng/pipelines/common/platform-matrix.yml
243+
parameters:
244+
jobTemplate: /eng/pipelines/libraries/run-test-job.yml
245+
buildConfig: Release
246+
platforms:
247+
- osx_arm64
248+
- linux_arm
249+
- linux_arm64
250+
- linux_x64
251+
- windows_x64
252+
- windows_x86
253+
- windows_arm64
254+
helixQueueGroup: superpmi
255+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
256+
jobParameters:
257+
testScope: innerloop
258+
liveRuntimeBuildConfig: checked
259+
dependsOnTestBuildConfiguration: Release
260+
dependsOnTestArchitecture: x64
261+
coreclrTestGroup: superpmi_collection
262+
SuperPmiCollect: true
263+
SuperPmiCollectionName: libraries_tests
264+
265+
#
266+
# Collection of libraries test run: no_tiered_compilation
267+
# Libraries Test Run using Release libraries, and Checked CoreCLR
268+
#
269+
- template: /eng/pipelines/common/platform-matrix.yml
270+
parameters:
271+
jobTemplate: /eng/pipelines/libraries/run-test-job.yml
272+
buildConfig: Release
273+
platforms:
274+
- osx_arm64
275+
- linux_arm
276+
- linux_arm64
277+
- linux_x64
278+
- windows_x64
279+
- windows_x86
280+
- windows_arm64
281+
helixQueueGroup: superpmi
282+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
283+
jobParameters:
284+
testScope: innerloop
285+
liveRuntimeBuildConfig: checked
286+
dependsOnTestBuildConfiguration: Release
287+
dependsOnTestArchitecture: x64
288+
coreclrTestGroup: superpmi_collection_no_tiered_compilation
289+
SuperPmiCollect: true
290+
SuperPmiCollectionName: libraries_tests_no_tiered_compilation

eng/pipelines/libraries/base-job.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ parameters:
2424
pool: ''
2525
runTests: false
2626
pgoType: ''
27+
SuperPmiCollect: false
2728

2829
jobs:
2930
- template: /eng/common/templates/job/job.yml

eng/pipelines/libraries/helix.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ parameters:
1313
extraHelixArguments: ''
1414
shouldContinueOnError: false
1515
scenarios: ''
16+
SuperPmiCollect: ''
17+
SuperPmiCollectionType: ''
18+
SuperPmiCollectionName: ''
1619

1720
steps:
1821
- script: $(_msbuildCommand) $(_warnAsErrorParamHelixOverride) -restore
@@ -34,6 +37,9 @@ steps:
3437
env:
3538
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
3639
_Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list
40+
_SuperPmiCollect: ${{ parameters.SuperPmiCollect }}
41+
_SuperPmiCollectionType: ${{ parameters.SuperPmiCollectionType }}
42+
_SuperPmiCollectionName: ${{ parameters.SuperPmiCollectionName }}
3743

3844
${{ if eq(variables['System.TeamProject'], 'internal') }}:
3945
HelixAccessToken: $(HelixApiAccessToken)

eng/pipelines/libraries/run-test-job.yml

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ parameters:
2323
# stress modes that each test will be run with. This is the same usage as 'testGroup' in
2424
# eng/pipelines/common/templates/runtimes/run-test-job.yml.
2525
coreclrTestGroup: ''
26+
SuperPmiCollect: false
27+
SuperPmiCollectionType: 'run'
28+
SuperPmiCollectionName: 'libraries_tests'
2629
dependsOn: []
2730

2831
jobs:
@@ -42,13 +45,18 @@ jobs:
4245
container: ${{ parameters.container }}
4346
condition: ${{ parameters.condition }}
4447
testScope: ${{ parameters.testScope }}
48+
SuperPmiCollect: ${{ parameters.SuperPmiCollect }}
4549
runTests: true
46-
${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
47-
displayName: ${{ format('Test Run {0} {1}', parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
48-
name: ${{ format('test_run_{0}_{1}', parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
49-
${{ if eq(parameters.liveRuntimeBuildConfig, '') }}:
50-
displayName: 'Test Run'
51-
name: test_run
50+
${{ if eq(parameters.SuperPmiCollect, true) }}:
51+
displayName: ${{ format('SuperPMI collection {0} {1} {2}', parameters.SuperPmiCollectionName, parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
52+
name: ${{ format('spmi_{0}_{1}_{2}', parameters.SuperPmiCollectionName, parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
53+
${{ else }}:
54+
${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
55+
displayName: ${{ format('Test Run {0} {1}', parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
56+
name: ${{ format('test_run_{0}_{1}', parameters.liveRuntimeBuildConfig, parameters.runtimeDisplayName) }}
57+
${{ if eq(parameters.liveRuntimeBuildConfig, '') }}:
58+
displayName: 'Test Run'
59+
name: test_run
5260
${{ if eq(parameters.interpreter, 'true') }}:
5361
testDisplayName: ${{ parameters.runtimeFlavor }}_interpreter_${{ parameters.liveRuntimeBuildConfig }}
5462

@@ -64,14 +72,36 @@ jobs:
6472
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
6573
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
6674
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
75+
# SuperPMI collection needs to run mcs.exe on the AzDO machine. Assume that's an x64 machine, and download an x64 product build if needed.
76+
- ${{ if and(eq(parameters.SuperPmiCollect, true), ne(parameters.archType, 'x64')) }}:
77+
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', 'coreclr', '', parameters.osGroup, parameters.osSubgroup, 'x64', parameters.liveRuntimeBuildConfig) }}
6778

6879
variables:
80+
6981
- librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
7082
- _archiveTestsParameter: /p:ArchiveTests=true
7183

84+
- ${{ if eq(parameters.SuperPmiCollect, true) }}:
85+
- template: /eng/pipelines/libraries/superpmi-collect-variables.yml
86+
parameters:
87+
buildConfig: ${{ parameters.buildConfig }}
88+
osGroup: ${{ parameters.osGroup }}
89+
archType: ${{ parameters.archType }}
90+
runtimeFlavor: ${{ parameters.runtimeFlavor }}
91+
7292
- ${{ parameters.variables }}
7393

7494
steps:
95+
96+
# SuperPMI collection: Download x64 coreclr if running on non-x64 configuration (needed for mcs.exe on AzDO machine; see `SuperPmiMcsPath`.
97+
- ${{ if and(eq(parameters.SuperPmiCollect, true), ne(parameters.archType, 'x64')) }}:
98+
- template: /eng/pipelines/common/download-artifact-step.yml
99+
parameters:
100+
unpackFolder: $(_runtimeX64DownloadPath)
101+
artifactFileName: 'CoreCLRProduct___${{ parameters.osGroup }}${{ parameters.osSubgroup }}_x64_${{ parameters.liveRuntimeBuildConfig }}$(archiveExtension)'
102+
artifactName: 'CoreCLRProduct___${{ parameters.osGroup }}${{ parameters.osSubgroup }}_x64_${{ parameters.liveRuntimeBuildConfig }}'
103+
displayName: 'CoreCLR product build (x64)'
104+
75105
- template: /eng/pipelines/common/download-artifact-step.yml
76106
parameters:
77107
displayName: Build Assets
@@ -113,6 +143,9 @@ jobs:
113143
shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
114144
creator: dotnet-bot
115145
testRunNamePrefixSuffix: $(_testRunNamePrefixSuffix)
146+
SuperPmiCollect: ${{ parameters.SuperPmiCollect }}
147+
SuperPmiCollectionType: ${{ parameters.SuperPmiCollectionType }}
148+
SuperPmiCollectionName: ${{ parameters.SuperPmiCollectionName }}
116149

117150
# coreclrTestGroup: The following mappings of 'coreclrTestGroup' to 'scenarios' is copied from
118151
# eng/pipelines/common/templates/runtimes/run-test-job.yml (with 'testGroup' replaced by 'coreclrTestGroup'
@@ -137,6 +170,12 @@ jobs:
137170
${{ else }}:
138171
extraHelixArguments: $(_extraHelixArguments)
139172

173+
${{ if in(parameters.coreclrTestGroup, 'superpmi_collection') }}:
174+
scenarios:
175+
- normal
176+
${{ if in(parameters.coreclrTestGroup, 'superpmi_collection_no_tiered_compilation') }}:
177+
scenarios:
178+
- no_tiered_compilation
140179
${{ if in(parameters.coreclrTestGroup, 'jitstress') }}:
141180
scenarios:
142181
- no_tiered_compilation
@@ -205,3 +244,19 @@ jobs:
205244
- syntheticpgo
206245
- syntheticpgo_blend
207246

247+
- ${{ if eq(parameters.SuperPmiCollect, true) }}:
248+
- template: /eng/pipelines/libraries/superpmi-postprocess-step.yml
249+
parameters:
250+
buildConfig: ${{ parameters.buildConfig }}
251+
buildConfigUpper: $(buildConfigUpper)
252+
osGroup: ${{ parameters.osGroup }}
253+
osSubgroup: ${{ parameters.osSubgroup }}
254+
archType: ${{ parameters.archType }}
255+
SuperPmiCollectionType: ${{ parameters.SuperPmiCollectionType }}
256+
SuperPmiCollectionName: ${{ parameters.SuperPmiCollectionName }}
257+
MergedMchFileLocation: $(MergedMchFileLocation)
258+
MchFilesLocation: $(MchFilesLocation)
259+
SpmiLogsLocation: $(SpmiLogsLocation)
260+
SuperPmiMcsPath: $(SuperPmiMcsPath)
261+
PythonScript: $(PythonScript)
262+
PipScript: $(PipScript)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
parameters:
2+
buildConfig: ''
3+
osGroup: ''
4+
archType: ''
5+
runtimeFlavor: 'coreclr'
6+
7+
variables:
8+
9+
- name: buildConfigUpper
10+
${{ if eq(parameters.buildConfig, 'debug') }}:
11+
value: 'Debug'
12+
${{ if eq(parameters.buildConfig, 'release') }}:
13+
value: 'Release'
14+
- name: _runtimeX64DownloadPath
15+
value: ''
16+
# superpmi.py 'merge-mch' needs to be able to find the mcs tool. Point SuperPmiMcsPath at the downloaded CoreCLR binaries. For non-x64 targets, download an x64
17+
# build and point at that. Pass this to superpmi.py as the '-core_root' argument. It's not actually a "Core_Root" directory, but all it needs is to find mcs.
18+
- name: SuperPmiMcsPath
19+
value: $(_runtimeDownloadPath)
20+
- ${{ if ne(parameters.archType, 'x64') }}:
21+
- name: _runtimeX64DownloadPath
22+
value: '$(Build.SourcesDirectory)/artifacts/transport/${{ parameters.runtimeFlavor }}.x64'
23+
- name: SuperPmiMcsPath
24+
value: $(_runtimeX64DownloadPath)
25+
- ${{ if eq(parameters.osGroup, 'windows') }}:
26+
- name: PythonScript
27+
value: 'py -3'
28+
- name: PipScript
29+
value: 'py -3 -m pip'
30+
- name: MchFilesLocation
31+
value: '$(Build.SourcesDirectory)\artifacts\helixresults\'
32+
- name: MergedMchFileLocation
33+
value: '$(Build.SourcesDirectory)\artifacts\spmi_collection\'
34+
- name: SpmiLogsLocation
35+
value: '$(Build.SourcesDirectory)\artifacts\spmi_logs\'
36+
- ${{ if ne(parameters.osGroup, 'windows') }}:
37+
- name: PythonScript
38+
value: 'python3'
39+
- name: PipScript
40+
value: 'pip3'
41+
- name: MchFilesLocation
42+
value: '$(Build.SourcesDirectory)/artifacts/helixresults/'
43+
- name: MergedMchFileLocation
44+
value: '$(Build.SourcesDirectory)/artifacts/spmi_collection/'
45+
- name: SpmiLogsLocation
46+
value: '$(Build.SourcesDirectory)/artifacts/spmi_logs/'
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
########################################################################################################
2+
#
3+
# Finalize SuperPMI collection: (1) merge all MCH files generated by all Helix jobs, (2) upload MCH file
4+
# to Azure Storage, (3) upload log files. Note that the steps are "condition: always()" because we want
5+
# to upload as much of the collection as possible, even if there were test failures.
6+
#
7+
########################################################################################################
8+
9+
parameters:
10+
buildConfig: ''
11+
buildConfigUpper: ''
12+
osGroup: ''
13+
osSubgroup: ''
14+
archType: ''
15+
SuperPmiCollectionType: 'run'
16+
SuperPmiCollectionName: 'libraries_tests'
17+
MergedMchFileLocation: ''
18+
MchFilesLocation: ''
19+
SpmiLogsLocation: ''
20+
SuperPmiMcsPath: ''
21+
PythonScript: ''
22+
PipScript: ''
23+
24+
steps:
25+
26+
# Create required directories for merged mch collection and superpmi logs
27+
- ${{ if ne(parameters.osGroup, 'windows') }}:
28+
- script: |
29+
mkdir -p ${{ parameters.MergedMchFileLocation }}
30+
mkdir -p ${{ parameters.SpmiLogsLocation }}
31+
displayName: 'Create SuperPMI directories'
32+
condition: always()
33+
- ${{ if eq(parameters.osGroup, 'windows') }}:
34+
- script: |
35+
mkdir ${{ parameters.MergedMchFileLocation }}
36+
mkdir ${{ parameters.SpmiLogsLocation }}
37+
displayName: 'Create SuperPMI directories'
38+
condition: always()
39+
40+
- script: ${{ parameters.PythonScript }} $(Build.SourcesDirectory)/src/coreclr/scripts/superpmi.py merge-mch -log_level DEBUG -pattern ${{ parameters.MchFilesLocation }}${{ parameters.SuperPmiCollectionName }}.${{ parameters.SuperPmiCollectionType }}*.mch -output_mch_path ${{ parameters.MergedMchFileLocation }}${{ parameters.SuperPmiCollectionName }}.${{ parameters.SuperPmiCollectionType }}.${{ parameters.osGroup }}.${{ parameters.archType }}.${{ parameters.buildConfig }}.mch -core_root ${{ parameters.SuperPmiMcsPath }}
41+
displayName: 'Merge ${{ parameters.SuperPmiCollectionName }}-${{ parameters.SuperPmiCollectionType }} SuperPMI collections'
42+
condition: always()
43+
44+
- template: /eng/pipelines/common/upload-artifact-step.yml
45+
parameters:
46+
rootFolder: ${{ parameters.MergedMchFileLocation }}
47+
includeRootFolder: false
48+
archiveType: $(archiveType)
49+
tarCompression: $(tarCompression)
50+
archiveExtension: $(archiveExtension)
51+
artifactName: 'SuperPMI_Collection_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
52+
displayName: 'Upload artifacts SuperPMI ${{ parameters.SuperPmiCollectionName }}-${{ parameters.SuperPmiCollectionType }} collection'
53+
condition: always()
54+
55+
# Add authenticated pip feed
56+
- task: PipAuthenticate@1
57+
displayName: 'Pip Authenticate'
58+
inputs:
59+
artifactFeeds: public/dotnet-public-pypi
60+
onlyAddExtraIndex: false
61+
condition: always()
62+
63+
# Ensure the Python azure-storage-blob package is installed before doing the upload.
64+
- script: ${{ parameters.PipScript }} install --user --upgrade pip && ${{ parameters.PipScript }} install --user azure.storage.blob==12.5.0 --force-reinstall
65+
displayName: Upgrade Pip to latest and install azure-storage-blob Python package
66+
condition: always()
67+
68+
- script: ${{ parameters.PythonScript }} $(Build.SourcesDirectory)/src/coreclr/scripts/superpmi.py upload -log_level DEBUG -arch ${{ parameters.archType }} -build_type ${{ parameters.buildConfig }} -mch_files ${{ parameters.MergedMchFileLocation }}${{ parameters.SuperPmiCollectionName }}.${{ parameters.SuperPmiCollectionType }}.${{ parameters.osGroup }}.${{ parameters.archType }}.${{ parameters.buildConfig }}.mch -core_root $(Build.SourcesDirectory)/artifacts/bin/coreclr/${{ parameters.osGroup }}.x64.${{ parameters.buildConfigUpper }}
69+
displayName: 'Upload SuperPMI ${{ parameters.SuperPmiCollectionName }}-${{ parameters.SuperPmiCollectionType }} collection to Azure Storage'
70+
condition: always()
71+
env:
72+
CLRJIT_AZ_KEY: $(clrjit_key1) # secret key stored as variable in pipeline
73+
74+
- task: CopyFiles@2
75+
displayName: Copying superpmi.log of all partitions
76+
inputs:
77+
sourceFolder: '${{ parameters.MchFilesLocation }}'
78+
contents: '**/${{ parameters.SuperPmiCollectionName }}.${{ parameters.SuperPmiCollectionType }}*.log'
79+
targetFolder: '${{ parameters.SpmiLogsLocation }}'
80+
condition: always()
81+
82+
- task: PublishPipelineArtifact@1
83+
displayName: Publish SuperPMI logs
84+
inputs:
85+
targetPath: ${{ parameters.SpmiLogsLocation }}
86+
artifactName: 'SuperPMI_Logs_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}'
87+
condition: always()

eng/testing/RunnerTemplate.cmd

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,26 @@ set DOTNET_MULTILEVEL_LOOKUP=0
4747
:: Assume failure
4848
set HAS_TEST_RESULTS=0
4949

50+
:: Support for SuperPMI collection
51+
REM SuperPMI collection
52+
if not defined spmi_enable_collection goto :skip_spmi_enable_collection
53+
echo SuperPMI collection enabled
54+
REM spmi_collect_dir and spmi_core_root need to be set before this script is run, if SuperPMI collection is enabled.
55+
if not defined spmi_collect_dir echo ERROR: spmi_collect_dir not defined&exit /b 1
56+
if not defined spmi_core_root echo ERROR: spmi_core_root not defined&exit /b 1
57+
if not exist %spmi_collect_dir% mkdir %spmi_collect_dir%
58+
set SuperPMIShimLogPath=%spmi_collect_dir%
59+
set SuperPMIShimPath=%spmi_core_root%\clrjit.dll
60+
if not exist %SuperPMIShimPath% echo ERROR: %SuperPMIShimPath% not found&exit /b 1
61+
set DOTNET_EnableExtraSuperPmiQueries=1
62+
set DOTNET_JitPath=%spmi_core_root%\superpmi-shim-collector.dll
63+
if not exist %DOTNET_JitPath% echo ERROR: %DOTNET_JitPath% not found&exit /b 1
64+
echo SuperPMIShimLogPath=%SuperPMIShimLogPath%
65+
echo SuperPMIShimPath=%SuperPMIShimPath%
66+
echo DOTNET_EnableExtraSuperPmiQueries=%DOTNET_EnableExtraSuperPmiQueries%
67+
echo DOTNET_JitPath=%DOTNET_JitPath%
68+
:skip_spmi_enable_collection
69+
5070
:: ========================= BEGIN Test Execution =============================
5171
echo ----- start %DATE% %TIME% =============== To repro directly: =====================================================
5272
echo pushd %EXECUTION_DIR%

0 commit comments

Comments
 (0)