Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ jobs:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

- subset: mono_excluding_wasm
Expand All @@ -126,6 +128,8 @@ jobs:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

- eng/Version.Details.xml
Expand Down Expand Up @@ -158,6 +162,8 @@ jobs:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

- subset: runtimetests
Expand Down Expand Up @@ -198,6 +204,8 @@ jobs:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

# We have limited Apple Silicon testing capacity
Expand Down Expand Up @@ -267,6 +275,8 @@ jobs:
- ${{ parameters._const_paths._wasm_pipelines }}
exclude:
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

# wasm/runtimetests mono need to be run
Expand All @@ -289,6 +299,8 @@ jobs:
- src/mono/wasm/Wasm.Build.Tests/*
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

# wasm/runtimetests coreCLR need to be run
Expand All @@ -302,6 +314,8 @@ jobs:
- src/mono/*
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

# Wasm-specific paths excluding Wasm.Build.Tests, WASI (build/runtime/testassets), and the debugger
Expand Down Expand Up @@ -331,6 +345,8 @@ jobs:
- src/mono/nuget/Microsoft.NET.Workload*
- src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/*
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}

- subset: wasm_chrome
Expand All @@ -344,6 +360,8 @@ jobs:
- ${{ parameters._const_paths._wasm_specific_only }}
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
- ${{ if eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge') }}:
- eng/pipelines/runtime.yml
- ${{ parameters._const_paths._perf_pipeline_specific_only }}
- eng/testing/tests.mobile.targets
- src/mono/*
Expand Down
15 changes: 13 additions & 2 deletions eng/pipelines/runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -557,14 +557,25 @@ extends:
testRunNamePrefixSuffix: coreclr_checked
testScope: innerloop
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
# Temporary opt-in for this diagnostic PR's Windows x86 checked-libraries leg only.
condition: >-
or(
eq(variables['coreclrContainsChange'], true),
eq(variables['isRollingBuild'], true))
eq(variables['isRollingBuild'], true),
and(
eq(variables['Build.Reason'], 'PullRequest'),
eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge'),
eq(variables['osGroup'], 'windows'),
eq(variables['archType'], 'x86')))
condition: >-
or(
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'], true),
eq(variables['isRollingBuild'], true))
eq(variables['isRollingBuild'], true),
and(
eq(variables['Build.Reason'], 'PullRequest'),
eq(variables['Build.SourceBranch'], 'refs/pull/131907/merge'),
eq(variables['osGroup'], 'windows'),
eq(variables['archType'], 'x86')))

- template: /eng/pipelines/common/platform-matrix.yml
parameters:
Expand Down
15 changes: 15 additions & 0 deletions src/libraries/System.Diagnostics.Process/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,18 @@ See the [Help Wanted](https://github.com/dotnet/runtime/issues?q=is%3Aopen+is%3A

## Deployment
`System.Diagnostics.Process` is included in the shared framework. The package does not need to be installed into any project compatible with .NET Standard 2.0.

## Helix test partitions

Windows x86 CoreCLR console-runner test archives are divided into six Helix work items.
Each archive contains the same test assembly and supporting files, with a class filter in its
generated runner script. Each work item has its own payload, results, temporary files, and
test process. The existing assembly-level collection behavior is unchanged within each process.

The partitions are balanced using matched x86 CI timings, with headroom for slower executions
and work-item setup. The goal is five minutes or less per work item; the normal Helix timeout
is not reduced or increased. All rows of a theory stay together with their class.
The final partition excludes the classes in the first five, so new classes remain covered.

The ordinary local runner still executes the full suite. Other architectures, Mono, mobile,
NativeAOT, and other single-file runners keep their existing unpartitioned archives.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<Project>
<PropertyGroup>
<_ProcessTestShardDefinition>$(MSBuildThisFileFullPath)</_ProcessTestShardDefinition>
<_ShardProcessTests Condition="'$(ArchiveTests)' == 'true' and
'$(TargetPlatformIdentifier)' == 'windows' and
'$(TargetArchitecture)' == 'x86' and
'$(RuntimeFlavor)' == 'CoreCLR' and
'$(TestSingleFile)' != 'true'">true</_ShardProcessTests>
</PropertyGroup>

<ItemGroup>
<_ProcessTestShard Include="1" Arguments="-class System.Diagnostics.Tests.ProcessMultiplexingTests" />
<_ProcessTestShard Include="2" Arguments="-class System.Diagnostics.Tests.ProcessStreamingTests -class System.Diagnostics.Tests.SafeProcessHandleTests" />
<_ProcessTestShard Include="3" Arguments="-class System.Diagnostics.Tests.ProcessTests -class System.Diagnostics.Tests.StartSuspendedTests -class System.Diagnostics.Tests.StartAndForgetTests -class System.Diagnostics.Tests.ProcessCollectionTests -class System.Diagnostics.Tests.ProcessExitStatusTests" />
<_ProcessTestShard Include="4" Arguments="-class System.Diagnostics.Tests.ProcessHandlesTests -class System.Diagnostics.Tests.ProcessStartInfoTests" />
<_ProcessTestShard Include="5" Arguments="-class System.Diagnostics.Tests.RunTests -class System.Diagnostics.Tests.ProcessWaitingTests -class System.Diagnostics.Tests.ProcessOpenTests -class System.Diagnostics.Tests.ProcessStandardConsoleTests -class System.Diagnostics.Tests.ProcessModuleTests -class System.Diagnostics.Tests.ProcessThreadTests" />
<!-- The complement includes new classes automatically, without duplicating the earlier shards. -->
<_ProcessTestShard Include="6" Arguments="-noclass System.Diagnostics.Tests.ProcessMultiplexingTests -noclass System.Diagnostics.Tests.ProcessStreamingTests -noclass System.Diagnostics.Tests.SafeProcessHandleTests -noclass System.Diagnostics.Tests.ProcessTests -noclass System.Diagnostics.Tests.StartSuspendedTests -noclass System.Diagnostics.Tests.StartAndForgetTests -noclass System.Diagnostics.Tests.ProcessCollectionTests -noclass System.Diagnostics.Tests.ProcessExitStatusTests -noclass System.Diagnostics.Tests.ProcessHandlesTests -noclass System.Diagnostics.Tests.ProcessStartInfoTests -noclass System.Diagnostics.Tests.RunTests -noclass System.Diagnostics.Tests.ProcessWaitingTests -noclass System.Diagnostics.Tests.ProcessOpenTests -noclass System.Diagnostics.Tests.ProcessStandardConsoleTests -noclass System.Diagnostics.Tests.ProcessModuleTests -noclass System.Diagnostics.Tests.ProcessThreadTests" />
</ItemGroup>

<Target Name="_PrepareProcessTestShards"
AfterTargets="ZipTestArchive"
Condition="'$(_ShardProcessTests)' == 'true'">
<ItemGroup>
<_ProcessTestPayload Include="$(OutDir)**\*" Exclude="$(RunScriptOutputPath)" />
</ItemGroup>
</Target>

<Target Name="_ArchiveProcessTestShard"
AfterTargets="_PrepareProcessTestShards"
Condition="'$(_ShardProcessTests)' == 'true'"
Inputs="$(MSBuildProjectFullPath);$(_ProcessTestShardDefinition);$(RunScriptOutputPath);@(_ProcessTestPayload)"
Outputs="$(TestArchiveTestsDir)$(TestProjectName).%(_ProcessTestShard.Identity).zip">
<PropertyGroup>
<_ProcessTestShardDirectory>$(IntermediateOutputPath)process-test-shards\%(_ProcessTestShard.Identity)\</_ProcessTestShardDirectory>
</PropertyGroup>
<ItemGroup>
<_ProcessTestShardRunCommands Remove="@(_ProcessTestShardRunCommands)" />
<_ProcessTestShardRunCommands Include="$([System.IO.File]::ReadAllText('$(PreExecutionTestScript)'))"
Condition="'$(PreExecutionTestScript)' != ''" />
<_ProcessTestShardRunCommands Include="$(RunScriptCommand) %(_ProcessTestShard.Arguments)" />
<_ProcessTestShardRunCommands Include="@(PostRunScriptCommands)" />
</ItemGroup>

<RemoveDir Directories="$(_ProcessTestShardDirectory)" />
<MakeDir Directories="$(_ProcessTestShardDirectory)" />
<Copy SourceFiles="@(_ProcessTestPayload)"
DestinationFiles="@(_ProcessTestPayload -> '$(_ProcessTestShardDirectory)%(RecursiveDir)%(Filename)%(Extension)')"
UseHardlinksIfPossible="true" />
<GenerateRunScript RunCommands="@(_ProcessTestShardRunCommands)"
SetCommands="@(SetScriptCommands)"
TemplatePath="$(RunScriptInputPath)"
OutputPath="$(_ProcessTestShardDirectory)$(RunScriptOutputName)" />
<ZipDirectory SourceDirectory="$(_ProcessTestShardDirectory)"
DestinationFile="$(TestArchiveTestsDir)$(TestProjectName).%(_ProcessTestShard.Identity).zip"
Overwrite="true"
CompressionLevel="Fastest" />
</Target>

<Target Name="_RemoveUnshardedProcessTestArchive"
AfterTargets="_ArchiveProcessTestShard"
Condition="'$(_ShardProcessTests)' == 'true'">
<Error Condition="!Exists('$(TestArchiveTestsDir)$(TestProjectName).%(_ProcessTestShard.Identity).zip')"
Text="Missing Process test shard %(_ProcessTestShard.Identity)." />
<Delete Files="$(TestArchiveTestsDir)$(TestProjectName).zip" />
</Target>

<Target Name="_RemoveStaleProcessTestShards"
AfterTargets="ZipTestArchive"
Condition="'$(_ShardProcessTests)' != 'true'">
<Delete Files="@(_ProcessTestShard -> '$(TestArchiveTestsDir)$(TestProjectName).%(Identity).zip')" />
</Target>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,5 @@
<!-- This is a bug in the SDK tracked here: https://github.com/dotnet/sdk/issues/30718 -->
<PublishReadyToRunExclude Include="LongPath.dll" />
</ItemGroup>
<Import Project="ProcessTestShards.targets" />
</Project>
Loading