Skip to content

Commit ecc0d8a

Browse files
steveisokSteve PfisterMitchell Hwang
authored
[Wasm] Add AOT CI Leg (#46651)
In lieu of running all the library tests suites in AOT mode on CI (estimated to be ~36 hrs = 240 test suites * ~9min AOT time per test suite), only System.Buffers will be ran in AOT mode to standup the leg. Once we find a more acceptable solution, the other libraries tests will be enabled. The CI leg will start out on the staging pipeline to avoid blocking and failing the build. Co-authored-by: Steve Pfister <steve.pfister@microsoft.com> Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
1 parent d76ede7 commit ecc0d8a

File tree

3 files changed

+139
-1
lines changed

3 files changed

+139
-1
lines changed

eng/pipelines/runtime-staging.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,47 @@ jobs:
9595
eq(variables['monoContainsChange'], true),
9696
eq(variables['isFullMatrix'], true))
9797
98+
#
99+
# Build the whole product using Mono and run libraries tests
100+
#
101+
- template: /eng/pipelines/common/platform-matrix.yml
102+
parameters:
103+
jobTemplate: /eng/pipelines/common/global-build-job.yml
104+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
105+
buildConfig: Release
106+
runtimeFlavor: mono
107+
platforms:
108+
- Browser_wasm
109+
variables:
110+
# map dependencies variables to local variables
111+
- name: librariesContainsChange
112+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
113+
- name: monoContainsChange
114+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
115+
jobParameters:
116+
testGroup: innerloop
117+
nameSuffix: AllSubsets_Mono_AOT
118+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:EnableAggressiveTrimming=true /p:RunAOTCompilation=true
119+
timeoutInMinutes: 120
120+
condition: >-
121+
or(
122+
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
123+
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
124+
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
125+
eq(variables['isFullMatrix'], true))
126+
# extra steps, run tests
127+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
128+
extraStepsParameters:
129+
creator: dotnet-bot
130+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
131+
scenarios:
132+
- normal
133+
condition: >-
134+
or(
135+
eq(variables['librariesContainsChange'], true),
136+
eq(variables['monoContainsChange'], true),
137+
eq(variables['isFullMatrix'], true))
138+
98139
#
99140
# Build the whole product using Mono for Android and run runtime tests with Android emulator
100141
#

eng/pipelines/runtime.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ jobs:
288288
eq(variables['monoContainsChange'], true),
289289
eq(variables['isFullMatrix'], true))
290290
291-
292291
#
293292
# Build the whole product using Mono and run libraries tests
294293
#

src/libraries/tests.proj

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,104 @@
159159
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj" />
160160
</ItemGroup>
161161

162+
<ItemGroup Condition="'$(TargetOS)' == 'Browser' and '$(RunAOTCompilation)' == 'true' and '$(RunDisabledWasmTests)' != 'true'">
163+
<!-- condition `<disabled>` not met - https://github.com/dotnet/runtime/issues/46698 -->
164+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Win32.Primitives\tests\Microsoft.Win32.Primitives.Tests.csproj" />
165+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime.Handles/tests/System.Runtime.Handles.Tests.csproj" />
166+
167+
<!-- AOT Compilation failed + memory access out of bounds - https://github.com/dotnet/runtime/issues/46700 -->
168+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.DependencyInjection/tests/DI.Tests/Microsoft.Extensions.DependencyInjection.Tests.csproj" />
169+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.DependencyInjection/tests/DI.External.Tests/Microsoft.Extensions.DependencyInjection.ExternalContainers.Tests.csproj" />
170+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.IO.UnmanagedMemoryStream/tests/System.IO.UnmanagedMemoryStream.Tests.csproj" />
171+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Collections/tests/System.Collections.Tests.csproj" />
172+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.WebSockets/tests/System.Net.WebSockets.Tests.csproj" />
173+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Numerics.Vectors/tests/System.Numerics.Vectors.Tests.csproj" />
174+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.IO.Compression/tests/System.IO.Compression.Tests.csproj" />
175+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Uri/tests/FunctionalTests/System.Private.Uri.Functional.Tests.csproj" />
176+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Security.Cryptography.Primitives/tests/System.Security.Cryptography.Primitives.Tests.csproj" />
177+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Threading.Channels/tests/System.Threading.Channels.Tests.csproj" />
178+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Linq/tests/System.Linq.Tests.csproj" />
179+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.Metadata/tests/System.Reflection.Metadata.Tests.csproj" />
180+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj" />
181+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.Configuration/tests/Microsoft.Extensions.Configuration.Tests.csproj" />
182+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Diagnostics.StackTrace/tests/System.Diagnostics.StackTrace.Tests.csproj" />
183+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Data.DataSetExtensions/tests/System.Data.DataSetExtensions.Tests.csproj" />
184+
185+
<!-- ArgumentNull_Generic Arg_ParamName_Name, type - https://github.com/dotnet/runtime/issues/46709 -->
186+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Bcl.AsyncInterfaces/tests/Microsoft.Bcl.AsyncInterfaces.Tests.csproj" />
187+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml.Linq/tests/Schema/System.Xml.Schema.Extensions.Tests.csproj" />
188+
189+
<!-- Attempting to JIT compile method - https://github.com/dotnet/runtime/issues/46708 -->
190+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.ComponentModel.Composition.Registration/tests/System.ComponentModel.Composition.Registration.Tests.csproj" />
191+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.CSharp/tests/Microsoft.CSharp.Tests.csproj" />
192+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml/tests/XmlSerializer/ReflectionOnly/System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj" />
193+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml/tests/XmlSerializer/System.Xml.XmlSerializer.Tests.csproj" />
194+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Linq.Queryable/tests/System.Linq.Queryable.Tests.csproj" />
195+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.WebSockets.WebSocketProtocol/tests/System.Net.WebSockets.WebSocketProtocol.Tests.csproj" />
196+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.DispatchProxy/tests/System.Reflection.DispatchProxy.Tests.csproj" />
197+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.Emit.Lightweight/tests/System.Reflection.Emit.Lightweight.Tests.csproj" />
198+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime.Serialization.Json/tests/System.Runtime.Serialization.Json.Tests.csproj" />
199+
200+
<!-- invalid index into function table - https://github.com/dotnet/runtime/issues/46731 -->
201+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Dynamic.Runtime/tests/System.Dynamic.Runtime.Tests.csproj" />
202+
203+
<!-- IOCompressionBrotli_PlatformNotSupported -->
204+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.IO.Compression.Brotli/tests/System.IO.Compression.Brotli.Tests.csproj" />
205+
<!-- SystemSecurityCryptographyEncoding_PlatformNotSupported - https://github.com/dotnet/runtime/issues/46762 -->
206+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Security.Cryptography.Encoding/tests/System.Security.Cryptography.Encoding.Tests.csproj" />
207+
<!-- SystemNetHttpListener_PlatformNotSupported -->
208+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj" />
209+
<!-- SystemNetNetworkInformation_PlatformNotSupported -->
210+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.NetworkInformation/tests/FunctionalTests/System.Net.NetworkInformation.Functional.Tests.csproj" />
211+
<!-- SystemSecurityCryptographyAlgorithms_PlatformNotSupported -->
212+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Security.Cryptography.Csp/tests/System.Security.Cryptography.Csp.Tests.csproj" />
213+
214+
<!-- System.Runtime.Serialization.InvalidDataContractException NoSetMethodForProperty - https://github.com/dotnet/runtime/issues/46757 -->
215+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime.Serialization.Json/tests/ReflectionOnly/System.Runtime.Serialization.Json.ReflectionOnly.Tests.csproj" />
216+
217+
<!-- Invalid character in the given encoding - https://github.com/dotnet/runtime/issues/46755 -->
218+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml/tests/XmlReader/Tests/System.Xml.RW.XmlReader.Tests.csproj" />
219+
220+
<!-- System.ArgumentNullException - https://github.com/dotnet/runtime/issues/46758 -->
221+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.FileSystemGlobbing/tests/Microsoft.Extensions.FileSystemGlobbing.Tests.csproj" />
222+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Runtime.InteropServices.JavaScript/tests/System.Private.Runtime.InteropServices.JavaScript.Tests.csproj" />
223+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.ObjectModel/tests/System.ObjectModel.Tests.csproj" />
224+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.IO.Packaging/tests/System.IO.Packaging.Tests.csproj" />
225+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.Configuration.Binder/tests/Microsoft.Extensions.Configuration.Binder.Tests.csproj" />
226+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.Configuration.Ini/tests/Microsoft.Extensions.Configuration.Ini.Tests.csproj" />
227+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml/tests/XmlSchema/XmlSchemaSet/System.Xml.XmlSchemaSet.Tests.csproj" />
228+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.Emit.ILGeneration/tests/System.Reflection.Emit.ILGeneration.Tests.csproj" />
229+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.TypeExtensions/tests/System.Reflection.TypeExtensions.Tests.csproj" />
230+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Resources.Reader/tests/System.Resources.Reader.Tests.csproj" />
231+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.NameResolution/tests/PalTests/System.Net.NameResolution.Pal.Tests.csproj" />
232+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime.InteropServices/tests/System.Runtime.InteropServices.Tests.csproj" />
233+
234+
<!-- System.InvalidOperationException - https://github.com/dotnet/runtime/issues/46759 -->
235+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Collections.Immutable/tests/System.Collections.Immutable.Tests.csproj" />
236+
237+
<!-- System.ArgumentException - https://github.com/dotnet/runtime/issues/46760 -->
238+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)Microsoft.Extensions.Primitives/tests/Microsoft.Extensions.Primitives.Tests.csproj" />
239+
240+
<!-- function signature mismatch - https://github.com/dotnet/runtime/issues/46761 -->
241+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.ValueTuple/tests/System.ValueTuple.Tests.csproj" />
242+
243+
<!-- System.Xml.Tests.VerifyException - https://github.com/dotnet/runtime/issues/46764 -->
244+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Private.Xml/tests/XmlSchema/XmlSchemaValidatorApi/System.Xml.XmlSchema.XmlSchemaValidatorApi.Tests.csproj" />
245+
246+
<!-- unreachable - https://github.com/dotnet/runtime/issues/46766 -->
247+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime.CompilerServices.Unsafe/tests/System.Runtime.CompilerServices.Unsafe.Tests.csproj" />
248+
249+
<!-- https://github.com/dotnet/runtime/issues/46768 -->
250+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Diagnostics.DiagnosticSource/tests/TestWithConfigSwitches/System.Diagnostics.DiagnosticSource.Switches.Tests.csproj" />
251+
252+
<!-- https://github.com/dotnet/runtime/issues/46856 -->
253+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)/System.Diagnostics.FileVersionInfo/tests/System.Diagnostics.FileVersionInfo.Tests/System.Diagnostics.FileVersionInfo.Tests.csproj" />
254+
255+
<!-- Run only a small randomly chosen set of passing test suites on CI because running all suites is expected to take longer than a day -->
256+
<ProjectExclusions Include="$(MSBuildThisFileDirectory)*\tests\**\*.Tests.csproj" />
257+
<ProjectExclusions Remove="$(MSBuildThisFileDirectory)System.Buffer.Tests\tests\System.Buffer.Tests.csproj" />
258+
</ItemGroup>
259+
162260
<ItemGroup>
163261
<ProjectReference Include="$(MSBuildThisFileDirectory)*\tests\**\*.Tests.csproj"
164262
Exclude="@(ProjectExclusions)"

0 commit comments

Comments
 (0)