Support testing internal service releases (#926)
authorMike McLaughlin <mikem@microsoft.com>
Wed, 25 Mar 2020 00:51:54 +0000 (17:51 -0700)
committerGitHub <noreply@github.com>
Wed, 25 Mar 2020 00:51:54 +0000 (17:51 -0700)
Support testing internal service releases

Adds 3 pipeline variables that need to be set testing an internal service release:

InternalRuntimeSourceVersion - the service release version i.e. 2.1.17, 3.1.3, etc.
InternalRuntimeSourceFeed    - the service release internal feed
InternalRuntimeSourceFeedKey - the service release feed PAT

No longer runs the tests on desktop framework if private build or internal service release.

Remove dailytest option

diagnostics.yml
eng/InstallRuntimes.proj
eng/build.ps1
eng/build.sh
eng/build.yml
src/SOS/SOS.UnitTests/ConfigFiles/Unix/Debugger.Tests.Config.txt
src/SOS/SOS.UnitTests/ConfigFiles/Windows/Debugger.Tests.Config.txt

index 8fe76a879fcf45cf2e1d456092c782026cf9cab9..34c0cd89e6d831df45393c1e6eb4e3c055e4797b 100644 (file)
@@ -17,7 +17,6 @@ variables:
     value: DotNetCore
   - name: _InternalBuildArgs
     value: ''
-
   - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
     - name: _SignType
       value: real
@@ -26,7 +25,7 @@ variables:
     - name: _InternalBuildArgs
       value: /p:DotNetSignType=$(_SignType)
         /p:TeamName=$(_TeamName)
-        /p:DotNetPublishUsingPipelines=$(PublishPackages)
+        /p:DotNetPublishUsingPipelines=true
         /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
 
 stages:
index 4b4b6255ff74e3dc2bf3d3137692910c776d3e25..20e687a735c75619794951e7bcfec9d93be24c20 100644 (file)
@@ -2,8 +2,14 @@
 <Project>
   <!--
      $(BuildArch) - architecture to test (x64, x86, arm, arm64). Defaults to x64.
-     $(DailyTest) - if true, only install/test the latest (master branch) runtime
      $(PrivateBuildPath) - if non-empty, path to private runtime build to copy/test
+
+     Internal service release testing:
+
+     $(DotnetRuntimeVersion)         - the service release version to test against (fx-version option value) i.e. 2.1.17, 3.1.3 or "default"
+     $(DotnetRuntimeDownloadVersion) - the service release package version i.e. 2.1.17, 3.1.3-servicing.20128.1 or "default"
+     $(RuntimeSourceFeed)            - the service release internal blob storage link
+     $(RuntimeSourceFeedKey)         - the service release blob feed token
      
      From Versions.props:
 
   -->
 
   <PropertyGroup>
-    <DailyTest Condition="'$(DailyTest)' == ''">false</DailyTest>
     <BuildArch Condition="'$(BuildArch)' == ''">$(Platform)</BuildArch>
     <BuildArch Condition="'$(BuildArch)' == ''">x64</BuildArch>
+    <PrivateBuildTesting>false</PrivateBuildTesting>
+    <PrivateBuildTesting Condition="'$(PrivateBuildPath)' != ''">true</PrivateBuildTesting>
+    <InternalReleaseTesting>false</InternalReleaseTesting>
+    <InternalReleaseTesting Condition="'$(DotnetRuntimeVersion)' != 'default'">true</InternalReleaseTesting>
+    <ExtraInstallArgs>-runtimesourcefeed '$(RuntimeSourceFeed)' -runtimesourcefeedkey '$(RuntimeSourceFeedKey)'</ExtraInstallArgs>
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(BuildArch)' != 'x86'">
     </Otherwise>
   </Choose>
 
-  <ItemGroup>
-    <!-- We always test on latest, so install that one even for scheduled builds -->
-    <TestVersions Include="Latest" RuntimeVersion="$(MicrosoftNETCoreAppVersion)" AspNetVersion="$(MicrosoftAspNetCoreAppRefVersion)" Install="true" />
-    <TestVersions Include="31" RuntimeVersion="$(MicrosoftNETCoreApp31Version)" AspNetVersion="$(MicrosoftAspNetCoreApp31Version)" Install="!$(DailyTest)" />
-    <TestVersions Include="30" RuntimeVersion="$(MicrosoftNETCoreApp30Version)" AspNetVersion="$(MicrosoftAspNetCoreApp30Version)" Install="!$(DailyTest)" />
-    <TestVersions Include="21" RuntimeVersion="$(MicrosoftNETCoreApp21Version)" AspNetVersion="$(MicrosoftAspNetCoreApp21Version)" Install="true" />
+  <ItemGroup Condition="!$(InternalReleaseTesting) and !$(PrivateBuildTesting)">
+    <TestVersions Include="Latest" RuntimeVersion="$(MicrosoftNETCoreAppVersion)" AspNetVersion="$(MicrosoftAspNetCoreAppRefVersion)" />
+    <TestVersions Include="31" RuntimeVersion="$(MicrosoftNETCoreApp31Version)" AspNetVersion="$(MicrosoftAspNetCoreApp31Version)" />
+    <TestVersions Include="30" RuntimeVersion="$(MicrosoftNETCoreApp30Version)" AspNetVersion="$(MicrosoftAspNetCoreApp30Version)" />
+    <TestVersions Include="21" RuntimeVersion="$(MicrosoftNETCoreApp21Version)" AspNetVersion="$(MicrosoftAspNetCoreApp21Version)" />
+  </ItemGroup>
+
+  <!-- Local private build testing -->
+  <ItemGroup Condition="$(PrivateBuildTesting)">
+    <TestVersions Include="Latest" RuntimeVersion="$(MicrosoftNETCoreAppVersion)" AspNetVersion="$(MicrosoftAspNetCoreAppRefVersion)" />
+    <TestVersions Include="21" RuntimeVersion="$(MicrosoftNETCoreApp21Version)" />
+  </ItemGroup>
+
+  <!-- Internal service release testing -->
+  <ItemGroup Condition="$(InternalReleaseTesting)">
+    <TestVersions Include="Internal" RuntimeVersion="$(DotnetRuntimeDownloadVersion)" ExtraInstallArgs="$(ExtraInstallArgs)" Condition="'$(DotnetRuntimeDownloadVersion)' != 'default'"/>
+    <TestVersions Include="Internal" RuntimeVersion="$(DotnetRuntimeVersion)" ExtraInstallArgs="$(ExtraInstallArgs)" Condition="'$(DotnetRuntimeDownloadVersion)' == 'default'"/>
+    <TestVersions Include="21" RuntimeVersion="$(MicrosoftNETCoreApp21Version)" />
   </ItemGroup>
 
 <!--
@@ -72,7 +94,7 @@
 
   <Target Name="InstallTestRuntimes" 
           BeforeTargets="RunTests"
-          DependsOnTargets="InstallRuntimesWindows;InstallRuntimesUnix;WriteTestVersionManifest;TestPrivateBuild" />
+          DependsOnTargets="CleanupVersionManifest;InstallRuntimesWindows;InstallRuntimesUnix;CopyPrivateBuild;WriteTestVersionManifest;" />
 
 <!--
     Installs the test runtimes on Windows
           Condition="$([MSBuild]::IsOsPlatform(Windows))"
           Inputs="$(VersionsPropsPath)" Outputs="$(TestConfigFileName)">
 
-    <Exec Command="$(PowershellWrapper) &quot;&amp; { &amp;$(DotnetInstallScriptCmd) $(CommonInstallArgs) -version %(TestVersions.RuntimeVersion) -runtime dotnet }&quot;"
-          Condition="%(TestVersions.Install)" />
+    <Exec Command="$(PowershellWrapper) &quot;&amp; { &amp;$(DotnetInstallScriptCmd) $(CommonInstallArgs) %(TestVersions.ExtraInstallArgs) -version %(TestVersions.RuntimeVersion) -runtime dotnet }&quot;"
+          Condition="'%(TestVersions.RuntimeVersion)' != ''" />
 
-    <Exec Command="$(PowershellWrapper) &quot;&amp; { &amp;$(DotnetInstallScriptCmd) $(CommonInstallArgs) -version %(TestVersions.AspNetVersion) -runtime aspnetcore }&quot;"
-          Condition="%(TestVersions.Install)" />
+    <Exec Command="$(PowershellWrapper) &quot;&amp; { &amp;$(DotnetInstallScriptCmd) $(CommonInstallArgs) %(TestVersions.ExtraInstallArgs) -version %(TestVersions.AspNetVersion) -runtime aspnetcore }&quot;"
+          Condition="'%(TestVersions.AspNetVersion)' != ''" />
   </Target>
 
 <!--
           Condition="!$([MSBuild]::IsOsPlatform(Windows))"
           Inputs="$(VersionsPropsPath)" Outputs="$(TestConfigFileName)">
 
-    <Exec Command="$(DotnetInstallScriptCmd) $(CommonInstallArgs) -version %(TestVersions.RuntimeVersion) -runtime dotnet"
+    <Exec Command="$(DotnetInstallScriptCmd) $(CommonInstallArgs) %(TestVersions.ExtraInstallArgs) -version %(TestVersions.RuntimeVersion) -runtime dotnet"
           IgnoreStandardErrorWarningFormat="true"
-          Condition="%(TestVersions.Install)" />
+          Condition="'%(TestVersions.RuntimeVersion)' != ''" />
 
-    <Exec Command="$(DotnetInstallScriptCmd) $(CommonInstallArgs) -version %(TestVersions.AspNetVersion) -runtime aspnetcore"
+    <Exec Command="$(DotnetInstallScriptCmd) $(CommonInstallArgs) %(TestVersions.ExtraInstallArgs) -version %(TestVersions.AspNetVersion) -runtime aspnetcore"
           IgnoreStandardErrorWarningFormat="true"
-          Condition="%(TestVersions.Install)" />
+          Condition="'%(TestVersions.AspNetVersion)' != ''" />
    </Target>
 
 <!--
           Outputs="$(TestConfigFileName)">
 
     <PropertyGroup>
+      <RuntimeVersionLatest>$(MicrosoftNETCoreAppVersion)</RuntimeVersionLatest>
+      <RuntimeVersionLatest Condition="$(InternalReleaseTesting)">$(DotnetRuntimeVersion)</RuntimeVersionLatest>
       <TestConfigFileLines>
 <![CDATA[
 <Configuration>
-  <DailyTest>$(DailyTest)</DailyTest>
+  <PrivateBuildTesting>$(PrivateBuildTesting)</PrivateBuildTesting>
+  <InternalReleaseTesting>$(InternalReleaseTesting)</InternalReleaseTesting>
+
   <RuntimeVersion21>$(MicrosoftNETCoreApp21Version)</RuntimeVersion21>
   <AspNetCoreVersion21>$(MicrosoftAspNetCoreApp21Version)</AspNetCoreVersion21>
+
   <RuntimeVersion30>$(MicrosoftNETCoreApp30Version)</RuntimeVersion30>
   <AspNetCoreVersion30>$(MicrosoftAspNetCoreApp30Version)</AspNetCoreVersion30>
+
   <RuntimeVersion31>$(MicrosoftNETCoreApp31Version)</RuntimeVersion31>
   <AspNetCoreVersion31>$(MicrosoftAspNetCoreApp31Version)</AspNetCoreVersion31>
-  <RuntimeVersionLatest>$(MicrosoftNETCoreAppVersion)</RuntimeVersionLatest>
+
+  <RuntimeVersionLatest>$(RuntimeVersionLatest)</RuntimeVersionLatest>
   <AspNetCoreVersionLatest>$(MicrosoftAspNetCoreAppRefVersion)</AspNetCoreVersionLatest>
 </Configuration>
 ]]>
     </ItemGroup>
   </Target>
 
+<!--
+    Removes the test config file if internal service release or private build testing
+-->
+
+  <Target Name="CleanupVersionManifest"
+          Condition="$(InternalReleaseTesting) or $(PrivateBuildTesting)">
+
+    <!-- Make sure the config file gets regenerated in the WriteTestVersionManifest target -->
+    <Delete Files="$(TestConfigFileName)" />
+
+  </Target>
+
 <!--
     Copies the private runtime build binaries and on Windows adds registry keys
 -->
 
-  <Target Name="TestPrivateBuild"
+  <Target Name="CopyPrivateBuild"
           Condition="'$(PrivateBuildPath)' != ''"
           DependsOnTargets="ModifyRegistry">
 
index 820720139bfacc95c5e9f92a54eafd0ef120d4cf..6d3769d8f341fafaa4602a1397ee71adf044a83d 100644 (file)
@@ -7,9 +7,12 @@ Param(
   [switch] $ci,
   [switch] $skipmanaged,
   [switch] $skipnative,
-  [switch] $dailytest,
   [string] $privatebuildpath = "",
   [switch] $cleanupprivatebuild,
+  [ValidatePattern("(default|\d+\.\d+.\d+(-[a-z0-9\.]+)?)")][string] $dotnetruntimeversion = 'default',
+  [ValidatePattern("(default|\d+\.\d+.\d+(-[a-z0-9\.]+)?)")][string] $dotnetruntimedownloadversion= 'default',
+  [string] $runtimesourcefeed = '',
+  [string] $runtimesourcefeedkey = '',
   [Parameter(ValueFromRemainingArguments=$true)][String[]] $remainingargs
 )
 
@@ -47,16 +50,11 @@ $engroot = Join-Path $reporoot "eng"
 $artifactsdir = Join-Path $reporoot "artifacts"
 $logdir = Join-Path $artifactsdir "log"
 $logdir = Join-Path $logdir Windows_NT.$architecture.$configuration
-$dailytestproperty = "false"
 
 if ($ci) {
     $remainingargs = "-ci " + $remainingargs
 }
 
-if ($dailytest -or $privatebuildpath -ne "") {
-    $dailytestproperty = "true"
-}
-
 # Remove the private build registry keys
 if ($cleanupprivatebuild) {
     Invoke-Expression "& `"$engroot\common\msbuild.ps1`" $engroot\CleanupPrivateBuild.csproj /v:$verbosity /t:CleanupPrivateBuild /p:BuildArch=$architecture /p:TestArchitectures=$architecture"
@@ -80,9 +78,22 @@ if (-not $skipnative) {
 }
 
 # Run the xunit tests
-if ($test -or $dailytest) {
+if ($test) {
     if (-not $crossbuild) {
-        & "$engroot\common\build.ps1" -test -configuration $configuration -verbosity $verbosity -ci:$ci /bl:$logdir\Test.binlog /p:BuildArch=$architecture /p:TestArchitectures=$architecture /p:DailyTest=$dailytestproperty /p:PrivateBuildPath=$privatebuildpath
+        & "$engroot\common\build.ps1" `
+          -test `
+          -configuration $configuration `
+          -verbosity $verbosity `
+          -ci:$ci `
+          /bl:$logdir\Test.binlog `
+          /p:BuildArch=$architecture `
+          /p:TestArchitectures=$architecture `
+          /p:PrivateBuildPath="$privatebuildpath" `
+          /p:DotnetRuntimeVersion="$dotnetruntimeversion" `
+          /p:DotnetRuntimeDownloadVersion="$dotnetruntimedownloadversion" `
+          /p:RuntimeSourceFeed="$runtimesourcefeed" `
+          /p:RuntimeSourceFeedKey="$runtimesourcefeedkey"
+
         if ($lastExitCode -ne 0) {
             exit $lastExitCode
         }
index bf621c97916b3cefaed662696f3af32812b9839a..da7042e18003a3c08c2d8267dae2e922f487f47d 100755 (executable)
@@ -29,13 +29,16 @@ __ManagedBuild=true
 __NativeBuild=true
 __CrossBuild=false
 __Test=false
-__DailyTest=false
 __PrivateBuildPath=""
 __CI=false
 __Verbosity=minimal
 __ManagedBuildArgs=
 __TestArgs=
 __UnprocessedBuildArgs=
+__DotnetRuntimeVersion='default'
+__DotnetRuntimeDownloadVersion='default'
+__RuntimeSourceFeed=''
+__RuntimeSourceFeedKey=''
 
 usage()
 {
@@ -43,7 +46,6 @@ usage()
     echo "--skipmanaged- Skip building managed components"
     echo "--skipnative - Skip building native components"
     echo "--test - run xunit tests"
-    echo "--dailytest - test components for daily build job"
     echo "--privatebuildpath - path to local private runtime build to test"
     echo "--architecture <x64|x86|arm|armel|arm64>"
     echo "--configuration <debug|release>"
@@ -175,13 +177,28 @@ while :; do
             __Test=true
             ;;
 
-        -dailytest)
-            __DailyTest=true
+        -privatebuildpath)
+            __PrivateBuildPath="$2"
+            shift
             ;;
 
-        -privatebuildpath)
-            __PrivateBuildPath=$2
-            __DailyTest=true
+        -dotnetruntimeversion)
+            __DotnetRuntimeVersion="$2"
+            shift
+            ;;
+
+        -dotnetruntimedownloadversion)
+            __DotnetRuntimeDownloadVersion="$2"
+            shift
+            ;;
+
+        -runtimesourcefeed)
+            __RuntimeSourceFeed="$2"
+            shift
+            ;;
+
+        -runtimesourcefeedkey)
+            __RuntimeSourceFeedKey="$2"
             shift
             ;;
 
@@ -451,7 +468,19 @@ fi
 if [ $__NativeBuild == true ]; then
     echo "Generating Version Source File"
     __GenerateVersionLog="$__LogDir/GenerateVersion.binlog"
-    "$__ProjectRoot/eng/common/msbuild.sh" $__ProjectRoot/eng/CreateVersionFile.csproj /v:$__Verbosity /bl:$__GenerateVersionLog /t:GenerateVersionFiles /restore /p:GenerateVersionSourceFile=true /p:NativeVersionSourceFile="$__IntermediatesDir/version.cpp" /p:Configuration="$__BuildType" /p:Platform="$__BuildArch" $__UnprocessedBuildArgs
+
+    "$__ProjectRoot/eng/common/msbuild.sh" \
+        $__ProjectRoot/eng/CreateVersionFile.csproj \
+        /v:$__Verbosity \
+        /bl:$__GenerateVersionLog \
+        /t:GenerateVersionFiles \
+        /restore \
+        /p:GenerateVersionSourceFile=true \
+        /p:NativeVersionSourceFile="$__IntermediatesDir/version.cpp" \
+        /p:Configuration="$__BuildType" \
+        /p:Platform="$__BuildArch" \
+        $__UnprocessedBuildArgs
+
     if [ $? != 0 ]; then
         echo "Generating Version Source File FAILED"
         exit 1
@@ -506,7 +535,19 @@ if [ $__Test == true ]; then
 
       echo "lldb: '$LLDB_PATH' gdb: '$GDB_PATH'"
 
-      "$__ProjectRoot/eng/common/build.sh" --test --configuration "$__BuildType" --verbosity "$__Verbosity" /bl:$__LogDir/Test.binlog /p:BuildArch=$__BuildArch /p:DailyTest=$__DailyTest /p:PrivateBuildPath=$__PrivateBuildPath $__TestArgs
+      "$__ProjectRoot/eng/common/build.sh" \
+        --test \
+        --configuration "$__BuildType" \
+        --verbosity "$__Verbosity" \
+        /bl:$__LogDir/Test.binlog \
+        /p:BuildArch="$__BuildArch" \
+        /p:PrivateBuildPath="$__PrivateBuildPath" \
+        /p:DotnetRuntimeVersion="$__DotnetRuntimeVersion" \
+        /p:DotnetRuntimeDownloadVersion="$__DotnetRuntimeDownloadVersion" \
+        /p:RuntimeSourceFeed="$__RuntimeSourceFeed" \
+        /p:RuntimeSourceFeedKey="$__RuntimeSourceFeedKey" \
+        $__TestArgs
+
       if [ $? != 0 ]; then
           exit 1
       fi
index c51ac37d1a40229b227bec2975914842c56c8769..ba780b413ffbe3f9948514030df050b9b2ebadb1 100644 (file)
@@ -85,6 +85,16 @@ jobs:
     - _HelixType: build/product
     - _HelixBuildConfig: $(_BuildConfig)
     - _Pipeline_StreamDumpDir: $(Build.SourcesDirectory)/artifacts/tmp/$(_BuildConfig)/streams
+    - _InternalInstallArgs: ''
+    # For testing msrc's and service releases. The RuntimeSourceVersion is either "default" or the service release version to test
+    - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+      - group: DotNet-MSRC-Storage
+      - _InternalInstallArgs:
+          -dotnetruntimeversion '$(DotnetRuntimeVersion)'
+          -dotnetruntimedownloadversion '$(DotnetRuntimeDownloadVersion)'
+          -runtimesourcefeed '$(dotnetfeedmsrc-private-feed-url)'
+          -runtimesourcefeedkey '$(dotnetclimsrc-read-sas-token-base64)'
 
     # Only enable publishing in non-public, non PR scenarios.
     - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
@@ -110,6 +120,7 @@ jobs:
           -architecture $(_BuildArch)
           -prepareMachine 
           /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
+          $(_InternalInstallArgs)
         displayName: Build / Test
         condition: succeeded()
 
@@ -132,6 +143,7 @@ jobs:
           --prepareMachine 
           /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
           /p:BUILD_BUILDNUMBER=$(BUILD.BUILDNUMBER)
+          $(_InternalInstallArgs)
         displayName: Docker Build / Test
         condition: succeeded()
 
@@ -143,6 +155,7 @@ jobs:
           --architecture $(_BuildArch)
           --prepareMachine
           /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
+          $(_InternalInstallArgs)
         displayName: Build / Test
         condition: succeeded()
  
index 1a57d4fd466401de3e26fdededcdbee78f5fe772..e937c4aa4ae7d83fa6d6d59e37731b4c94d5d560 100644 (file)
   <LogDir>$(RootBinDir)/TestResults/$(TargetConfiguration)/sos.unittests_$(Timestamp)</LogDir>
   <DumpDir>$(RootBinDir)/tmp/$(TargetConfiguration)\dumps</DumpDir>
   
+  <TestLatestOnly>false</TestLatestOnly>
+  <TestLatestOnly Condition="'$(PrivateBuildTesting)' == 'true'">true</TestLatestOnly>
+  <TestLatestOnly Condition="'$(InternalReleaseTesting)' == 'true'">true</TestLatestOnly>
+
+  <TestWebApp3>true</TestWebApp3>
+  <TestWebApp3 Condition="'$(InternalReleaseTesting)' == 'true'">false</TestWebApp3>
+
+  <!-- Build the debuggee for this framework version but run it on latest -->
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '5')">netcoreapp3.0</BuildProjectFrameworkLatest>
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '3.1')">netcoreapp3.0</BuildProjectFrameworkLatest>
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '2.1')">netcoreapp2.1</BuildProjectFrameworkLatest>
+
   <DebuggeeSourceRoot>$(RepoRootDir)/src/SOS/SOS.UnitTests/Debuggees</DebuggeeSourceRoot>
   <DebuggeeBuildProcess>sdk.prebuilt</DebuggeeBuildProcess>
   <DebuggeeBuildRoot>$(RootBinDir)</DebuggeeBuildRoot>
         Default (prebuilt)
       -->
     <Option>
-      <!-- The debuggee built for 3.0 but run it on latest -->
-      <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
+      <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
       <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
     </Option>
-    <Option Condition="'$(DailyTest)' != 'true'">
+    <Option Condition="'$(TestLatestOnly)' != 'true'">
       <!-- The debuggee built for 3.0 but run it on 3.1 -->
       <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
       <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
     </Option>
-    <Option Condition="'$(DailyTest)' != 'true'">
+    <Option Condition="'$(TestLatestOnly)' != 'true'">
       <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
       <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
     </Option>
-    <Option Condition="'$(DailyTest)' != 'true'">
+    <Option Condition="'$(TestLatestOnly)' != 'true'">
       <BuildProjectFramework>netcoreapp2.1</BuildProjectFramework>
       <RuntimeFrameworkVersion>$(RuntimeVersion21)</RuntimeFrameworkVersion>
     </Option>
       <TestName>SOS.StackAndOtherTests</TestName>
       <Options>
         <Option>
-          <!-- Build the debuggee for 3.0 but run it on latest -->
-          <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-          <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
+          <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <!-- Build the debuggee for 3.0 but run it on 3.1 -->
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-          <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
           <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-          <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
           <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <BuildProjectFramework>netcoreapp2.1</BuildProjectFramework>
-          <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion21)</BuildProjectMicrosoftNetCoreAppVersion>
           <RuntimeFrameworkVersion>$(RuntimeVersion21)</RuntimeFrameworkVersion>
         </Option>
       </Options>
     <!--
         SOS.WebApp3 (runs on 3.0, 3.1 and latest aspnetcore)
       -->
-    <Option>
+    <Option Condition="'$(TestWebApp3)' == 'true'">
       <TestName>SOS.WebApp3</TestName>
       <Options>
         <Option>
-          <!-- Build the debuggee for 3.0 but run it on latest -->
-          <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
+          <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
           <FrameworkVersion>$(AspNetCoreVersionLatest)</FrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <!-- Build the debuggee for 3.0 but run it on 3.1 -->
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
           <FrameworkVersion>$(AspNetCoreVersion31)</FrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
           <FrameworkVersion>$(AspNetCoreVersion30)</FrameworkVersion>
index e708ee7f3ed34ca13b523980b23e931f0ac55bca..116b5977ea6cebea75063e1621fbcb13360ff3b0 100644 (file)
   <CDBPath>$(RootBinDir)\bin\SOS.UnitTests\$(TargetConfiguration)\netcoreapp2.0\publish\runtimes\win-$(TargetArchitecture)\native\cdb.exe</CDBPath>
   <CDBHelperExtension>$(InstallDir)\runcommand.dll</CDBHelperExtension>
 
+  <TestLatestOnly>false</TestLatestOnly>
+  <TestLatestOnly Condition="'$(PrivateBuildTesting)' == 'true'">true</TestLatestOnly>
+  <TestLatestOnly Condition="'$(InternalReleaseTesting)' == 'true'">true</TestLatestOnly>
+
+  <TestWebApp>true</TestWebApp>
+  <TestWebApp Condition="'$(TestLatestOnly)' == 'true'">false</TestWebApp>
+
+  <TestWebApp3>true</TestWebApp3>
+  <TestWebApp3 Condition="'$(InternalReleaseTesting)' == 'true'">false</TestWebApp3>
+
+  <TestDesktop>true</TestDesktop>
+  <TestDesktop Condition="'$(TestLatestOnly)' == 'true'">false</TestDesktop>
+  <TestDesktop Condition="'$(TargetArchitecture)' == 'arm64'">false</TestDesktop>
+
+  <!-- Build the debuggee for this framework version but run it on latest -->
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '5')">netcoreapp3.0</BuildProjectFrameworkLatest>
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '3.1')">netcoreapp3.0</BuildProjectFrameworkLatest>
+  <BuildProjectFrameworkLatest Condition="StartsWith('$(RuntimeVersionLatest)', '2.1')">netcoreapp2.1</BuildProjectFrameworkLatest>
+
   <DesktopFrameworkPath Condition="$(TargetArchitecture) == x64">$(WinDir)\Microsoft.Net\Framework64\v4.0.30319\</DesktopFrameworkPath>
   <DesktopFrameworkPath Condition="$(TargetArchitecture) != x64">$(WinDir)\Microsoft.Net\Framework\v4.0.30319\</DesktopFrameworkPath>
   <DesktopFramework>net462</DesktopFramework>
             Default (prebuilt)
           -->
         <Option>
-          <!-- The debuggee built for 3.0 but run it on latest -->
-          <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
+          <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <!-- The debuggee built for 3.0 but run it on 3.1 -->
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
         </Option>
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestLatestOnly)' != 'true'">
           <BuildProjectFramework>netcoreapp2.1</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion21)</RuntimeFrameworkVersion>
         </Option>
           <TestName>SOS.StackAndOtherTests</TestName>
           <Options>
             <Option>
-              <!-- Build the debuggee for 3.0 but run it on latest -->
-              <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-              <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
+              <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
               <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
             </Option>
-            <Option Condition="'$(DailyTest)' != 'true'">
+            <Option Condition="'$(TestLatestOnly)' != 'true'">
               <!-- Build the debuggee for 3.0 but run it on 3.1 -->
               <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-              <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
               <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
             </Option>
-            <Option Condition="'$(DailyTest)' != 'true'">
+            <Option Condition="'$(TestLatestOnly)' != 'true'">
               <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
-              <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion30)</BuildProjectMicrosoftNetCoreAppVersion>
               <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
             </Option>
-            <Option Condition="'$(DailyTest)' != 'true'">
+            <Option Condition="'$(TestLatestOnly)' != 'true'">
               <BuildProjectFramework>netcoreapp2.1</BuildProjectFramework>
-              <BuildProjectMicrosoftNetCoreAppVersion>$(RuntimeVersion21)</BuildProjectMicrosoftNetCoreAppVersion>
               <RuntimeFrameworkVersion>$(RuntimeVersion21)</RuntimeFrameworkVersion>
             </Option>
           </Options>
         <!--
             SOS.WebApp (runs only on Windows 2.x aspnetcore)
           -->
-        <Option Condition="'$(DailyTest)' != 'true'">
+        <Option Condition="'$(TestWebApp)' == 'true'">
           <TestName>SOS.WebApp</TestName>
           <BuildProjectFramework>netcoreapp2.1</BuildProjectFramework>
           <RuntimeFrameworkVersion>$(RuntimeVersion21)</RuntimeFrameworkVersion>
         <!--
             SOS.WebApp3 and SOS.DualRuntimes (runs on 3.0, 3.1 and latest aspnetcore)
           -->
-        <Option>
+        <Option Condition="'$(TestWebApp3)' == 'true'">
           <Options>
             <Option>
               <TestName>SOS.WebApp3</TestName>
           </Options>
           <Options>
             <Option>
-              <!-- Build the debuggee for 3.0 but run it on latest -->
-              <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
+              <BuildProjectFramework>$(BuildProjectFrameworkLatest)</BuildProjectFramework>
               <RuntimeFrameworkVersion>$(RuntimeVersionLatest)</RuntimeFrameworkVersion>
               <FrameworkVersion>$(AspNetCoreVersionLatest)</FrameworkVersion>
             </Option>
-            <Option Condition="'$(DailyTest)' != 'true'">
+            <Option Condition="'$(TestLatestOnly)' != 'true'">
               <!-- Build the debuggee for 3.0 but run it on 3.1 -->
               <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
               <RuntimeFrameworkVersion>$(RuntimeVersion31)</RuntimeFrameworkVersion>
               <FrameworkVersion>$(AspNetCoreVersion31)</FrameworkVersion>
             </Option>
-            <Option Condition="'$(DailyTest)' != 'true'">
+            <Option Condition="'$(TestLatestOnly)' != 'true'">
               <BuildProjectFramework>netcoreapp3.0</BuildProjectFramework>
               <RuntimeFrameworkVersion>$(RuntimeVersion30)</RuntimeFrameworkVersion>
               <FrameworkVersion>$(AspNetCoreVersion30)</FrameworkVersion>
     <!--
         Desktop Runtime (debuggees cli built)
      -->
-    <Option Condition="$(TargetArchitecture) != arm64">
+    <Option Condition="'$(TestDesktop)' == 'true'">
       <Options>
         <Option>
         </Option>