Skip to content

Commit ddae9bd

Browse files
authored
[mono][infra] Enable runtime tests in fullAOT LLVM mode on linux-x64 (#92057)
This PR enables jobs to run runtime tests in fullAOT LLVM mode on linux-x64. The jobs utilize the CBL-Mariner docker image, which contains the clang toolchain instead of binutils. Due to OOM and timeout issues, the tests are split into two jobs: intrinsics and other runtime tests.
1 parent f91b911 commit ddae9bd

File tree

16 files changed

+192
-101
lines changed

16 files changed

+192
-101
lines changed

eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ steps:
6868
displayName: "AOT compile CoreCLR tests"
6969
target: ${{ coalesce(parameters.llvmAotStepContainer, parameters.container) }}
7070
- ${{ if in(parameters.runtimeVariant, 'llvmfullaot', 'minifullaot') }}:
71-
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }}
71+
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:1
7272
displayName: "AOT compile CoreCLR tests"
7373
target: ${{ coalesce(parameters.llvmAotStepContainer, parameters.container) }}
7474
- ${{ if eq(parameters.archType, 'arm64') }}:

eng/pipelines/extra-platforms/runtime-extra-platforms-other.yml

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -108,47 +108,6 @@ jobs:
108108
eq(variables['monoContainsChange'], true),
109109
eq(variables['isRollingBuild'], true))
110110
111-
#
112-
# Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT
113-
# Only when Mono is changed
114-
#
115-
# Disabled due to OOM issues https://github.com/dotnet/runtime/issues/90427
116-
# - template: /eng/pipelines/common/platform-matrix.yml
117-
# parameters:
118-
# jobTemplate: /eng/pipelines/common/global-build-job.yml
119-
# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
120-
# buildConfig: Release
121-
# runtimeFlavor: mono
122-
# platforms:
123-
# - linux_x64
124-
# - linux_arm64
125-
# variables:
126-
# - name: timeoutPerTestInMinutes
127-
# value: 60
128-
# - name: timeoutPerTestCollectionInMinutes
129-
# value: 180
130-
# jobParameters:
131-
# testGroup: innerloop
132-
# nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests
133-
# runtimeVariant: llvmfullaot
134-
# buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
135-
# timeoutInMinutes: 300
136-
# isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
137-
138-
# condition: >-
139-
# or(
140-
# eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
141-
# eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
142-
# eq(variables['isRollingBuild'], true))
143-
# postBuildSteps:
144-
# - template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
145-
# parameters:
146-
# creator: dotnet-bot
147-
# llvmAotStepContainer: linux_x64_llvmaot
148-
# testRunNamePrefixSuffix: Mono_Release
149-
# extraVariablesTemplates:
150-
# - template: /eng/pipelines/common/templates/runtimes/test-variables.yml
151-
152111
#
153112
# Mono CoreCLR runtime test executions using live libraries and mini Full AOT
154113
# Only when Mono is changed
@@ -161,6 +120,8 @@ jobs:
161120
runtimeFlavor: mono
162121
platforms:
163122
- linux_x64
123+
# Tracking issue: https://github.com/dotnet/runtime/issues/90427
124+
# linux_arm64
164125
variables:
165126
- name: timeoutPerTestInMinutes
166127
value: 60
@@ -172,6 +133,12 @@ jobs:
172133
runtimeVariant: minifullaot
173134
buildArgs: -s mono+libs+clr.hosts -c Release
174135
timeoutInMinutes: 300
136+
isExtraPlatformsBuild: ${{ parameters.isExtraPlatformsBuild }}
137+
condition: >-
138+
or(
139+
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
140+
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
141+
eq(variables['isRollingBuild'], true))
175142
postBuildSteps:
176143
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
177144
parameters:

eng/pipelines/runtime-llvm.yml

Lines changed: 91 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,6 @@ schedules:
2828
- main
2929
always: false # run only if there were changes since the last successful scheduled run.
3030

31-
pr:
32-
branches:
33-
include:
34-
- main
35-
- release/*.*
36-
paths:
37-
include:
38-
- '*'
39-
exclude:
40-
- '**.md'
41-
- eng/Version.Details.xml
42-
- .devcontainer/*
43-
- .github/*
44-
- docs/*
45-
- LICENSE.TXT
46-
- PATENTS.TXT
47-
- THIRD-PARTY-NOTICES.TXT
48-
4931
variables:
5032
- template: /eng/pipelines/common/variables.yml
5133

@@ -117,8 +99,7 @@ extends:
11799
jobParameters:
118100
testGroup: innerloop
119101
nameSuffix: AllSubsets_Mono_LLVMAOT
120-
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
121-
/p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
102+
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true
122103
condition: >-
123104
or(
124105
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
@@ -136,8 +117,7 @@ extends:
136117
jobParameters:
137118
testGroup: innerloop
138119
nameSuffix: AllSubsets_Mono_LLVMAOT
139-
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
140-
/p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
120+
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) /p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true
141121
condition: >-
142122
or(
143123
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
@@ -149,55 +129,123 @@ extends:
149129
parameters:
150130
jobTemplate: /eng/pipelines/common/global-build-job.yml
151131
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
152-
buildConfig: release
132+
buildConfig: Release
153133
runtimeFlavor: mono
154134
platforms:
155-
- linux_x64
156-
# Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation
157-
#- linux_arm64
135+
- linux_x64
136+
# Disabled pending outcome of https://github.com/dotnet/runtime/issues/60234 investigation
137+
#- linux_arm64
138+
variables:
139+
- name: timeoutPerTestInMinutes
140+
value: 60
141+
- name: timeoutPerTestCollectionInMinutes
142+
value: 180
158143
jobParameters:
159144
testGroup: innerloop
160145
nameSuffix: AllSubsets_Mono_LLVMAOT_RuntimeTests
161-
buildArgs: -s mono+clr.iltools+clr.hosts+libs+host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }}
162-
/p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
163-
postBuildSteps:
164-
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
165-
parameters:
166-
creator: dotnet-bot
167-
testRunNamePrefixSuffix: Mono_Release
168-
llvmAotStepContainer: linux_x64_llvmaot
169-
runtimeVariant: llvmaot
146+
runtimeVariant: llvmaot
147+
buildArgs: -s mono+libs+clr.hosts+clr.iltools -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} /p:MonoEnableLLVM=true
148+
timeoutInMinutes: 360
170149
condition: >-
171150
or(
172151
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
173152
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
174153
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
175154
eq(variables['isRollingBuild'], true))
155+
postBuildSteps:
156+
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
157+
parameters:
158+
creator: dotnet-bot
159+
llvmAotStepContainer: linux_x64_llvmaot
160+
testRunNamePrefixSuffix: Mono_Release
161+
extraVariablesTemplates:
162+
- template: /eng/pipelines/common/templates/runtimes/test-variables.yml
176163

164+
#
165+
# Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT
166+
# Only when Mono is changed
167+
# This job runs non-intrinsics runtime tests due to OOM issues
168+
#
177169
- template: /eng/pipelines/common/platform-matrix.yml
178170
parameters:
179171
jobTemplate: /eng/pipelines/common/global-build-job.yml
180172
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
181-
buildConfig: release
173+
buildConfig: Release
182174
runtimeFlavor: mono
183175
platforms:
184-
- linux_x64
185-
- linux_arm64
176+
- linux_x64
177+
# Tracking issue: https://github.com/dotnet/runtime/issues/90427
178+
# - linux_arm64
179+
variables:
180+
- name: timeoutPerTestInMinutes
181+
value: 60
182+
- name: timeoutPerTestCollectionInMinutes
183+
value: 180
186184
jobParameters:
187185
testGroup: innerloop
188-
nameSuffix: AllSubsets_Mono_LLVMFullAOT_RuntimeTests
189-
buildArgs: -s mono+clr.iltools+clr.hosts+libs+host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }}
190-
/p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
186+
nameSuffix: AllSubsets_Mono_LLVMFULLAOT_RuntimeTests
187+
runtimeVariant: llvmfullaot
188+
buildArgs: -s mono+libs+clr.hosts+clr.iltools -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} /p:MonoEnableLLVM=true
189+
timeoutInMinutes: 360
190+
condition: >-
191+
or(
192+
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
193+
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
194+
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
195+
eq(variables['isRollingBuild'], true))
191196
postBuildSteps:
192197
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
193198
parameters:
194199
creator: dotnet-bot
195-
testRunNamePrefixSuffix: Mono_Release
196200
llvmAotStepContainer: linux_x64_llvmaot
197-
runtimeVariant: llvmfullaot
201+
testRunNamePrefixSuffix: Mono_Release
202+
testBuildArgs: >-
203+
-tree:CoreMangLib -tree:Exceptions -tree:GC -tree:Interop -tree:Loader -tree:Regressions -tree:baseservices
204+
-tree:ilasm -tree:ilverify -tree:managed -tree:profiler -tree:readytorun -tree:reflection -tree:tracing
205+
-tree:JIT/BBT -tree:JIT/CodeGenBringUpTests -tree:JIT/Directed -tree:JIT/Generics -tree:JIT/IL_Conformance
206+
-tree:JIT/Math -tree:JIT/Methodical -tree:JIT/PGO -tree:JIT/Performance -tree:JIT/Regression -tree:JIT/RyuJIT
207+
-tree:JIT/Stress -tree:JIT/common -tree:JIT/jit64 -tree:JIT/opt -tree:JIT/superpmi
208+
extraVariablesTemplates:
209+
- template: /eng/pipelines/common/templates/runtimes/test-variables.yml
210+
211+
#
212+
# Mono CoreCLR runtime Test executions using live libraries and LLVM Full AOT
213+
# Only when Mono is changed
214+
# This job runs the runtime intrinsics tests due to OOM issues
215+
#
216+
- template: /eng/pipelines/common/platform-matrix.yml
217+
parameters:
218+
jobTemplate: /eng/pipelines/common/global-build-job.yml
219+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
220+
buildConfig: Release
221+
runtimeFlavor: mono
222+
platforms:
223+
- linux_x64
224+
# Tracking issue: https://github.com/dotnet/runtime/issues/90427
225+
# - linux_arm64
226+
variables:
227+
- name: timeoutPerTestInMinutes
228+
value: 60
229+
- name: timeoutPerTestCollectionInMinutes
230+
value: 180
231+
jobParameters:
232+
testGroup: innerloop
233+
nameSuffix: AllSubsets_Mono_LLVMFULLAOT_RuntimeIntrinsicsTests
234+
runtimeVariant: llvmfullaot
235+
buildArgs: -s mono+libs+clr.hosts+clr.iltools -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} /p:MonoEnableLLVM=true
236+
timeoutInMinutes: 360
198237
condition: >-
199238
or(
200239
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
201240
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
202241
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
203242
eq(variables['isRollingBuild'], true))
243+
postBuildSteps:
244+
- template: /eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
245+
parameters:
246+
creator: dotnet-bot
247+
llvmAotStepContainer: linux_x64_llvmaot
248+
testRunNamePrefixSuffix: Mono_Release
249+
testBuildArgs: -tree:JIT/Intrinsics -tree:JIT/HardwareIntrinsics -tree:JIT/SIMD
250+
extraVariablesTemplates:
251+
- template: /eng/pipelines/common/templates/runtimes/test-variables.yml

src/tests/Interop/Interop.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3+
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
4+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'llvmfullaot'">true</CLRTestTargetUnsupported>
35
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
46
<Configurations>Debug;Release;Checked</Configurations>
57
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->

src/tests/Interop/StringMarshalling/AnsiBSTR/AnsiBStrTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
44
<DefineConstants>$(DefineConstants);ANSIBSTR</DefineConstants>
55
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
6-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
6+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
77
</PropertyGroup>
88
<ItemGroup>
99
<Compile Include="*.cs" />

src/tests/Interop/StringMarshalling/BSTR/BSTRTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
44
<DefineConstants>$(DefineConstants);BSTR</DefineConstants>
55
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
6-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
6+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
77
</PropertyGroup>
88
<ItemGroup>
99
<Compile Include="*.cs" />

src/tests/Interop/StringMarshalling/LPTSTR/LPTSTRTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
44
<DefineConstants>$(DefineConstants);LPTSTR</DefineConstants>
55
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
6-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
6+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
77
</PropertyGroup>
88
<ItemGroup>
99
<Compile Include="*.cs" />

src/tests/Interop/StringMarshalling/VBByRefStr/VBByRefStrTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
44
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
5-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
5+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
66
</PropertyGroup>
77
<ItemGroup>
88
<Compile Include="*.cs" />

src/tests/JIT/Methodical/Boxing/boxunbox/BoxPatternMatchAndSideEffects.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<DebugType>PdbOnly</DebugType>
44
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
5-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
5+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
66
</PropertyGroup>
77
<ItemGroup>
88
<Compile Include="$(MSBuildProjectName).cs" />

src/tests/JIT/Methodical/Methodical_others.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<!-- Tracking issue: https://github.com/dotnet/runtime/issues/90427 -->
4-
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'minifullaot'">true</CLRTestTargetUnsupported>
4+
<CLRTestTargetUnsupported Condition="'$(RuntimeFlavor)' == 'mono' and ('$(RuntimeVariant)' == 'minifullaot' or '$(RuntimeVariant)' == 'llvmfullaot')">true</CLRTestTargetUnsupported>
55
</PropertyGroup>
66
<ItemGroup>
77
<MergedWrapperProjectReference Include="*/**/*.??proj" />

0 commit comments

Comments
 (0)