From f7e8255ece9561cfb0c732a676230a6ace5301b7 Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Tue, 23 Oct 2018 12:53:31 -0700 Subject: [PATCH] Add forwards compat tests (#1547) --- .appveyor.yml | 2 +- .vsts-pipelines/builds/ci-internal-21.yml | 2 +- .vsts-pipelines/templates/build-steps.yml | 26 +++++++++-- IISIntegration.NoV1.sln | 28 ++++++++++++ IISIntegration.sln | 42 +++++++++++++++++ build/buildpipeline/windows.groovy | 2 +- build/dependencies.props | 7 +-- build/repo.props | 4 ++ .../Inprocess/ErrorPagesTests.cs | 1 + .../Inprocess/StartupTests.cs | 9 +++- .../RequiresNewHandler.cs} | 7 ++- .../RequiresNewShim.cs | 3 +- .../Utilities/Helpers.cs | 5 ++- .../BackwardsCompatibilityTests.cs | 26 ++++------- .../DeployerSelector.cs | 1 + ...kwardsCompatibility.FunctionalTests.csproj | 10 ----- .../DeployerSelector.cs | 14 ++++++ .../ForwardsCompatibilityTests.cs | 38 ++++++++++++++++ ...rwardsCompatibility.FunctionalTests.csproj | 45 +++++++++++++++++++ test/IIS.FunctionalTests/DeployerSelector.cs | 1 + .../IIS.FunctionalTests.csproj | 10 ----- .../DeployerSelector.cs | 1 + .../IISExpress.FunctionalTests.csproj | 10 ----- .../RequiresNewShim.cs | 17 ------- .../InProcessWebSite.csproj | 32 +++++++++++++ .../Properties/launchSettings.json | 42 +++++++++++++++++ 26 files changed, 303 insertions(+), 82 deletions(-) rename test/{IIS.FunctionalTests/RequiresNewShim.cs => Common.FunctionalTests/RequiresNewHandler.cs} (57%) rename test/{IIS.BackwardsCompatibility.FunctionalTests => Common.FunctionalTests}/RequiresNewShim.cs (87%) create mode 100644 test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs create mode 100644 test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs create mode 100644 test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj delete mode 100644 test/IISExpress.FunctionalTests/RequiresNewShim.cs create mode 100644 test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj create mode 100644 test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json diff --git a/.appveyor.yml b/.appveyor.yml index f67ca4c0d5..bb08c43646 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -16,7 +16,7 @@ install: - git submodule update --init --recursive - net start w3svc build_script: - - ps: .\run.ps1 default-build /p:SkipIISBackwardsCompatibilityTests=true + - ps: .\run.ps1 default-build /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true clone_depth: 1 environment: global: diff --git a/.vsts-pipelines/builds/ci-internal-21.yml b/.vsts-pipelines/builds/ci-internal-21.yml index 1506ee3149..afb252eae8 100644 --- a/.vsts-pipelines/builds/ci-internal-21.yml +++ b/.vsts-pipelines/builds/ci-internal-21.yml @@ -13,7 +13,7 @@ phases: parameters: agentOs: Windows codeSign: false - buildArgs: /p:BuildServerIIS21=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true + buildArgs: /p:BuildServerIIS21=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true beforeBuild: - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 SetupDumps" displayName: Prepare repo diff --git a/.vsts-pipelines/templates/build-steps.yml b/.vsts-pipelines/templates/build-steps.yml index a1cd198773..4db5633ddc 100644 --- a/.vsts-pipelines/templates/build-steps.yml +++ b/.vsts-pipelines/templates/build-steps.yml @@ -3,7 +3,7 @@ phases: parameters: agentOs: Windows phaseName: IIS_Express_Tests - buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true + buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISTests=true /p:SkipIISForwardsCompatibilityTests=true beforeBuild: - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup" displayName: Prepare repo @@ -23,7 +23,7 @@ phases: parameters: agentOs: Windows phaseName: IIS_Tests - buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISExpressTests=true + buildArgs: /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true beforeBuild: - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup" displayName: Prepare repo @@ -43,7 +43,27 @@ phases: parameters: agentOs: Windows phaseName: IIS_BackCompat_Tests - buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true + buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISForwardsCompatibilityTests=true + beforeBuild: + - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup" + displayName: Prepare repo + afterBuild: + - powershell: "& ./tools/SetupTestEnvironment.ps1 Shutdown" + displayName: Stop AppVerifier + condition: always() + - task: PublishBuildArtifacts@1 + displayName: Upload logs + condition: eq(variables['system.pullrequest.isfork'], false) + inputs: + artifactName: logs + artifactType: Container + pathtoPublish: artifacts/logs + +- template: .vsts-pipelines/templates/phases/default-build.yml@buildtools + parameters: + agentOs: Windows + phaseName: IIS_ForwardsCompat_Tests + buildArgs: /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISBackwardsCompatibilityTests=true beforeBuild: - powershell: "& ./tools/UpdateIISExpressCertificate.ps1; & ./tools/update_schema.ps1; & ./tools/SetupTestEnvironment.ps1 Setup" displayName: Prepare repo diff --git a/IISIntegration.NoV1.sln b/IISIntegration.NoV1.sln index 2ee59d14bf..f7eb135f73 100644 --- a/IISIntegration.NoV1.sln +++ b/IISIntegration.NoV1.sln @@ -115,6 +115,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{582B07BC-73F4-4689-8557-B039298BD82C}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.ForwardsCompatibility.FunctionalTests", "test\IIS.ForwardsCompatibility.FunctionalTests\IIS.ForwardsCompatibility.FunctionalTests.csproj", "{D1EA5D99-28FD-4197-81DE-17098846B38B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InProcessForwardsCompatWebSite", "test\WebSites\InProcessForwardsCompatWebSite\InProcessWebSite.csproj", "{BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -397,6 +401,28 @@ Global {582B07BC-73F4-4689-8557-B039298BD82C}.Release|x64.Build.0 = Release|Any CPU {582B07BC-73F4-4689-8557-B039298BD82C}.Release|x86.ActiveCfg = Release|Any CPU {582B07BC-73F4-4689-8557-B039298BD82C}.Release|x86.Build.0 = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x64.Build.0 = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Debug|x86.Build.0 = Debug|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|Any CPU.Build.0 = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x64.ActiveCfg = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x64.Build.0 = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x86.ActiveCfg = Release|Any CPU + {D1EA5D99-28FD-4197-81DE-17098846B38B}.Release|x86.Build.0 = Release|Any CPU + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|Any CPU.ActiveCfg = Debug|x86 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x64.ActiveCfg = Debug|x64 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x64.Build.0 = Debug|x64 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x86.ActiveCfg = Debug|x86 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Debug|x86.Build.0 = Debug|x86 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|Any CPU.ActiveCfg = Release|x86 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x64.ActiveCfg = Release|x64 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x64.Build.0 = Release|x64 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x86.ActiveCfg = Release|x86 + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -428,6 +454,8 @@ Global {C0310D84-BC2F-4B2E-870E-D35044DB3E3E} = {EF30B533-D715-421A-92B7-92FEF460AC9C} {D17B7B35-5361-4A50-B499-E03E5C3CC095} = {EF30B533-D715-421A-92B7-92FEF460AC9C} {582B07BC-73F4-4689-8557-B039298BD82C} = {EF30B533-D715-421A-92B7-92FEF460AC9C} + {D1EA5D99-28FD-4197-81DE-17098846B38B} = {EF30B533-D715-421A-92B7-92FEF460AC9C} + {BBBC85B2-5D7A-4D09-90B1-8DBCC9059493} = {744ACDC6-F6A0-4FF9-9421-F25C5F2DC520} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5} diff --git a/IISIntegration.sln b/IISIntegration.sln index 6e8b394d5a..440001a8ac 100644 --- a/IISIntegration.sln +++ b/IISIntegration.sln @@ -123,6 +123,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{28055B05-25D4-4F17-9F36-A1D09FDDA607}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.ForwardsCompatibility.FunctionalTests", "test\IIS.ForwardsCompatibility.FunctionalTests\IIS.ForwardsCompatibility.FunctionalTests.csproj", "{F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InProcessForwardsCompatWebSite", "test\WebSites\InProcessForwardsCompatWebSite\InProcessWebSite.csproj", "{980DAB60-6471-46EC-82EE-B457D91C3789}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -659,6 +663,42 @@ Global {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x64.Build.0 = Release|Any CPU {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x86.ActiveCfg = Release|Any CPU {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x86.Build.0 = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|x64.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Debug|x86.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|Any CPU.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|Any CPU.Build.0 = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|x64.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeDebug|x86.ActiveCfg = Debug|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|Any CPU.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|Any CPU.Build.0 = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|x64.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.NativeRelease|x86.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|Any CPU.Build.0 = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x64.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x64.Build.0 = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x86.ActiveCfg = Release|Any CPU + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F}.Release|x86.Build.0 = Release|Any CPU + {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|Any CPU.ActiveCfg = Debug|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x64.ActiveCfg = Debug|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x64.Build.0 = Debug|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x86.ActiveCfg = Debug|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Debug|x86.Build.0 = Debug|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|Any CPU.ActiveCfg = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|Any CPU.Build.0 = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|x64.ActiveCfg = Debug|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeDebug|x86.ActiveCfg = Debug|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|Any CPU.ActiveCfg = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|Any CPU.Build.0 = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|x64.ActiveCfg = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.NativeRelease|x86.ActiveCfg = Release|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|Any CPU.ActiveCfg = Release|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x64.ActiveCfg = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x64.Build.0 = Release|x64 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x86.ActiveCfg = Release|x86 + {980DAB60-6471-46EC-82EE-B457D91C3789}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -693,6 +733,8 @@ Global {A091777D-66B3-42E1-B95C-85322DE40706} = {EF30B533-D715-421A-92B7-92FEF460AC9C} {A641A208-2974-4E48-BCFF-54E3AAFA4FB9} = {EF30B533-D715-421A-92B7-92FEF460AC9C} {28055B05-25D4-4F17-9F36-A1D09FDDA607} = {EF30B533-D715-421A-92B7-92FEF460AC9C} + {F6FAA65F-AA29-4DDA-AA89-C16AF4A69F9F} = {EF30B533-D715-421A-92B7-92FEF460AC9C} + {980DAB60-6471-46EC-82EE-B457D91C3789} = {744ACDC6-F6A0-4FF9-9421-F25C5F2DC520} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5} diff --git a/build/buildpipeline/windows.groovy b/build/buildpipeline/windows.groovy index cc42e9ab4f..e3efa6193f 100644 --- a/build/buildpipeline/windows.groovy +++ b/build/buildpipeline/windows.groovy @@ -10,6 +10,6 @@ simpleNode('Windows.10.Amd64.EnterpriseRS3.ASPNET.Open') { stage ('Build') { def logFolder = getLogFolder() def environment = "\$env:ASPNETCORE_TEST_LOG_DIR='${WORKSPACE}\\${logFolder}'" - bat "powershell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"${environment};&.\\tools\\SetupTestEnvironment.ps1 SetupDumps;&.\\tools\\update_schema.ps1;&.\\tools\\UpdateIISExpressCertificate.ps1;&.\\run.cmd -CI default-build /p:SkipIISBackwardsCompatibilityTests=true /p:Configuration=${params.Configuration}\";" + bat "powershell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"${environment};&.\\tools\\SetupTestEnvironment.ps1 SetupDumps;&.\\tools\\update_schema.ps1;&.\\tools\\UpdateIISExpressCertificate.ps1;&.\\run.cmd -CI default-build /p:SkipIISBackwardsCompatibilityTests=true /p:SkipIISForwardsCompatibilityTests=true /p:Configuration=${params.Configuration}\";" } } diff --git a/build/dependencies.props b/build/dependencies.props index 619725a311..7e9a764869 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -1,4 +1,4 @@ - + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) @@ -56,8 +56,9 @@ - 2.2.0-preview3-35458 - 2.2.0-preview3-35458 + 2.2.0-preview3-35504 + 2.2.0-preview3-35504 + 2.2.0-preview3-35504 2.1.0 diff --git a/build/repo.props b/build/repo.props index 15cb7e1a13..6a94ca900f 100644 --- a/build/repo.props +++ b/build/repo.props @@ -24,6 +24,10 @@ + + + + Internal.AspNetCore.Universe.Lineup diff --git a/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs b/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs index 936ad852ac..bf45949491 100644 --- a/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs +++ b/test/Common.FunctionalTests/Inprocess/ErrorPagesTests.cs @@ -82,6 +82,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests [ConditionalFact] [RequiresIIS(IISCapability.PoolEnvironmentVariables)] + [RequiresNewHandler] public async Task IncludesAdditionalErrorPageTextInProcessStartupFailure_CorrectString() { var deploymentParameters = _fixture.GetBaseDeploymentParameters(publish: true); diff --git a/test/Common.FunctionalTests/Inprocess/StartupTests.cs b/test/Common.FunctionalTests/Inprocess/StartupTests.cs index 5ca1733443..3bcc134cb2 100644 --- a/test/Common.FunctionalTests/Inprocess/StartupTests.cs +++ b/test/Common.FunctionalTests/Inprocess/StartupTests.cs @@ -233,7 +233,14 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests await AssertSiteFailsToStartWithInProcessStaticContent(deploymentResult); - EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindRequestHandler(deploymentResult), Logger); + if (DeployerSelector.IsForwardsCompatibilityTest) + { + EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindNativeDependencies(deploymentResult), Logger); + } + else + { + EventLogHelpers.VerifyEventLogEvent(deploymentResult, EventLogHelpers.InProcessFailedToFindRequestHandler(deploymentResult), Logger); + } } [ConditionalFact] diff --git a/test/IIS.FunctionalTests/RequiresNewShim.cs b/test/Common.FunctionalTests/RequiresNewHandler.cs similarity index 57% rename from test/IIS.FunctionalTests/RequiresNewShim.cs rename to test/Common.FunctionalTests/RequiresNewHandler.cs index 1765ba2d1e..cbe43ec0c7 100644 --- a/test/IIS.FunctionalTests/RequiresNewShim.cs +++ b/test/Common.FunctionalTests/RequiresNewHandler.cs @@ -2,16 +2,15 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Server.IntegrationTesting; using Microsoft.AspNetCore.Testing.xunit; namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] - public sealed class RequiresNewShimAttribute : Attribute, ITestCondition + public sealed class RequiresNewHandlerAttribute : Attribute, ITestCondition { - public bool IsMet => true; + public bool IsMet => !DeployerSelector.IsForwardsCompatibilityTest; - public string SkipReason => "IIS.FunctionalTests always run against new shim."; + public string SkipReason => "Test verifies new behavior in the aspnetcorev2_inprocess.dll that isn't supported in earlier versions."; } } diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs b/test/Common.FunctionalTests/RequiresNewShim.cs similarity index 87% rename from test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs rename to test/Common.FunctionalTests/RequiresNewShim.cs index f14085b05b..b0bc50a83b 100644 --- a/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs +++ b/test/Common.FunctionalTests/RequiresNewShim.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Server.IntegrationTesting; using Microsoft.AspNetCore.Testing.xunit; namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests @@ -10,7 +9,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] public sealed class RequiresNewShimAttribute : Attribute, ITestCondition { - public bool IsMet => false; + public bool IsMet => !DeployerSelector.IsBackwardsCompatiblityTest; public string SkipReason => "Test verifies new behavior in the aspnetcorev2.dll that isn't supported in earlier versions."; } diff --git a/test/Common.FunctionalTests/Utilities/Helpers.cs b/test/Common.FunctionalTests/Utilities/Helpers.cs index 733030dbc8..1e31126eab 100644 --- a/test/Common.FunctionalTests/Utilities/Helpers.cs +++ b/test/Common.FunctionalTests/Utilities/Helpers.cs @@ -28,7 +28,10 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests return Path.Combine(TestPathUtilities.GetSolutionRootDirectory("IISIntegration"),"test", "WebSites", name); } - public static string GetInProcessTestSitesPath() => GetTestWebSitePath("InProcessWebSite"); + public static string GetInProcessTestSitesPath() + { + return DeployerSelector.IsForwardsCompatibilityTest ? GetTestWebSitePath("InProcessForwardsCompatWebSite") : GetTestWebSitePath("InProcessWebSite"); + } public static string GetOutOfProcessTestSitesPath() => GetTestWebSitePath("OutOfProcessWebSite"); diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs index a7243b0272..891c16c061 100644 --- a/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs @@ -1,24 +1,20 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; using System.Diagnostics; -using System.IO; using System.Threading.Tasks; -using Microsoft.AspNetCore.Server.IIS.FunctionalTests.Utilities; -using Microsoft.AspNetCore.Server.IntegrationTesting; using Microsoft.AspNetCore.Testing.xunit; using Xunit; using Xunit.Sdk; namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { - [Collection(PublishedSitesCollection.Name)] - public class BackwardsCompatibilityTests : IISFunctionalTestBase + [Collection(IISTestSiteCollection.Name)] + public class BackwardsCompatibilityTests : FixtureLoggedTest { - private readonly PublishedSitesFixture _fixture; + private readonly IISTestSiteFixture _fixture; - public BackwardsCompatibilityTests(PublishedSitesFixture fixture) + public BackwardsCompatibilityTests(IISTestSiteFixture fixture) : base(fixture) { _fixture = fixture; } @@ -26,24 +22,18 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests [ConditionalFact] public async Task CheckBackwardsCompatibilityIsUsed() { - var iisDeploymentParameters = _fixture.GetBaseDeploymentParameters(publish: true); - iisDeploymentParameters.PreservePublishedApplicationForDebugging = true; - var deploymentResult = await DeployAsync(iisDeploymentParameters); + var response = await _fixture.Client.GetAsync("/HelloWorld"); + var handles = _fixture.DeploymentResult.HostProcess.Modules; - var arch = iisDeploymentParameters.RuntimeArchitecture == RuntimeArchitecture.x64 ? $@"x64\aspnetcorev2.dll" : $@"x86\aspnetcorev2.dll"; - - var fileInfo = FileVersionInfo.GetVersionInfo(Path.Combine(AppContext.BaseDirectory, arch)); - var response = await deploymentResult.HttpClient.GetAsync("/HelloWorld"); - var handles = deploymentResult.HostProcess.Modules; foreach (ProcessModule handle in handles) { if (handle.ModuleName == "aspnetcorev2.dll") { - Assert.Equal("12.2.18283.0", handle.FileVersionInfo.FileVersion); + Assert.Equal("12.2.18289.0", handle.FileVersionInfo.FileVersion); return; } } - throw new XunitException($"Could not find aspnetcorev2.dll loaded in process {deploymentResult.HostProcess.ProcessName}"); + throw new XunitException($"Could not find aspnetcorev2.dll loaded in process {_fixture.DeploymentResult.HostProcess.ProcessName}"); } } } diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs index b6dc197e8a..5c6f3739a4 100644 --- a/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/DeployerSelector.cs @@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { public static ServerType ServerType => ServerType.IIS; public static bool IsBackwardsCompatiblityTest => true; + public static bool IsForwardsCompatibilityTest => false; } } diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj index 58708fa85f..d3e2bbc530 100644 --- a/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj @@ -43,14 +43,4 @@ - - - - - - - PreserveNewest - - - diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs b/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs new file mode 100644 index 0000000000..bd7aabbe0f --- /dev/null +++ b/test/IIS.ForwardsCompatibility.FunctionalTests/DeployerSelector.cs @@ -0,0 +1,14 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.AspNetCore.Server.IntegrationTesting; + +namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests +{ + public static class DeployerSelector + { + public static ServerType ServerType => ServerType.IIS; + public static bool IsBackwardsCompatiblityTest => false; + public static bool IsForwardsCompatibilityTest => true; + } +} diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs b/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs new file mode 100644 index 0000000000..52c7da80ad --- /dev/null +++ b/test/IIS.ForwardsCompatibility.FunctionalTests/ForwardsCompatibilityTests.cs @@ -0,0 +1,38 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Diagnostics; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Testing.xunit; +using Xunit; +using Xunit.Sdk; + +namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests +{ + [Collection(IISTestSiteCollection.Name)] + public class ForwardsCompatibilityTests : FixtureLoggedTest + { + private readonly IISTestSiteFixture _fixture; + + public ForwardsCompatibilityTests(IISTestSiteFixture fixture) : base(fixture) + { + _fixture = fixture; + } + + [ConditionalFact] + public async Task CheckForwardsCompatibilityIsUsed() + { + var response = await _fixture.Client.GetAsync("/HelloWorld"); + var handles = _fixture.DeploymentResult.HostProcess.Modules; + foreach (ProcessModule handle in handles) + { + if (handle.ModuleName == "aspnetcorev2_inprocess.dll") + { + Assert.Equal("12.2.18289.0", handle.FileVersionInfo.FileVersion); + return; + } + } + throw new XunitException($"Could not find aspnetcorev2_inprocess.dll loaded in process {_fixture.DeploymentResult.HostProcess.ProcessName}"); + } + } +} diff --git a/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj b/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj new file mode 100644 index 0000000000..929f6ec6b0 --- /dev/null +++ b/test/IIS.ForwardsCompatibility.FunctionalTests/IIS.ForwardsCompatibility.FunctionalTests.csproj @@ -0,0 +1,45 @@ + + + + netcoreapp2.2 + IISForwardsCompatibility.FunctionalTests + True + + + + + + + + + + False + + + False + + + False + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/IIS.FunctionalTests/DeployerSelector.cs b/test/IIS.FunctionalTests/DeployerSelector.cs index 2359de7226..f2e1be321e 100644 --- a/test/IIS.FunctionalTests/DeployerSelector.cs +++ b/test/IIS.FunctionalTests/DeployerSelector.cs @@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { public static ServerType ServerType => ServerType.IIS; public static bool IsBackwardsCompatiblityTest => false; + public static bool IsForwardsCompatibilityTest => false; } } diff --git a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj index 47c316f65a..62dec62e60 100644 --- a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj +++ b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj @@ -43,14 +43,4 @@ - - - - - - - PreserveNewest - - - diff --git a/test/IISExpress.FunctionalTests/DeployerSelector.cs b/test/IISExpress.FunctionalTests/DeployerSelector.cs index c21900e0fb..ba6a1ec6e2 100644 --- a/test/IISExpress.FunctionalTests/DeployerSelector.cs +++ b/test/IISExpress.FunctionalTests/DeployerSelector.cs @@ -9,5 +9,6 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { public static ServerType ServerType => ServerType.IISExpress; public static bool IsBackwardsCompatiblityTest => false; + public static bool IsForwardsCompatibilityTest => false; } } diff --git a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj index ff8fd55afb..988c2d5943 100644 --- a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj +++ b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj @@ -35,14 +35,4 @@ - - - - - - - PreserveNewest - - - diff --git a/test/IISExpress.FunctionalTests/RequiresNewShim.cs b/test/IISExpress.FunctionalTests/RequiresNewShim.cs deleted file mode 100644 index a43e9b8da7..0000000000 --- a/test/IISExpress.FunctionalTests/RequiresNewShim.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using Microsoft.AspNetCore.Server.IntegrationTesting; -using Microsoft.AspNetCore.Testing.xunit; - -namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests -{ - [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] - public sealed class RequiresNewShimAttribute : Attribute, ITestCondition - { - public bool IsMet => true; - - public string SkipReason => "IISExpress.FunctionalTests always run against new shim."; - } -} diff --git a/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj b/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj new file mode 100644 index 0000000000..f15a90bfd3 --- /dev/null +++ b/test/WebSites/InProcessForwardsCompatWebSite/InProcessWebSite.csproj @@ -0,0 +1,32 @@ + + + + + + netcoreapp2.2 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json b/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json new file mode 100644 index 0000000000..246b7a0b47 --- /dev/null +++ b/test/WebSites/InProcessForwardsCompatWebSite/Properties/launchSettings.json @@ -0,0 +1,42 @@ +{ + "iisSettings": { + "windowsAuthentication": true, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:5762/", + "sslPort": 0 + } + }, + "profiles": { + "ANCM IIS Express": { + "commandName": "Executable", + "executablePath": "$(IISExpressPath)", + "commandLineArgs": "$(IISExpressArguments)", + "environmentVariables": { + "IIS_SITE_PATH": "$(MSBuildThisFileDirectory)", + "ANCM_PATH": "$(AspNetCoreModuleV1ShimDll)", + "ANCMV2_PATH": "$(AspNetCoreModuleV2ShimDll)", + "ANCM_OUTOFPROCESS_HANDLER": "$(AspNetCoreModuleV2OutOfProcessHandlerDll)", + "LAUNCHER_ARGS": "$(TargetPath)", + "ASPNETCORE_ENVIRONMENT": "Development", + "LAUNCHER_PATH": "$(DotNetPath)", + "ASPNETCORE_MODULE_DEBUG": "console" + } + }, + "ANCM IIS": { + "commandName": "Executable", + "executablePath": "$(IISPath)", + "commandLineArgs": "$(IISArguments)", + "environmentVariables": { + "IIS_SITE_PATH": "$(MSBuildThisFileDirectory)", + "ANCM_PATH": "$(AspNetCoreModuleV1ShimDll)", + "ANCMV2_PATH": "$(AspNetCoreModuleV2ShimDll)", + "ASPNETCORE_MODULE_OUTOFPROCESS_HANDLER": "$(AspNetCoreModuleV2OutOfProcessHandlerDll)", + "LAUNCHER_ARGS": "$(TargetPath)", + "ASPNETCORE_ENVIRONMENT": "Development", + "LAUNCHER_PATH": "$(DotNetPath)", + "ASPNETCORE_MODULE_DEBUG": "console" + } + } + } +}