Skip to content

Commit 24544e0

Browse files
author
Nathan Ricci
authored
Enable use of RuntimeVariant to exclude runtime tests (#51522)
Allow filtering of runtime tests based on runtimevariant.
1 parent b81fac2 commit 24544e0

5 files changed

Lines changed: 87 additions & 14 deletions

File tree

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ jobs:
6363
- ${{ if notIn(parameters.testGroup, 'innerloop', 'clrinterpreter') }}:
6464
- '${{ parameters.runtimeFlavor }}_common_test_build_p1_AnyOS_AnyCPU_${{parameters.buildConfig }}'
6565
- ${{ if ne(parameters.stagedBuild, true) }}:
66-
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
66+
- ${{ if or( eq(parameters.runtimeVariant, 'minijit'), eq(parameters.runtimeVariant, 'monointerpreter')) }}:
67+
# minijit and mono interpreter runtimevariants do not require any special build of the runtime
68+
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, '', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
69+
- ${{ if not(or(eq(parameters.runtimeVariant, 'minijit'), eq(parameters.runtimeVariant, 'monointerpreter'))) }}:
70+
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
6771
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
6872
- ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveLibrariesBuildConfig) }}
6973

@@ -84,6 +88,13 @@ jobs:
8488
- name: runtimeFlavorArgs
8589
value: '-excludemonofailures'
8690

91+
- name: runtimeVariantArg
92+
value: ''
93+
94+
- ${{ if not(eq(parameters.runtimeVariant, '')) }}:
95+
- name: runtimeVariantArg
96+
value: '/p:RuntimeVariant=${{ parameters.runtimeVariant }}'
97+
8798
- name: crossgenArg
8899
value: ''
89100
- name: LogNamePrefix
@@ -255,7 +266,7 @@ jobs:
255266

256267

257268
# Generate test wrappers. This is the step that examines issues.targets to exclude tests.
258-
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg)
269+
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) buildtestwrappersonly $(runtimeFlavorArgs) $(runtimeVariantArg) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg)
259270
displayName: Generate test wrappers
260271

261272

@@ -291,10 +302,10 @@ jobs:
291302

292303
- ${{ if and(eq(parameters.runtimeFlavor, 'mono'), eq(parameters.runtimeVariant, 'llvmaot')) }}:
293304
- ${{ if eq(parameters.archType, 'x64') }}:
294-
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType)
305+
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType) $(runtimeVariantArg)
295306
displayName: "LLVM AOT compile CoreCLR tests"
296307
- ${{ if eq(parameters.archType, 'arm64') }}:
297-
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType) cross
308+
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) mono_aot $(buildConfig) $(archType) cross $(runtimeVariantArg)
298309
displayName: "LLVM AOT cross-compile CoreCLR tests"
299310
env:
300311
__MonoToolPrefix: aarch64-linux-gnu-
@@ -354,8 +365,7 @@ jobs:
354365
- normal
355366
- ${{ if eq(parameters.runtimeFlavor, 'coreclr') }}:
356367
- no_tiered_compilation
357-
- ${{ if eq(parameters.runtimeFlavor, 'mono') }}:
358-
- interpreter
368+
359369
${{ if in(parameters.testGroup, 'jitstress') }}:
360370
scenarios:
361371
- jitminopts

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ parameters:
3232

3333

3434
steps:
35-
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -excludemonofailures os Browser wasm $(buildConfigUpper)
35+
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) /p:RuntimeVariant=monointerpreter /p:LibrariesConfiguration=${{ parameters.buildConfig }} -ci -excludemonofailures os Browser wasm $(buildConfigUpper)
3636
displayName: Build Tests
3737

3838
# Send tests to Helix

eng/pipelines/mono/templates/xplat-pipeline-job.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ jobs:
5858
- name: buildProductArtifactName
5959
value: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
6060

61+
# minijit and monointerpreter do not use seperate product builds.
62+
- ${{ if or(eq(parameters.runtimeVariant, 'minijit'), eq(parameters.runtimeVariant, 'monointerpreter')) }}:
63+
- name : buildProductArtifactName
64+
value : 'MonoProduct___$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
65+
6166
- name: binTestsPath
6267
value: '$(Build.SourcesDirectory)/artifacts/tests/coreclr'
6368

@@ -92,6 +97,9 @@ jobs:
9297
value: 'Checked'
9398
${{ if eq(parameters.liveRuntimeBuildConfig, 'debug') }}:
9499
value: 'Debug'
100+
101+
- name: priorityArg
102+
value: ''
95103

96104
- librariesBuildArtifactName: ''
97105
- librariesOverrideArg: ''

eng/pipelines/runtime.yml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,7 @@ jobs:
898898
eq(variables['isFullMatrix'], true))
899899
900900
#
901-
# Mono CoreCLR runtime Test executions using live libraries
901+
# Mono CoreCLR runtime Test executions using live libraries in jit mode
902902
# Only when Mono is changed
903903
- template: /eng/pipelines/common/platform-matrix.yml
904904
parameters:
@@ -914,6 +914,31 @@ jobs:
914914
testGroup: innerloop
915915
liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
916916
liveRuntimeBuildConfig: release
917+
runtimeVariant: minijit
918+
condition: >-
919+
or(
920+
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
921+
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
922+
eq(variables['isFullMatrix'], true))
923+
924+
#
925+
# Mono CoreCLR runtime Test executions using live libraries in interpreter mode
926+
# Only when Mono is changed
927+
- template: /eng/pipelines/common/platform-matrix.yml
928+
parameters:
929+
jobTemplate: /eng/pipelines/common/templates/runtimes/run-test-job.yml
930+
buildConfig: release
931+
runtimeFlavor: mono
932+
platforms:
933+
- OSX_x64
934+
- Linux_arm64
935+
helixQueueGroup: pr
936+
helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
937+
jobParameters:
938+
testGroup: innerloop
939+
liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
940+
liveRuntimeBuildConfig: release
941+
runtimeVariant: monointerpreter
917942
condition: >-
918943
or(
919944
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),

src/tests/issues.targets

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@
10261026
</ExcludeList>
10271027
</ItemGroup>
10281028

1029-
<!-- Known failures for mono runtime on *all* architectures/operating systems -->
1029+
<!-- Known failures for mono runtime on *all* architectures/operating systems in *all* runtime modes -->
10301030
<ItemGroup Condition="'$(RuntimeFlavor)' == 'mono'" >
10311031
<ExcludeList Include="$(XunitTestBinBase)/JIT/Directed/Convert/out_of_range_fp_to_int_conversions/*">
10321032
<Issue>Mono does not define out of range fp to int conversions</Issue>
@@ -1936,10 +1936,11 @@
19361936
<ExcludeList Include = "$(XunitTestBinBase)tracing/eventsource/eventsourcetrace/eventsourcetrace/**">
19371937
<Issue>needs triage</Issue>
19381938
</ExcludeList>
1939+
</ItemGroup>
19391940

1940-
<!-- The following only fail in the mono interpreter, but we don't have a way to exclude based on scenario yet -->
1941-
1942-
<ExcludeList Include = "$(XunitTestBinBase)/JIT/jit64/opt/cse/HugeArray1/**">
1941+
<!-- Known failures for mono runtime on *all* architectures/operating systems in interpreter runtime mode -->
1942+
<ItemGroup Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'monointerpreter' ">
1943+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/jit64/opt/cse/HugeArray1/**">
19431944
<Issue>https://github.com/dotnet/runtime/issues/46622</Issue>
19441945
</ExcludeList>
19451946
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Regression/JitBlue/GitHub_21990/**">
@@ -2515,7 +2516,34 @@
25152516
<!-- End interpreter issues -->
25162517
</ItemGroup>
25172518

2518-
<ItemGroup Condition=" '$(RuntimeFlavor)' == 'mono' and ('$(TargetArchitecture)' == 'arm64' or '$(AltJitArch)' == 'arm64') and '$(TargetsWindows)' != 'true' " >
2519+
<ItemGroup Condition="'$(RuntimeFlavor)' == 'mono' and '$(RuntimeVariant)' == 'llvmaot' ">
2520+
<ExcludeList Include = "$(XunitTestBinBase)JIT/Methodical/ELEMENT_TYPE_IU/_il_relu_conv/**">
2521+
<Issue>needs triage</Issue>
2522+
</ExcludeList>
2523+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet_r/**">
2524+
<Issue>needs triage</Issue>
2525+
</ExcludeList>
2526+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet_d/**">
2527+
<Issue>needs triage</Issue>
2528+
</ExcludeList>
2529+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Methodical/eh/deadcode/deadoponerrorinfunclet_d/**">
2530+
<Issue>needs triage</Issue>
2531+
</ExcludeList>
2532+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Directed/nullabletypes/isinstvaluetype_do/**">
2533+
<Issue> needs triage </Issue>
2534+
</ExcludeList>
2535+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Generics/Instantiation/Structs/struct01/**">
2536+
<Issue> needs triage </Issue>
2537+
</ExcludeList>
2538+
<ExcludeList Include = "$(XunitTestBinBase)/JIT/jit64/opt/cse/HugeArray1/**">
2539+
<Issue> needs triage </Issue>
2540+
</ExcludeList>
2541+
<ExcludeList Include = "$(XunitTestBinBase)/GC/Scenarios/Dynamo/dynamo/**">
2542+
<Issue> needs triage </Issue>
2543+
</ExcludeList>
2544+
</ItemGroup>
2545+
2546+
<ItemGroup Condition=" '$(RuntimeFlavor)' == 'mono' and '$(TargetArchitecture)' == 'arm64' and '$(TargetsWindows)' != 'true' " >
25192547
<ExcludeList Include="$(XunitTestBinBase)/baseservices/typeequivalence/simple/Simple/**">
25202548
<Issue>Doesn't compile with LLVM AOT.</Issue>
25212549
</ExcludeList>
@@ -2667,12 +2695,14 @@
26672695
<ExcludeList Include = "$(XunitTestBinBase)/JIT/Regression/VS-ia64-JIT/M00/b108366/b108366/**">
26682696
<Issue>needs triage</Issue>
26692697
</ExcludeList>
2698+
</ItemGroup>
26702699

2700+
<!-- These are known failures on mono-arm64 in the interpreter runtime variant -->
2701+
<ItemGroup Condition=" '$(RuntimeFlavor)' == 'mono' and ('$(TargetArchitecture)' == 'arm64') and '$(TargetsWindows)' != 'true' and '$(RuntimeVariant)' == 'monointerpreter' " >
26712702
<!-- The following issues only effect the Mono interpreter; there is currently no way to exclude based on that scenario -->
26722703
<ExcludeList Include = "$(XunitTestBinBase)JIT/IL_Conformance/Old/Base/ckfinite/**">
26732704
<Issue>needs triage</Issue>
26742705
</ExcludeList>
2675-
<!-- End interpreter issues -->
26762706
</ItemGroup>
26772707

26782708

0 commit comments

Comments
 (0)