From f65a06efa6c922f326c7ce8a2300696914612bc4 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Wed, 5 Jul 2023 21:23:32 -0700 Subject: [PATCH 1/2] Add Helix project and supporting targets --- eng/Helix.CrossTarget.targets | 16 +++ eng/Helix.SingleTarget.targets | 14 +++ eng/Helix.props | 6 ++ eng/Helix.targets | 8 ++ eng/helix/Helix.proj | 164 ++++++++++++++++++++++++++++++ eng/helix/payload/dotnettest.cmd | 33 ++++++ eng/helix/payload/dotnettest.sh | 30 ++++++ src/Directory.Build.props | 4 +- src/Directory.Build.targets | 2 + src/Tests/Directory.Build.targets | 1 + src/Tests/Helix.targets | 17 ++++ 11 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 eng/Helix.CrossTarget.targets create mode 100644 eng/Helix.SingleTarget.targets create mode 100644 eng/Helix.props create mode 100644 eng/Helix.targets create mode 100644 eng/helix/Helix.proj create mode 100644 eng/helix/payload/dotnettest.cmd create mode 100755 eng/helix/payload/dotnettest.sh create mode 100644 src/Tests/Helix.targets diff --git a/eng/Helix.CrossTarget.targets b/eng/Helix.CrossTarget.targets new file mode 100644 index 00000000000..66bc48b89d5 --- /dev/null +++ b/eng/Helix.CrossTarget.targets @@ -0,0 +1,16 @@ + + + + <_TargetFrameworks Remove="@(_TargetFrameworks)" /> + <_TargetFrameworks Include="$(TargetFrameworks)" /> + + + + + + diff --git a/eng/Helix.SingleTarget.targets b/eng/Helix.SingleTarget.targets new file mode 100644 index 00000000000..e034e6b9260 --- /dev/null +++ b/eng/Helix.SingleTarget.targets @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/eng/Helix.props b/eng/Helix.props new file mode 100644 index 00000000000..40c64d43196 --- /dev/null +++ b/eng/Helix.props @@ -0,0 +1,6 @@ + + + true + false + + diff --git a/eng/Helix.targets b/eng/Helix.targets new file mode 100644 index 00000000000..8d82ef7cc69 --- /dev/null +++ b/eng/Helix.targets @@ -0,0 +1,8 @@ + + + + + diff --git a/eng/helix/Helix.proj b/eng/helix/Helix.proj new file mode 100644 index 00000000000..6f17013f02f --- /dev/null +++ b/eng/helix/Helix.proj @@ -0,0 +1,164 @@ + + + + $(Configuration) + $(BuildArch) + true + false + + $(PackageRid) + + + + .open + + $(USERNAME) + $(USER) + + + + pr + pr + official + + + + pr + $(HelixSourcePrefix)/dotnet/dotnet-monitor + $(HelixSource)/$(BUILD_SOURCEBRANCH) + test/binaries/ + + + + + Platform=$(HelixArchitecture) + + + + + + + + + + Windows 11 $(HelixArchitecture) $(HelixConfiguration) + + + + Windows 10 $(HelixArchitecture) $(HelixConfiguration) + + + + + Windows 10 $(HelixArchitecture) $(HelixConfiguration) + + + + + + + + Debian 11 $(HelixArchitecture) $(HelixConfiguration) + + + Ubuntu 18.04 $(HelixArchitecture) $(HelixConfiguration) + + + + Debian 11 $(HelixArchitecture) $(HelixConfiguration) + + + Mariner 2.0 $(HelixArchitecture) $(HelixConfiguration) + + + Ubuntu 18.04 $(HelixArchitecture) $(HelixConfiguration) + + + + + + + + Alpine 3.15 $(HelixArchitecture) $(HelixConfiguration) + + + + Alpine 3.15 $(HelixArchitecture) $(HelixConfiguration) + + + + + + + + OSX 13 $(HelixArchitecture) $(HelixConfiguration) + + + + OSX 13 $(HelixArchitecture) $(HelixConfiguration) + + + + + + %(AdditionalProperties);Configuration=$(HelixConfiguration) + + + + + + true + sdk + $(MicrosoftDotnetSdkInternalVersion) + + + + + + aspnetcore-runtime + + + aspnetcore-runtime + + + aspnetcore-runtime + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/helix/payload/dotnettest.cmd b/eng/helix/payload/dotnettest.cmd new file mode 100644 index 00000000000..a8de440ce56 --- /dev/null +++ b/eng/helix/payload/dotnettest.cmd @@ -0,0 +1,33 @@ +@echo off +setlocal + +set testAssembly=%1 +set configuration=%2 +set targetFramework=%3 +set architecture=%~4 + +set filterArgs= +if not "%~5" == "" ( + set filterArgs=--filter ^"%~5^" +) + +set exit_code=0 + +echo "Start tests..." + +dotnet.exe test ^ + "%HELIX_CORRELATION_PAYLOAD%\%testAssembly%\%configuration%\%targetFramework%\%testAssembly%.dll" ^ + --logger:"console;verbosity=normal" ^ + --logger:"trx;LogFileName=%testAssembly%_%targetFramework%_%architecture%.trx" ^ + --logger:"html;LogFileName=%testAssembly%_%targetFramework%_%architecture%.html" ^ + --ResultsDirectory:%HELIX_WORKITEM_UPLOAD_ROOT% ^ + --blame "CollectHangDump;TestTimeout=15m" ^ + %filterArgs% + +if not errorlevel 0 ( + set exit_code=%errorlevel% +) + +echo "Finished tests; exit code: %exit_code%" + +exit /b %exit_code% \ No newline at end of file diff --git a/eng/helix/payload/dotnettest.sh b/eng/helix/payload/dotnettest.sh new file mode 100755 index 00000000000..bc2a7d1bf08 --- /dev/null +++ b/eng/helix/payload/dotnettest.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +testAssembly="$1" +configuration="$2" +targetFramework="$3" +architecture="$4" + +filterArgs="" +if [[ ! -z "$filter" ]]; then + filterArgs="--filter \"$5\"" +fi + +exit_code=0 + +echo "Start tests..." + +dotnet test \ + "$HELIX_CORRELATION_PAYLOAD/$testAssembly/$configuration/$targetFramework/$testAssembly.dll" \ + --logger:"console;verbosity=normal" \ + --logger:"trx;LogFileName=${testAssembly}_${targetFramework}_${architecture}.trx" \ + --logger:"html;LogFileName=${testAssembly}_${targetFramework}_${architecture}.html" \ + --ResultsDirectory:$HELIX_WORKITEM_UPLOAD_ROOT \ + --blame "CollectHangDump;TestTimeout=15m" \ + $filterArgs + +exit_code=$? + +echo "Finished tests; exit code: $exit_code" + +exit $exit_code diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 5604afb705f..8e289785f93 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -32,7 +32,8 @@ - $(TestRunnerAdditionalArguments) --filter "TargetFrameworkMoniker=Net80" + TargetFrameworkMoniker=Net80 + $(TestRunnerAdditionalArguments) --filter "$(TestRunnerFilterArguments)" @@ -62,5 +63,6 @@ + diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index 7835a5a36d4..d01c1c8ddca 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -2,6 +2,8 @@ + + diff --git a/src/Tests/Directory.Build.targets b/src/Tests/Directory.Build.targets index cabc57929c0..546017f7f57 100644 --- a/src/Tests/Directory.Build.targets +++ b/src/Tests/Directory.Build.targets @@ -16,4 +16,5 @@ + diff --git a/src/Tests/Helix.targets b/src/Tests/Helix.targets new file mode 100644 index 00000000000..61fe5fe1a50 --- /dev/null +++ b/src/Tests/Helix.targets @@ -0,0 +1,17 @@ + + + $(TargetName) $(Configuration) $(TargetFramework) $(Platform) $(TestRunnerFilterArguments) + call %HELIX_CORRELATION_PAYLOAD%\dotnettest.cmd $(HelixDotnetTestArgs) + $HELIX_CORRELATION_PAYLOAD/dotnettest.sh $(HelixDotnetTestArgs) + + + + + + @(HelixWorkItemPreCommand) + $(HelixDotnetTestCommand) + @(HelixWorkItemPostCommand) + 00:30:00 + + + \ No newline at end of file From d929b4bd25e374e7726953cef566a66c2f9e9862 Mon Sep 17 00:00:00 2001 From: Justin Anderson Date: Thu, 13 Jul 2023 14:13:21 -0700 Subject: [PATCH 2/2] Parameterize test timeout --- eng/helix/payload/dotnettest.cmd | 7 ++++--- eng/helix/payload/dotnettest.sh | 7 ++++--- src/Directory.Build.props | 3 ++- src/Tests/Helix.targets | 6 ++++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/eng/helix/payload/dotnettest.cmd b/eng/helix/payload/dotnettest.cmd index a8de440ce56..5a62c203585 100644 --- a/eng/helix/payload/dotnettest.cmd +++ b/eng/helix/payload/dotnettest.cmd @@ -5,10 +5,11 @@ set testAssembly=%1 set configuration=%2 set targetFramework=%3 set architecture=%~4 +set timeoutMinutes=%~5 set filterArgs= -if not "%~5" == "" ( - set filterArgs=--filter ^"%~5^" +if not "%~6" == "" ( + set filterArgs=--filter ^"%~6^" ) set exit_code=0 @@ -21,7 +22,7 @@ dotnet.exe test ^ --logger:"trx;LogFileName=%testAssembly%_%targetFramework%_%architecture%.trx" ^ --logger:"html;LogFileName=%testAssembly%_%targetFramework%_%architecture%.html" ^ --ResultsDirectory:%HELIX_WORKITEM_UPLOAD_ROOT% ^ - --blame "CollectHangDump;TestTimeout=15m" ^ + --blame "CollectHangDump;TestTimeout=%timeoutMinutes%m" ^ %filterArgs% if not errorlevel 0 ( diff --git a/eng/helix/payload/dotnettest.sh b/eng/helix/payload/dotnettest.sh index bc2a7d1bf08..b78d0efb45c 100755 --- a/eng/helix/payload/dotnettest.sh +++ b/eng/helix/payload/dotnettest.sh @@ -4,10 +4,11 @@ testAssembly="$1" configuration="$2" targetFramework="$3" architecture="$4" +timeoutMinutes="$5" filterArgs="" -if [[ ! -z "$filter" ]]; then - filterArgs="--filter \"$5\"" +if [[ ! -z "$6" ]]; then + filterArgs="--filter \"$6\"" fi exit_code=0 @@ -20,7 +21,7 @@ dotnet test \ --logger:"trx;LogFileName=${testAssembly}_${targetFramework}_${architecture}.trx" \ --logger:"html;LogFileName=${testAssembly}_${targetFramework}_${architecture}.html" \ --ResultsDirectory:$HELIX_WORKITEM_UPLOAD_ROOT \ - --blame "CollectHangDump;TestTimeout=15m" \ + --blame "CollectHangDump;TestTimeout=${timeoutMinutes}m" \ $filterArgs exit_code=$? diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 8e289785f93..379e69cfb1a 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -26,7 +26,8 @@ - --blame "CollectHangDump;TestTimeout=15m" + 15 + --blame "CollectHangDump;TestTimeout=$(TestRunnerTestTimeoutMinutes)m" diff --git a/src/Tests/Helix.targets b/src/Tests/Helix.targets index 61fe5fe1a50..86c75cae1aa 100644 --- a/src/Tests/Helix.targets +++ b/src/Tests/Helix.targets @@ -1,8 +1,10 @@ - $(TargetName) $(Configuration) $(TargetFramework) $(Platform) $(TestRunnerFilterArguments) + $(TargetName) $(Configuration) $(TargetFramework) $(Platform) $(TestRunnerTestTimeoutMinutes) $(TestRunnerFilterArguments) call %HELIX_CORRELATION_PAYLOAD%\dotnettest.cmd $(HelixDotnetTestArgs) $HELIX_CORRELATION_PAYLOAD/dotnettest.sh $(HelixDotnetTestArgs) + + $([MSBuild]::Add($(TestRunnerTestTimeoutMinutes), 10)) @@ -11,7 +13,7 @@ @(HelixWorkItemPreCommand) $(HelixDotnetTestCommand) @(HelixWorkItemPostCommand) - 00:30:00 + 00:$(HelixTimeoutMinutes):00 \ No newline at end of file