Skip to content

Commit d953229

Browse files
radicallewing
andauthored
[wasm] Run Wasm.Build.Tests against workloads (#54451)
Co-authored-by: Larry Ewing <[email protected]>
1 parent 9ad44f8 commit d953229

File tree

53 files changed

+1096
-161
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1096
-161
lines changed

Directory.Build.props

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@
7373
<AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</AndroidAppBuilderDir>
7474
<WasmAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</WasmAppBuilderDir>
7575
<WasmBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</WasmBuildTasksDir>
76+
<WorkloadBuildTasksDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WorkloadBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))</WorkloadBuildTasksDir>
7677
<MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppToolCurrent)'))</MonoAOTCompilerDir>
7778
<RuntimeConfigParserDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'RuntimeConfigParser', 'Debug', '$(NetCoreAppToolCurrent)'))</RuntimeConfigParserDir>
79+
<JsonToItemsTaskFactoryDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'JsonToItemsTaskFactory', 'Debug', '$(NetCoreAppToolCurrent)'))</JsonToItemsTaskFactoryDir>
7880

7981
<InstallerTasksAssemblyPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'installer.tasks', 'Debug', '$(NetCoreAppToolCurrent)', 'installer.tasks.dll'))</InstallerTasksAssemblyPath>
8082
<InstallerTasksAssemblyPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'installer.tasks', 'Debug', 'net461', 'installer.tasks.dll'))</InstallerTasksAssemblyPath>
@@ -84,8 +86,10 @@
8486
<AndroidAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(AndroidAppBuilderDir)', 'AndroidAppBuilder.dll'))</AndroidAppBuilderTasksAssemblyPath>
8587
<WasmAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WasmAppBuilderDir)', 'WasmAppBuilder.dll'))</WasmAppBuilderTasksAssemblyPath>
8688
<WasmBuildTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WasmBuildTasksDir)', 'WasmBuildTasks.dll'))</WasmBuildTasksAssemblyPath>
89+
<WorkloadBuildTasksAssemblyPath>$([MSBuild]::NormalizePath('$(WorkloadBuildTasksDir)', 'WorkloadBuildTasks.dll'))</WorkloadBuildTasksAssemblyPath>
8790
<MonoAOTCompilerTasksAssemblyPath>$([MSBuild]::NormalizePath('$(MonoAOTCompilerDir)', 'MonoAOTCompiler.dll'))</MonoAOTCompilerTasksAssemblyPath>
8891
<RuntimeConfigParserTasksAssemblyPath>$([MSBuild]::NormalizePath('$(RuntimeConfigParserDir)', 'RuntimeConfigParser.dll'))</RuntimeConfigParserTasksAssemblyPath>
92+
<JsonToItemsTaskFactoryTasksAssemblyPath>$([MSBuild]::NormalizePath('$(JsonToItemsTaskFactoryDir)', 'JsonToItemsTaskFactory.dll'))</JsonToItemsTaskFactoryTasksAssemblyPath>
8993
<ILAsmToolPath Condition="'$(DotNetBuildFromSource)' == 'true'">$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'coreclr', '$(TargetOS).$(TargetArchitecture).$(Configuration)'))</ILAsmToolPath>
9094
</PropertyGroup>
9195

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Testing Workloads
2+
3+
Workloads based on packages in `artifacts` can be installed, and used for testing.
4+
5+
- This is done by installing a specified SDK version (`$(SdkVersionForWorkloadTesting)`) in `artifacts/bin/dotnet-workload`.
6+
- Then the manifest for the workload in `@(WorkloadIdForTesting)` is installed
7+
- Then workload packs are installed
8+
- packs, or manifests not generated by `runtime`, are restored from nuget
9+
10+
- The SDK is installed by `ProvisionSdkForWorkloadTesting` target
11+
- and the workload is installed by `InstallWorkloadUsingArtifacts` target, using the `InstallWorkloadFromArtifacts` task
12+
13+
- `@(WorkloadIdForTesting)`:
14+
15+
Example for wasm:
16+
```xml
17+
<WorkloadIdForTesting Include="wasm-tools"
18+
Name="microsoft.net.workload.mono.toolchain"
19+
ManifestName="Microsoft.NET.Workload.Mono.ToolChain"
20+
Version="$(PackageVersion)"
21+
VersionBand="$(SdkBandVersion)" />
22+
```
23+
24+
- Currently, this is used only by `src/tests/BuildWasmApps/Wasm.Build.Tests`
25+
26+
## Limitations:
27+
28+
- The cross compiler package is built manually from the `InstallWorkloadUsingArtifacts` target

eng/Subsets.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@
317317
<SharedFrameworkProjectToBuild Condition="'$(RuntimeFlavor)' != 'Mono'" Include="$(InstallerProjectRoot)pkg\sfx\installers\dotnet-host.proj" />
318318
<SharedFrameworkProjectToBuild Condition="'$(RuntimeFlavor)' != 'Mono'" Include="$(InstallerProjectRoot)pkg\sfx\installers\dotnet-hostfxr.proj" />
319319
<SharedFrameworkProjectToBuild Condition="'$(RuntimeFlavor)' != 'Mono'" Include="$(InstallerProjectRoot)pkg\sfx\installers\dotnet-runtime-deps\*.proj" />
320-
<SharedFrameworkProjectToBuild Condition="'$(MonoCrossAOTTargetOS)' != ''" Include="$(InstallerProjectRoot)pkg\sfx\Microsoft.NETCore.App\monocrossaot.sfxproj" />
320+
<SharedFrameworkProjectToBuild Condition="'$(MonoCrossAOTTargetOS)' != ''" Include="$(InstallerProjectRoot)pkg\sfx\Microsoft.NETCore.App\monocrossaot.sfxproj" Pack="true" />
321321
</ItemGroup>
322322
<ItemGroup>
323323
<SharedFrameworkProjectToBuild Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true'" Include="$(InstallerProjectRoot)pkg\sfx\Microsoft.NETCore.App\Microsoft.NETCore.App.Runtime.sfxproj" />

eng/Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@
161161
<SQLitePCLRawbundle_greenVersion>2.0.4</SQLitePCLRawbundle_greenVersion>
162162
<MoqVersion>4.12.0</MoqVersion>
163163
<FsCheckVersion>2.14.3</FsCheckVersion>
164+
<SdkVersionForWorkloadTesting>6.0.100-preview.7.21362.5</SdkVersionForWorkloadTesting>
164165
<!-- Docs -->
165166
<MicrosoftPrivateIntellisenseVersion>5.0.0-preview-20201009.2</MicrosoftPrivateIntellisenseVersion>
166167
<!-- ILLink -->

eng/liveBuilds.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@
178178
$(LibrariesNativeArtifactsPath)src\*.c;
179179
$(LibrariesNativeArtifactsPath)src\*.js;
180180
$(LibrariesNativeArtifactsPath)src\emcc-default.rsp;
181-
$(LibrariesNativeArtifactsPath)src\Emcc.props;"
181+
$(LibrariesNativeArtifactsPath)src\emcc-props.json;"
182182
NativeSubDirectory="src"
183183
IsNative="true" />
184184
<LibrariesRuntimeFiles Condition="'$(TargetOS)' == 'Browser'"

eng/pipelines/runtime.yml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,6 @@ jobs:
296296
creator: dotnet-bot
297297
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
298298
scenarios:
299-
- buildwasmapps
300299
- normal
301300
- wasmtestonbrowser
302301
condition: >-
@@ -305,6 +304,46 @@ jobs:
305304
eq(variables['monoContainsChange'], true),
306305
eq(variables['isFullMatrix'], true))
307306
307+
#
308+
# Build the whole product using Mono and run libraries tests, for Wasm.Build.Tests
309+
#
310+
- template: /eng/pipelines/common/platform-matrix.yml
311+
parameters:
312+
jobTemplate: /eng/pipelines/common/global-build-job.yml
313+
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
314+
buildConfig: Release
315+
runtimeFlavor: mono
316+
platforms:
317+
- Browser_wasm
318+
variables:
319+
# map dependencies variables to local variables
320+
- name: monoContainsChange
321+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
322+
- name: installerContainsChange
323+
value: $[ dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'] ]
324+
jobParameters:
325+
testGroup: innerloop
326+
nameSuffix: AllSubsets_Mono_WasmBuildTests
327+
buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
328+
timeoutInMinutes: 180
329+
condition: >-
330+
or(
331+
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
332+
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
333+
eq(variables['isFullMatrix'], true))
334+
# extra steps, run tests
335+
extraStepsTemplate: /eng/pipelines/libraries/helix.yml
336+
extraStepsParameters:
337+
creator: dotnet-bot
338+
testRunNamePrefixSuffix: Mono_$(_BuildConfig)
339+
scenarios:
340+
- buildwasmapps
341+
condition: >-
342+
or(
343+
eq(variables['monoContainsChange'], true),
344+
eq(variables['installerContainsChange'], true),
345+
eq(variables['isFullMatrix'], true))
346+
308347
#
309348
# Build for Browser/wasm, with EnableAggressiveTrimming=true
310349
#

eng/testing/WasmRunnerTemplate.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ set EXECUTION_DIR=%~dp0
55
set SCENARIO=%3
66

77
if [%HELIX_WORKITEM_UPLOAD_ROOT%] == [] (
8-
set XHARNESS_OUT="%EXECUTION_DIR%xharness-output"
8+
set "XHARNESS_OUT=%EXECUTION_DIR%xharness-output"
99
) else (
10-
set XHARNESS_OUT="%HELIX_WORKITEM_UPLOAD_ROOT%\xharness-output"
10+
set "XHARNESS_OUT=%HELIX_WORKITEM_UPLOAD_ROOT%\xharness-output"
1111
)
1212

1313
if [%XHARNESS_CLI_PATH%] NEQ [] (

eng/testing/linker/project.csproj.template

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<MonoProjectRoot>{MonoProjectRoot}</MonoProjectRoot>
77
<MonoAOTCompilerTasksAssemblyPath>{MonoAOTCompilerTasksAssemblyPath}</MonoAOTCompilerTasksAssemblyPath>
88
<WasmAppBuilderTasksAssemblyPath>{WasmAppBuilderTasksAssemblyPath}</WasmAppBuilderTasksAssemblyPath>
9+
<JsonToItemsTaskFactoryTasksAssemblyPath>{JsonToItemsTaskFactoryTasksAssemblyPath}</JsonToItemsTaskFactoryTasksAssemblyPath>
910
<MicrosoftNetCoreAppRuntimePackRidDir>{MicrosoftNetCoreAppRuntimePackRidDir}</MicrosoftNetCoreAppRuntimePackRidDir>
1011
<RepositoryEngineeringDir>{RepositoryEngineeringDir}</RepositoryEngineeringDir>
1112
<TargetFramework>{TestTargetFramework}</TargetFramework>

eng/testing/linker/trimmingTests.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,10 @@
8282
.Replace('{AdditionalProjectReferences}', '$(_additionalProjectReferencesString)')
8383
.Replace('{RepositoryEngineeringDir}', '$(RepositoryEngineeringDir)')
8484
.Replace('{MonoAOTCompilerDir}', '$(MonoAOTCompilerDir)')
85+
.Replace('{JsonToItemsTaskFactoryDir}', '$(JsonToItemsTaskFactoryDir)')
8586
.Replace('{MonoProjectRoot}', '$(MonoProjectRoot)')
8687
.Replace('{MonoAOTCompilerTasksAssemblyPath}', '$(MonoAOTCompilerTasksAssemblyPath)')
88+
.Replace('{JsonToItemsTaskFactoryTasksAssemblyPath}', '$(JsonToItemsTaskFactoryTasksAssemblyPath)')
8789
.Replace('{WasmAppBuilderTasksAssemblyPath}', '$(WasmAppBuilderTasksAssemblyPath)')
8890
.Replace('{MicrosoftNetCoreAppRuntimePackRidDir}', '$(MicrosoftNetCoreAppRuntimePackRidDir)'))"
8991
Overwrite="true" />

eng/testing/tests.mobile.targets

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
<PublishingTestsRun>true</PublishingTestsRun>
99
<BundleTestAppTargets>BundleTestAppleApp;BundleTestAndroidApp</BundleTestAppTargets>
10+
11+
<!-- this catches the case when we are running tests, but not archiving them.
12+
In case of archiving, the workload gets installed by code elsewhere -->
13+
<InstallWorkloadForTesting Condition="'$(TestUsingWorkloads)' == 'true' and '$(ArchiveTests)' != 'true'">true</InstallWorkloadForTesting>
1014
</PropertyGroup>
1115

1216
<PropertyGroup Condition="'$(EnableAggressiveTrimming)' == 'true'">
@@ -291,5 +295,10 @@
291295
AfterTargets="Build"
292296
DependsOnTargets="Publish;$(BundleTestAppTargets);ArchiveTests" />
293297

298+
<Target Name="PrepareForTestUsingWorkloads"
299+
BeforeTargets="Test"
300+
DependsOnTargets="InstallWorkloadUsingArtifacts"
301+
Condition="'$(InstallWorkloadForTesting)' == 'true'" />
302+
294303
<Import Project="$(RepositoryEngineeringDir)illink.targets" Condition="'$(SkipImportRepoLinkerTargets)' != 'true'" />
295304
</Project>

0 commit comments

Comments
 (0)