diff --git a/eng/pipelines/common/evaluate-default-paths.yml b/eng/pipelines/common/evaluate-default-paths.yml index dba1aaad202b60..4874c6b6ffcb1c 100644 --- a/eng/pipelines/common/evaluate-default-paths.yml +++ b/eng/pipelines/common/evaluate-default-paths.yml @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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/* diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 9fabe16d48fd80..9759b94d7e1d3e 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -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: diff --git a/src/libraries/System.Diagnostics.Process/README.md b/src/libraries/System.Diagnostics.Process/README.md index c1c29f88d6dc86..da3889a238cffb 100644 --- a/src/libraries/System.Diagnostics.Process/README.md +++ b/src/libraries/System.Diagnostics.Process/README.md @@ -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. diff --git a/src/libraries/System.Diagnostics.Process/tests/ProcessTestShards.targets b/src/libraries/System.Diagnostics.Process/tests/ProcessTestShards.targets new file mode 100644 index 00000000000000..4559cb886cfc63 --- /dev/null +++ b/src/libraries/System.Diagnostics.Process/tests/ProcessTestShards.targets @@ -0,0 +1,73 @@ + + + <_ProcessTestShardDefinition>$(MSBuildThisFileFullPath) + <_ShardProcessTests Condition="'$(ArchiveTests)' == 'true' and + '$(TargetPlatformIdentifier)' == 'windows' and + '$(TargetArchitecture)' == 'x86' and + '$(RuntimeFlavor)' == 'CoreCLR' and + '$(TestSingleFile)' != 'true'">true + + + + <_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" /> + + <_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" /> + + + + + <_ProcessTestPayload Include="$(OutDir)**\*" Exclude="$(RunScriptOutputPath)" /> + + + + + + <_ProcessTestShardDirectory>$(IntermediateOutputPath)process-test-shards\%(_ProcessTestShard.Identity)\ + + + <_ProcessTestShardRunCommands Remove="@(_ProcessTestShardRunCommands)" /> + <_ProcessTestShardRunCommands Include="$([System.IO.File]::ReadAllText('$(PreExecutionTestScript)'))" + Condition="'$(PreExecutionTestScript)' != ''" /> + <_ProcessTestShardRunCommands Include="$(RunScriptCommand) %(_ProcessTestShard.Arguments)" /> + <_ProcessTestShardRunCommands Include="@(PostRunScriptCommands)" /> + + + + + + + + + + + + + + + + + + diff --git a/src/libraries/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj b/src/libraries/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj index 100ff174567dab..d3ee2f4468f95c 100644 --- a/src/libraries/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj +++ b/src/libraries/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj @@ -119,4 +119,5 @@ +