multi-proc test execution

This commit is contained in:
Piotr Puszkiewicz 2016-08-09 15:19:34 -07:00
parent e08da40a1f
commit 43c5a2c59b
4 changed files with 49 additions and 34 deletions

View file

@ -5,14 +5,14 @@
<PropertyGroup> <PropertyGroup>
<BinaryToCorehostifyRelDir>runtimes/any/native</BinaryToCorehostifyRelDir> <BinaryToCorehostifyRelDir>runtimes/any/native</BinaryToCorehostifyRelDir>
<CoreSDKDir>$(RepoRoot)/resources/MSBuildImports</CoreSDKDir> <MSBuildImportsDir>$(RepoRoot)/resources/MSBuildImports</MSBuildImportsDir>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PublishOutputExtensions Include="$(ExeExtension);.dll;.pdb;.deps.json;.runtimeconfig.json" /> <PublishOutputExtensions Include="$(ExeExtension);.dll;.pdb;.deps.json;.runtimeconfig.json" />
<FilesToMove Include="$(BinaryToCorehostifyRelDir)/csc.exe;$(BinaryToCorehostifyRelDir)/MSBuild.exe;" /> <FilesToMove Include="$(BinaryToCorehostifyRelDir)/csc.exe;$(BinaryToCorehostifyRelDir)/MSBuild.exe;" />
<BundledTools Include="csc;MSBuild;NuGet.CommandLine.XPlat;dotnet" /> <BundledTools Include="csc;MSBuild;NuGet.CommandLine.XPlat;dotnet" />
<CoreSDKContent Include="$(CoreSDKDir)/**/*" /> <MSBuildImportsContent Include="$(MSBuildImportsDir)/**/*" />
</ItemGroup> </ItemGroup>
<Target Name="Compile" DependsOnTargets="Prepare; <Target Name="Compile" DependsOnTargets="Prepare;
@ -165,7 +165,7 @@
DestinationFiles="$(SdkOutputDirectory)/$(HostPolicyBaseName)" /> DestinationFiles="$(SdkOutputDirectory)/$(HostPolicyBaseName)" />
<!-- copy core sdk --> <!-- copy core sdk -->
<Copy SourceFiles="@(CoreSDKContent)" <Copy SourceFiles="@(MSBuildImportsContent)"
DestinationFolder="$(SdkOutputDirectory)/%(RecursiveDir)" /> DestinationFolder="$(SdkOutputDirectory)/%(RecursiveDir)" />
<!-- Crossgen the Shared Framework --> <!-- Crossgen the Shared Framework -->

View file

@ -10,7 +10,7 @@
<Import Project="test/TestAssetProjects.targets" /> <Import Project="test/TestAssetProjects.targets" />
<Import Project="test/TestProjects.targets" /> <Import Project="test/TestProjects.targets" />
<Target Name="Test" <Target Name="Test"
DependsOnTargets="PrepareTests; DependsOnTargets="PrepareTests;
BuildTestAssets; BuildTestAssets;
BuildTests;"> BuildTests;">
@ -27,13 +27,28 @@
<TestTaskEnvironmentVariables Include="TEST_ARTIFACTS=$(TestArtifactsEnv)" /> <TestTaskEnvironmentVariables Include="TEST_ARTIFACTS=$(TestArtifactsEnv)" />
</ItemGroup> </ItemGroup>
<DotNetTest WorkingDirectory="%(TestProjects.ProjectDir)" <PropertyGroup>
EnvironmentVariables="@(TestTaskEnvironmentVariables)" <RunTestEnvironmentVariables>@(TestTaskEnvironmentVariables)</RunTestEnvironmentVariables>
ToolPath="$(Stage2Directory)" </PropertyGroup>
Configuration="$(Configuration)"
NoBuild="True" <ItemGroup>
NoTrait="category=failing" <ProjectsToTest Include="build/test/RunTest.proj">
Xml="$(TestResultXmlDir)/%(TestProjects.OutputName)-testResults.xml" /> <Properties>
CLIBuildDll=$(CLIBuildDll);
Configuration=$(Configuration);
EnvironmentVariables=$(RunTestEnvironmentVariables);
TestProjectName=%(TestProjects.OutputName);
TestResultXmlDir=$(TestResultXmlDir);
ToolPath=$(Stage2Directory);
WorkingDirectory=%(TestProjects.ProjectDir)
</Properties>
</ProjectsToTest>
</ItemGroup>
<MSBuild
BuildInParallel="True"
Projects="@(ProjectsToTest)">
</MSBuild>
</Target> </Target>
<Target Name="PrepareTests" <Target Name="PrepareTests"
@ -50,7 +65,7 @@
</PropertyGroup> </PropertyGroup>
</Target> </Target>
<Target Name="BuildTests" <Target Name="BuildTests"
DependsOnTargets="RestoreTests; DependsOnTargets="RestoreTests;
SetupTestProjectData;" SetupTestProjectData;"
Inputs="%(TestProjects.BuildInputs)" Inputs="%(TestProjects.BuildInputs)"
@ -70,18 +85,18 @@
<CallTarget Targets="CleanTestProjectsLockFiles"/> <CallTarget Targets="CleanTestProjectsLockFiles"/>
<DotNetRestore FallbackSource="$(TestPackagesDir)" <DotNetRestore FallbackSource="$(TestPackagesDir)"
ToolPath="$(DotnetUnderTest)" ToolPath="$(DotnetUnderTest)"
WorkingDirectory="$(TestDirectory)" /> WorkingDirectory="$(TestDirectory)" />
</Target> </Target>
<Target Name="CleanTestProjectsBinObj" <Target Name="CleanTestProjectsBinObj"
DependsOnTargets="SetupRestoreTestsInputs;" DependsOnTargets="SetupRestoreTestsInputs;"
Inputs="@(RestoreTestsInputs)" Inputs="@(RestoreTestsInputs)"
Outputs="@(RestoreTestsInputs->'%(RelativeDir)project.lock.json')"> Outputs="@(RestoreTestsInputs->'%(RelativeDir)project.lock.json')">
<ItemGroup> <ItemGroup>
<FilesToDelete Include="$(TestDirectory)**/bin/**/*.*" /> <FilesToDelete Include="$(TestDirectory)**/bin/**/*.*" />
<FilesToDelete Include="$(TestDirectory)**/obj/**/*.*" /> <FilesToDelete Include="$(TestDirectory)**/obj/**/*.*" />
</ItemGroup> </ItemGroup>
<Delete Files="@(FilesToDelete)" /> <Delete Files="@(FilesToDelete)" />
@ -122,7 +137,7 @@
Outputs="@(RestoreTestAssetProjectsInputs->'%(RelativeDir)/project.lock.json')"> Outputs="@(RestoreTestAssetProjectsInputs->'%(RelativeDir)/project.lock.json')">
<DotNetRestore FallbackSource="$(TestPackagesDir)" <DotNetRestore FallbackSource="$(TestPackagesDir)"
ToolPath="$(DotnetUnderTest)" ToolPath="$(DotnetUnderTest)"
WorkingDirectory="$(RepoRoot)TestAssets/TestProjects/" /> WorkingDirectory="$(RepoRoot)TestAssets/TestProjects/" />
</Target> </Target>
@ -136,23 +151,23 @@
<ItemGroup> <ItemGroup>
<TestAssetProjectsLockFiles Include="$(RepoRoot)/TestAssets/TestProjects/**/project.lock.json" /> <TestAssetProjectsLockFiles Include="$(RepoRoot)/TestAssets/TestProjects/**/project.lock.json" />
</ItemGroup> </ItemGroup>
<Delete Files="@(TestAssetProjectsLockFiles)" /> <Delete Files="@(TestAssetProjectsLockFiles)" />
</Target> </Target>
<Target Name="CleanTestProjectsLockFiles" > <Target Name="CleanTestProjectsLockFiles" >
<ItemGroup> <ItemGroup>
<TestProjectsLockFiles Include="$(RepoRoot)/test/**/project.lock.json" /> <TestProjectsLockFiles Include="$(RepoRoot)/test/**/project.lock.json" />
</ItemGroup> </ItemGroup>
<Delete Files="@(TestProjectsLockFiles)" /> <Delete Files="@(TestProjectsLockFiles)" />
</Target> </Target>
<Target Name="BuildDesktopTestAssetProjects" <Target Name="BuildDesktopTestAssetProjects"
Condition=" '$(IsDesktopAvailable)' == 'True' " Condition=" '$(IsDesktopAvailable)' == 'True' "
DependsOnTargets="RestoreDesktopTestAssetProjects"> DependsOnTargets="RestoreDesktopTestAssetProjects">
<ItemGroup> <ItemGroup>
<NoAutoBuildDesktopTestAssets Include="$(RepoRoot)TestAssets\DesktopTestProjects\**\.noautobuild" /> <NoAutoBuildDesktopTestAssets Include="$(RepoRoot)TestAssets\DesktopTestProjects\**\.noautobuild" />
<NoAutoBuildDesktopTestAssetProjects Include="%(NoAutoBuildDesktopTestAssets.RelativeDir)project.json" /> <NoAutoBuildDesktopTestAssetProjects Include="%(NoAutoBuildDesktopTestAssets.RelativeDir)project.json" />
<BuildableDesktopTestAssetProjects Include="$(RepoRoot)TestAssets\DesktopTestProjects\**\project.json" <BuildableDesktopTestAssetProjects Include="$(RepoRoot)TestAssets\DesktopTestProjects\**\project.json"
Exclude="@(NoAutoBuildDesktopTestAssetProjects)" /> Exclude="@(NoAutoBuildDesktopTestAssetProjects)" />
</ItemGroup> </ItemGroup>
@ -167,14 +182,14 @@
</Target> </Target>
<Target Name="RestoreDesktopTestAssetProjects" <Target Name="RestoreDesktopTestAssetProjects"
Condition=" '$(IsDesktopAvailable)' == 'True' " Condition=" '$(IsDesktopAvailable)' == 'True' "
DependsOnTargets="CreateTestAssetPackageNuPkgs; DependsOnTargets="CreateTestAssetPackageNuPkgs;
SetupRestoreDesktopTestAssetProjectsInputs;" SetupRestoreDesktopTestAssetProjectsInputs;"
Inputs="@(RestoreDesktopTestAssetProjectsInputs)" Inputs="@(RestoreDesktopTestAssetProjectsInputs)"
Outputs="@(RestoreDesktopTestAssetProjectsInputs->'%(RelativeDir)/project.lock.json')"> Outputs="@(RestoreDesktopTestAssetProjectsInputs->'%(RelativeDir)/project.lock.json')">
<DotNetRestore FallbackSource="$(TestPackagesDir)" <DotNetRestore FallbackSource="$(TestPackagesDir)"
ToolPath="$(DotnetUnderTest)" ToolPath="$(DotnetUnderTest)"
WorkingDirectory="$(RepoRoot)TestAssets\DesktopTestProjects\" /> WorkingDirectory="$(RepoRoot)TestAssets\DesktopTestProjects\" />
</Target> </Target>
@ -184,7 +199,7 @@
</ItemGroup> </ItemGroup>
</Target> </Target>
<Target Name="CreateTestAssetPackageNuPkgs" <Target Name="CreateTestAssetPackageNuPkgs"
DependsOnTargets="BuildTestAssetPackageProjects; DependsOnTargets="BuildTestAssetPackageProjects;
SetupTestPackageProjectData;" SetupTestPackageProjectData;"
Inputs="%(TestPackageProject.PackInputs)" Inputs="%(TestPackageProject.PackInputs)"
@ -210,14 +225,14 @@
ToolPath="$(DotnetUnderTest)" ToolPath="$(DotnetUnderTest)"
WorkingDirectory="%(BuildableTestAssetProjects.RelativeDir)" /> WorkingDirectory="%(BuildableTestAssetProjects.RelativeDir)" />
</Target> </Target>
<Target Name="RestoreTestAssetPackageProjects" <Target Name="RestoreTestAssetPackageProjects"
DependsOnTargets="PrepareTests; DependsOnTargets="PrepareTests;
SetupRestoreTestAssetPackageProjectsInputs;" SetupRestoreTestAssetPackageProjectsInputs;"
Inputs="@(RestoreTestAssetPackageProjectsInputs)" Inputs="@(RestoreTestAssetPackageProjectsInputs)"
Outputs="@(RestoreTestAssetPackageProjectsInputs->'%(RelativeDir)/project.lock.json')"> Outputs="@(RestoreTestAssetPackageProjectsInputs->'%(RelativeDir)/project.lock.json')">
<DotNetRestore ToolPath="$(DotnetUnderTest)" <DotNetRestore ToolPath="$(DotnetUnderTest)"
WorkingDirectory="$(RepoRoot)/TestAssets/TestPackages/" /> WorkingDirectory="$(RepoRoot)/TestAssets/TestPackages/" />
</Target> </Target>

View file

@ -71,10 +71,10 @@ $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
if ($NoBuild) if ($NoBuild)
{ {
Write-Host "Not building due to --nobuild" Write-Host "Not building due to --nobuild"
Write-Host "Command that would be run: 'dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters'" Write-Host "Command that would be run: 'dotnet build3 build.proj /m /p:Architecture=$Architecture $ExtraParameters'"
} }
else else
{ {
dotnet build3 build.proj /p:Architecture=$Architecture $ExtraParameters dotnet build3 build.proj /m /p:Architecture=$Architecture $ExtraParameters
if($LASTEXITCODE -ne 0) { throw "Failed to build" } if($LASTEXITCODE -ne 0) { throw "Failed to build" }
} }

View file

@ -117,8 +117,8 @@ export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
echo "${args[@]}" echo "${args[@]}"
if [ $BUILD -eq 1 ]; then if [ $BUILD -eq 1 ]; then
dotnet build3 build.proj /p:Architecture=$ARCHITECTURE "${args[@]}" dotnet build3 build.proj /m /p:Architecture=$ARCHITECTURE "${args[@]}"
else else
echo "Not building due to --nobuild" echo "Not building due to --nobuild"
echo "Command that would be run is: 'dotnet build3 build.proj /p:Architecture=$ARCHITECTURE ${args[@]}'" echo "Command that would be run is: 'dotnet build3 build.proj /m /p:Architecture=$ARCHITECTURE ${args[@]}'"
fi fi