From b92c82e97f19f77c95752340066a64a337551e6d Mon Sep 17 00:00:00 2001 From: Justin Kotalik <jukotali@microsoft.com> Date: Thu, 18 Oct 2018 13:58:56 -0700 Subject: [PATCH] Add static shim test (#1505) --- .appveyor.yml | 2 +- .vsts-pipelines/templates/build-steps.yml | 1 + IISIntegration.NoV1.sln | 17 +++++- IISIntegration.sln | 23 ++++++++ build/build.msbuild | 34 ----------- build/buildpipeline/pipeline.groovy | 2 + build/buildpipeline/windows-staticshim.groovy | 15 +++++ build/buildpipeline/windows.groovy | 2 +- build/dependencies.props | 5 +- build/functional-test-assets.targets | 10 ++++ build/repo.props | 12 ++++ build/testsite.props | 1 - ...tCore.Server.IntegrationTesting.IIS.csproj | 29 +++------- .../Inprocess/StartupTests.cs | 0 .../OutOfProcess/GlobalVersionTests.cs | 1 + .../BackwardsCompatibilityTests.cs | 49 ++++++++++++++++ ...kwardsCompatibility.FunctionalTests.csproj | 56 +++++++++++++++++++ .../RequiresNewShim.cs | 17 ++++++ .../IIS.FunctionalTests.csproj | 3 + test/IIS.FunctionalTests/RequiresNewShim.cs | 17 ++++++ .../DeployerSelector.cs | 0 .../Inprocess/StdOutRedirectionTests.cs | 0 .../MofFileTests.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../RequiresIISAttribute.cs | 2 +- .../ServicesTests.cs | 0 test/IIS.Tests/IIS.Tests.csproj | 5 +- .../IISExpress.FunctionalTests.csproj | 2 + .../RequiresNewShim.cs | 17 ++++++ 29 files changed, 258 insertions(+), 64 deletions(-) delete mode 100644 build/build.msbuild create mode 100644 build/buildpipeline/windows-staticshim.groovy create mode 100644 build/functional-test-assets.targets rename test/{IIS.FunctionalTests => Common.FunctionalTests}/Inprocess/StartupTests.cs (100%) create mode 100644 test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs create mode 100644 test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj create mode 100644 test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs create mode 100644 test/IIS.FunctionalTests/RequiresNewShim.cs rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/DeployerSelector.cs (100%) rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/Inprocess/StdOutRedirectionTests.cs (100%) rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/MofFileTests.cs (100%) rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/Properties/AssemblyInfo.cs (100%) rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/RequiresIISAttribute.cs (99%) rename test/{IIS.FunctionalTests => IIS.Shared.FunctionalTests}/ServicesTests.cs (100%) create mode 100644 test/IISExpress.FunctionalTests/RequiresNewShim.cs diff --git a/.appveyor.yml b/.appveyor.yml index 2bc93c45a89..f67ca4c0d57 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 + - ps: .\run.ps1 default-build /p:SkipIISBackwardsCompatibilityTests=true clone_depth: 1 environment: global: diff --git a/.vsts-pipelines/templates/build-steps.yml b/.vsts-pipelines/templates/build-steps.yml index 36219f533b6..780a42a356e 100644 --- a/.vsts-pipelines/templates/build-steps.yml +++ b/.vsts-pipelines/templates/build-steps.yml @@ -2,6 +2,7 @@ phases: - template: .vsts-pipelines/templates/phases/default-build.yml@buildtools parameters: agentOs: Windows + buildArgs: /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 cbe801fc320..2ee59d14bfa 100644 --- a/IISIntegration.NoV1.sln +++ b/IISIntegration.NoV1.sln @@ -36,10 +36,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7E80C58E ProjectSection(SolutionItems) = preProject build\applicationhost.config = build\applicationhost.config build\applicationhost.iis.config = build\applicationhost.iis.config - build\build.msbuild = build\build.msbuild build\Build.Settings = build\Build.Settings build\Config.Definitions.Props = build\Config.Definitions.Props build\dependencies.props = build\dependencies.props + build\functional-test-assets.targets = build\functional-test-assets.targets build\Key.snk = build\Key.snk build\launchSettings.json = build\launchSettings.json build\native.targets = build\native.targets @@ -113,6 +113,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.Tests", "test\IIS.Tests EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common.Tests\Common.Tests.csproj", "{D17B7B35-5361-4A50-B499-E03E5C3CC095}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{582B07BC-73F4-4689-8557-B039298BD82C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -383,6 +385,18 @@ Global {D17B7B35-5361-4A50-B499-E03E5C3CC095}.Release|x64.Build.0 = Release|Any CPU {D17B7B35-5361-4A50-B499-E03E5C3CC095}.Release|x86.ActiveCfg = Release|Any CPU {D17B7B35-5361-4A50-B499-E03E5C3CC095}.Release|x86.Build.0 = Release|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|x64.ActiveCfg = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|x64.Build.0 = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|x86.ActiveCfg = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Debug|x86.Build.0 = Debug|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Release|Any CPU.Build.0 = Release|Any CPU + {582B07BC-73F4-4689-8557-B039298BD82C}.Release|x64.ActiveCfg = Release|Any CPU + {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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -413,6 +427,7 @@ Global {34135ED7-313D-4E68-860C-D6B51AA28523} = {04B1EDB6-E967-4D25-89B9-E6F8304038CD} {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} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5} diff --git a/IISIntegration.sln b/IISIntegration.sln index 34a5050f7ed..6e8b394d5a9 100644 --- a/IISIntegration.sln +++ b/IISIntegration.sln @@ -121,6 +121,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.Tests", "test\IIS.Tests EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Tests", "test\Common.Tests\Common.Tests.csproj", "{A641A208-2974-4E48-BCFF-54E3AAFA4FB9}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IIS.BackwardsCompatibility.FunctionalTests", "test\IIS.BackwardsCompatibility.FunctionalTests\IIS.BackwardsCompatibility.FunctionalTests.csproj", "{28055B05-25D4-4F17-9F36-A1D09FDDA607}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -637,6 +639,26 @@ Global {A641A208-2974-4E48-BCFF-54E3AAFA4FB9}.Release|x64.Build.0 = Release|Any CPU {A641A208-2974-4E48-BCFF-54E3AAFA4FB9}.Release|x86.ActiveCfg = Release|Any CPU {A641A208-2974-4E48-BCFF-54E3AAFA4FB9}.Release|x86.Build.0 = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|x64.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|x64.Build.0 = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|x86.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Debug|x86.Build.0 = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeDebug|Any CPU.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeDebug|Any CPU.Build.0 = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeDebug|x64.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeDebug|x86.ActiveCfg = Debug|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeRelease|Any CPU.ActiveCfg = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeRelease|Any CPU.Build.0 = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeRelease|x64.ActiveCfg = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.NativeRelease|x86.ActiveCfg = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|Any CPU.Build.0 = Release|Any CPU + {28055B05-25D4-4F17-9F36-A1D09FDDA607}.Release|x64.ActiveCfg = Release|Any CPU + {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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -670,6 +692,7 @@ Global {CE4FB142-91FB-4B34-BC96-A31120EF4009} = {04B1EDB6-E967-4D25-89B9-E6F8304038CD} {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} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {DB4F868D-E1AE-4FD7-9333-69FA15B268C5} diff --git a/build/build.msbuild b/build/build.msbuild deleted file mode 100644 index c97f1a53b5c..00000000000 --- a/build/build.msbuild +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="12.0" DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildThisFileDirectory)\Build.Settings" /> - - <ItemGroup> - <Projects Include="$(SolutionDir)\src\AspNetCoreModuleV1\AspNetCore\AspNetCore.vcxproj" /> - <Projects Include="$(SolutionDir)\src\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" /> - <Projects Include="$(SolutionDir)\src\AspNetCoreModuleV2\InProcessRequestHandler\InProcessRequestHandler.vcxproj" /> - <Projects Include="$(SolutionDir)\src\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj" /> - <Projects Include="$(SolutionDir)\test\CommonLibTests\CommonLibTests.vcxproj"> - </ItemGroup> - - <Target Name="Build"> - <MSBuild Targets="$(BuildTargets)" - Projects="@(Projects)" - Properties="Configuration=$(Configuration);Platform=$(Platform);PlatformToolset=$(PlatformToolset)" /> - </Target> - - <Target Name="Clean"> - <MSBuild Targets="Clean" - Projects="@(Projects)" /> - </Target> - - <Target Name="Rebuild"> - <MSBuild Targets="Clean;Build" - Projects="$(MSBuildProjectFile)" - Properties="BuildTargets=Rebuild;Configuration=$(Configuration);Platform=$(Platform);PlatformToolset=$(PlatformToolset)"/> - </Target> - - <Target Name="Test" DependsOnTargets="Build"> - <!-- once we have test project ready, we should add executions to run the test post build--> - </Target> - <Import Project="Config.Definitions.Props" /> - </Project> diff --git a/build/buildpipeline/pipeline.groovy b/build/buildpipeline/pipeline.groovy index 7ccbca0b2ad..7d4b4aef159 100644 --- a/build/buildpipeline/pipeline.groovy +++ b/build/buildpipeline/pipeline.groovy @@ -1,6 +1,7 @@ import org.dotnet.ci.pipelines.Pipeline def windowsPipeline = Pipeline.createPipeline(this, 'build/buildpipeline/windows.groovy') +def windowBackwardsCompatibilityPipeline = Pipeline.createPipeline(this, 'build/buildpipeline/windows-BackwardsCompatibility.groovy') def configurations = [ 'Debug', @@ -15,4 +16,5 @@ configurations.each { configuration -> windowsPipeline.triggerPipelineOnEveryGithubPR("Windows ${configuration} x64 Build", params) windowsPipeline.triggerPipelineOnGithubPush(params) + windowBackwardsCompatibilityPipeline.triggerPipelineOnEveryGithubPR("Windows ${configuration} x64 Build", params) } diff --git a/build/buildpipeline/windows-staticshim.groovy b/build/buildpipeline/windows-staticshim.groovy new file mode 100644 index 00000000000..b6b81e2f0b7 --- /dev/null +++ b/build/buildpipeline/windows-staticshim.groovy @@ -0,0 +1,15 @@ +@Library('dotnet-ci') _ + +// 'node' indicates to Jenkins that the enclosed block runs on a node that matches +// the label 'windows-with-vs' +simpleNode('Windows.10.Amd64.EnterpriseRS3.ASPNET.Open') { + stage ('Checking out source') { + checkout scm + bat 'git submodule update --init --recursive' + } + 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:SkipIISTests=true /p:SkipIISExpressTests=true /p:Configuration=${params.Configuration}\";" + } +} diff --git a/build/buildpipeline/windows.groovy b/build/buildpipeline/windows.groovy index 35bb4737ae1..cc42e9ab4fe 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: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:Configuration=${params.Configuration}\";" } } diff --git a/build/dependencies.props b/build/dependencies.props index 5c5ee5437f7..5f13736d128 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -54,5 +54,8 @@ <XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion> </PropertyGroup> <Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " /> - <PropertyGroup Label="Package Versions: Pinned" /> + <PropertyGroup Label="Package Versions: Pinned" > + <MicrosoftAspNetCoreAspNetCoreModulePackageVersion>2.2.0-preview3-35458</MicrosoftAspNetCoreAspNetCoreModulePackageVersion> + <MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion>2.2.0-preview3-35458</MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion> + </PropertyGroup> </Project> diff --git a/build/functional-test-assets.targets b/build/functional-test-assets.targets new file mode 100644 index 00000000000..81fb82b4a3d --- /dev/null +++ b/build/functional-test-assets.targets @@ -0,0 +1,10 @@ +<Project> + <Import Project="assets.props"/> + <Target Name="AddRunNativeComponents" BeforeTargets="AssignTargetPaths" Condition="$(PackNativeAssets) == 'true'"> + <ItemGroup> + <None Include="%(RunShimComponents.DllLocation)" CopyToOutputDirectory="PreserveNewest" Link="%(RunShimComponents.Platform)\%(RunShimComponents.PackageSubPath)%(RunShimComponents.NativeAsset).dll" /> + + <None Include="%(RunShimComponents.PdbLocation)" CopyToOutputDirectory="PreserveNewest" Link="%(RunShimComponents.Platform)\%(RunShimComponents.PackageSubPath)%(RunShimComponents.NativeAsset).pdb" /> + </ItemGroup> + </Target> +</Project> diff --git a/build/repo.props b/build/repo.props index 77073056a2b..fd4d80cb7ac 100644 --- a/build/repo.props +++ b/build/repo.props @@ -13,6 +13,18 @@ <ExcludeSolutions Include="$(RepositoryRoot)IISIntegration.NoV1.sln" /> </ItemGroup> + <ItemGroup Condition="'$(SkipIISTests)' == 'true'" > + <ExcludeFromTest Include="$(RepositoryRoot)test\IIS.FunctionalTests\*.csproj" /> + </ItemGroup> + + <ItemGroup Condition="'$(SkipIISExpressTests)' == 'true'" > + <ExcludeFromTest Include="$(RepositoryRoot)test\IISExpress.FunctionalTests\*.csproj" /> + </ItemGroup> + + <ItemGroup Condition="'$(SkipIISBackwardsCompatibilityTests)' == 'true'" > + <ExcludeFromTest Include="$(RepositoryRoot)test\IIS.BackwardsCompatibility.FunctionalTests\*.csproj" /> + </ItemGroup> + <PropertyGroup> <!-- These properties are use by the automation that updates dependencies.props --> <LineupPackageId>Internal.AspNetCore.Universe.Lineup</LineupPackageId> diff --git a/build/testsite.props b/build/testsite.props index 1ef6bf81cc9..74f205b4cf7 100644 --- a/build/testsite.props +++ b/build/testsite.props @@ -23,7 +23,6 @@ <NativeFolder>x64</NativeFolder> </PropertyGroup> - <PropertyGroup> <!-- For standalone publish, all dlls are flattened to the same folder. Set the base path to the request handler diff --git a/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj b/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj index f0332ef10ba..bdfe8abfa9c 100644 --- a/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj +++ b/src/Microsoft.AspNetCore.Server.IntegrationTesting.IIS/Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> @@ -24,39 +24,24 @@ </ItemGroup> <ItemGroup Condition="'$(VCTargetsPath)' != ''"> - <ProjectReference Include="..\AspNetCoreModuleV1\AspNetCore\AspNetCore.vcxproj" > + <ProjectReference Include="..\AspNetCoreModuleV1\AspNetCore\AspNetCore.vcxproj"> <ReferenceOutputAssembly>False</ReferenceOutputAssembly> </ProjectReference> - <ProjectReference Include="..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj" > + <ProjectReference Include="..\AspNetCoreModuleV2\AspNetCore\AspNetCore.vcxproj"> <ReferenceOutputAssembly>False</ReferenceOutputAssembly> </ProjectReference> - <ProjectReference Include="..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj " > + <ProjectReference Include="..\AspNetCoreModuleV2\OutOfProcessRequestHandler\OutOfProcessRequestHandler.vcxproj "> <ReferenceOutputAssembly>False</ReferenceOutputAssembly> </ProjectReference> </ItemGroup> <Target Name="AddPackNativeComponents" BeforeTargets="_GetPackageFiles;GetSignedPackageFiles" Condition="$(PackNativeAssets) == 'true'"> <ItemGroup> - <Content Include="%(ShimComponents.DllLocation)" - PackageCopyToOutput="true" - PackagePath="contentFiles/any/any/%(ShimComponents.Platform)/%(ShimComponents.PackageSubPath)"/> + <Content Include="%(ShimComponents.DllLocation)" PackageCopyToOutput="true" PackagePath="contentFiles/any/any/%(ShimComponents.Platform)/%(ShimComponents.PackageSubPath)" /> - <SignedPackageFile Include="%(ShimComponents.DllLocation)" - PackagePath="contentFiles/any/any/%(ShimComponents.Platform)/%(ShimComponents.PackageSubPath)%(ShimComponents.NativeAsset).dll" - Certificate="$(AssemblySigningCertName)" /> + <SignedPackageFile Include="%(ShimComponents.DllLocation)" PackagePath="contentFiles/any/any/%(ShimComponents.Platform)/%(ShimComponents.PackageSubPath)%(ShimComponents.NativeAsset).dll" Certificate="$(AssemblySigningCertName)" /> </ItemGroup> </Target> - - <Target Name="AddRunNativeComponents" BeforeTargets="AssignTargetPaths" Condition="$(PackNativeAssets) == 'true'"> - <ItemGroup> - <None Include="%(RunShimComponents.DllLocation)" - CopyToOutputDirectory="PreserveNewest" - Link="%(RunShimComponents.Platform)\%(RunShimComponents.PackageSubPath)%(RunShimComponents.NativeAsset).dll" /> - - <None Include="%(RunShimComponents.PdbLocation)" - CopyToOutputDirectory="PreserveNewest" - Link="%(RunShimComponents.Platform)\%(RunShimComponents.PackageSubPath)%(RunShimComponents.NativeAsset).pdb" /> - </ItemGroup> - </Target> + </Project> diff --git a/test/IIS.FunctionalTests/Inprocess/StartupTests.cs b/test/Common.FunctionalTests/Inprocess/StartupTests.cs similarity index 100% rename from test/IIS.FunctionalTests/Inprocess/StartupTests.cs rename to test/Common.FunctionalTests/Inprocess/StartupTests.cs diff --git a/test/Common.FunctionalTests/OutOfProcess/GlobalVersionTests.cs b/test/Common.FunctionalTests/OutOfProcess/GlobalVersionTests.cs index cb76b503c5e..f9e6836b6fc 100644 --- a/test/Common.FunctionalTests/OutOfProcess/GlobalVersionTests.cs +++ b/test/Common.FunctionalTests/OutOfProcess/GlobalVersionTests.cs @@ -45,6 +45,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests [ConditionalFact] [RequiresIIS(IISCapability.PoolEnvironmentVariables)] + [RequiresNewShim] public async Task GlobalVersion_EnvironmentVariableWorks() { var temporaryFile = Path.GetTempFileName(); diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs new file mode 100644 index 00000000000..a7243b02727 --- /dev/null +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/BackwardsCompatibilityTests.cs @@ -0,0 +1,49 @@ +// 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 + { + private readonly PublishedSitesFixture _fixture; + + public BackwardsCompatibilityTests(PublishedSitesFixture fixture) + { + _fixture = fixture; + } + + [ConditionalFact] + public async Task CheckBackwardsCompatibilityIsUsed() + { + var iisDeploymentParameters = _fixture.GetBaseDeploymentParameters(publish: true); + iisDeploymentParameters.PreservePublishedApplicationForDebugging = true; + var deploymentResult = await DeployAsync(iisDeploymentParameters); + + 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); + return; + } + } + throw new XunitException($"Could not find aspnetcorev2.dll loaded in process {deploymentResult.HostProcess.ProcessName}"); + } + } +} diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj new file mode 100644 index 00000000000..58708fa85f6 --- /dev/null +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/IIS.BackwardsCompatibility.FunctionalTests.csproj @@ -0,0 +1,56 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFrameworks>netcoreapp2.2</TargetFrameworks> + <TestGroupName>IISBackwardsCompatibility.FunctionalTests</TestGroupName> + <DisableFastUpToDateCheck>True</DisableFastUpToDateCheck> + </PropertyGroup> + + <ItemGroup> + <Content Include="..\Common.FunctionalTests\AppHostConfig\*.config" CopyToOutputDirectory="PreserveNewest" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\src\Microsoft.AspNetCore.Server.IntegrationTesting.IIS\Microsoft.AspNetCore.Server.IntegrationTesting.IIS.csproj" /> + <ProjectReference Include="..\Common.Tests\Common.Tests.csproj" /> + <ProjectReference Include="..\WebSites\InProcessWebSite\InProcessWebSite.csproj"> + <ReferenceOutputAssembly>False</ReferenceOutputAssembly> + </ProjectReference> + <ProjectReference Include="..\WebSites\OutOfProcessWebSite\OutOfProcessWebSite.csproj"> + <ReferenceOutputAssembly>False</ReferenceOutputAssembly> + </ProjectReference> + <ProjectReference Include="..\WebSites\StressTestWebSite\StressTestWebSite.csproj"> + <ReferenceOutputAssembly>False</ReferenceOutputAssembly> + </ProjectReference> + </ItemGroup> + + <ItemGroup> + <Compile Include="..\Common.FunctionalTests\**\*.cs" /> + <Compile Include="..\IIS.Shared.FunctionalTests\**\*.cs" /> + </ItemGroup> + + <ItemGroup> + <PackageReference Include="Microsoft.AspNetCore.AspNetCoreModule" Version="$(MicrosoftAspNetCoreAspNetCoreModulePackageVersion)" /> + <PackageReference Include="Microsoft.AspNetCore.AspNetCoreModuleV2" Version="$(MicrosoftAspNetCoreAspNetCoreModuleV2PackageVersion)" /> + <PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" /> + <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="$(MicrosoftAspNetCoreHostingPackageVersion)" /> + <PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingPackageVersion)" /> + <PackageReference Include="Microsoft.Extensions.Logging.Testing" Version="$(MicrosoftExtensionsLoggingTestingPackageVersion)" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" /> + <PackageReference Include="System.Diagnostics.EventLog" Version="$(SystemDiagnosticsEventLogPackageVersion)" /> + <PackageReference Include="System.Net.WebSockets.WebSocketProtocol" Version="$(SystemNetWebSocketsWebSocketProtocolPackageVersion)" /> + <PackageReference Include="xunit" Version="$(XunitPackageVersion)" /> + <PackageReference Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualStudioPackageVersion)" /> + </ItemGroup> + + <ItemGroup> + <None Remove="AppHostConfig\HostableWebCore.config" /> + </ItemGroup> + + <ItemGroup> + <Content Update="AppHostConfig\HostableWebCore.config"> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </Content> + </ItemGroup> + +</Project> diff --git a/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs b/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs new file mode 100644 index 00000000000..f14085b05bf --- /dev/null +++ b/test/IIS.BackwardsCompatibility.FunctionalTests/RequiresNewShim.cs @@ -0,0 +1,17 @@ +// 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 => false; + + public string SkipReason => "Test verifies new behavior in the aspnetcorev2.dll that isn't supported in earlier versions."; + } +} diff --git a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj index 0114f027ca2..47c316f65a9 100644 --- a/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj +++ b/test/IIS.FunctionalTests/IIS.FunctionalTests.csproj @@ -26,8 +26,11 @@ <ItemGroup> <Compile Include="..\Common.FunctionalTests\**\*.cs" /> + <Compile Include="..\IIS.Shared.FunctionalTests\**\*.cs" /> </ItemGroup> + <Import Project="..\..\build\functional-test-assets.targets" /> + <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="$(MicrosoftAspNetCoreHostingPackageVersion)" /> diff --git a/test/IIS.FunctionalTests/RequiresNewShim.cs b/test/IIS.FunctionalTests/RequiresNewShim.cs new file mode 100644 index 00000000000..1765ba2d1ee --- /dev/null +++ b/test/IIS.FunctionalTests/RequiresNewShim.cs @@ -0,0 +1,17 @@ +// 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 => "IIS.FunctionalTests always run against new shim."; + } +} diff --git a/test/IIS.FunctionalTests/DeployerSelector.cs b/test/IIS.Shared.FunctionalTests/DeployerSelector.cs similarity index 100% rename from test/IIS.FunctionalTests/DeployerSelector.cs rename to test/IIS.Shared.FunctionalTests/DeployerSelector.cs diff --git a/test/IIS.FunctionalTests/Inprocess/StdOutRedirectionTests.cs b/test/IIS.Shared.FunctionalTests/Inprocess/StdOutRedirectionTests.cs similarity index 100% rename from test/IIS.FunctionalTests/Inprocess/StdOutRedirectionTests.cs rename to test/IIS.Shared.FunctionalTests/Inprocess/StdOutRedirectionTests.cs diff --git a/test/IIS.FunctionalTests/MofFileTests.cs b/test/IIS.Shared.FunctionalTests/MofFileTests.cs similarity index 100% rename from test/IIS.FunctionalTests/MofFileTests.cs rename to test/IIS.Shared.FunctionalTests/MofFileTests.cs diff --git a/test/IIS.FunctionalTests/Properties/AssemblyInfo.cs b/test/IIS.Shared.FunctionalTests/Properties/AssemblyInfo.cs similarity index 100% rename from test/IIS.FunctionalTests/Properties/AssemblyInfo.cs rename to test/IIS.Shared.FunctionalTests/Properties/AssemblyInfo.cs diff --git a/test/IIS.FunctionalTests/RequiresIISAttribute.cs b/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs similarity index 99% rename from test/IIS.FunctionalTests/RequiresIISAttribute.cs rename to test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs index 6c47c4d0906..cfbbf704867 100644 --- a/test/IIS.FunctionalTests/RequiresIISAttribute.cs +++ b/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs @@ -109,7 +109,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests } public RequiresIISAttribute() - : this (IISCapability.None) { } + : this(IISCapability.None) { } public RequiresIISAttribute(IISCapability capabilities) { diff --git a/test/IIS.FunctionalTests/ServicesTests.cs b/test/IIS.Shared.FunctionalTests/ServicesTests.cs similarity index 100% rename from test/IIS.FunctionalTests/ServicesTests.cs rename to test/IIS.Shared.FunctionalTests/ServicesTests.cs diff --git a/test/IIS.Tests/IIS.Tests.csproj b/test/IIS.Tests/IIS.Tests.csproj index 614a2866261..3fdb2a53635 100644 --- a/test/IIS.Tests/IIS.Tests.csproj +++ b/test/IIS.Tests/IIS.Tests.csproj @@ -1,16 +1,17 @@ -<Project Sdk="Microsoft.NET.Sdk"> +<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netcoreapp2.2</TargetFrameworks> </PropertyGroup> - <Import Project="..\..\build\assets.props" /> + <Import Project="..\..\build\functional-test-assets.targets" /> <ItemGroup> <ProjectReference Include="..\..\src\Microsoft.AspNetCore.Server.IIS\Microsoft.AspNetCore.Server.IIS.csproj" /> <ProjectReference Include="..\Common.Tests\Common.Tests.csproj" /> </ItemGroup> + <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="$(MicrosoftAspNetCoreHostingPackageVersion)" /> diff --git a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj index e62095f98fd..ff8fd55afbf 100644 --- a/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj +++ b/test/IISExpress.FunctionalTests/IISExpress.FunctionalTests.csproj @@ -21,6 +21,8 @@ <Compile Include="..\Common.FunctionalTests\**\*.cs" /> </ItemGroup> + <Import Project="..\..\build\functional-test-assets.targets" /> + <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Server.IntegrationTesting" Version="$(MicrosoftAspNetCoreServerIntegrationTestingPackageVersion)" /> <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="$(MicrosoftAspNetCoreHostingPackageVersion)" /> diff --git a/test/IISExpress.FunctionalTests/RequiresNewShim.cs b/test/IISExpress.FunctionalTests/RequiresNewShim.cs new file mode 100644 index 00000000000..a43e9b8da7c --- /dev/null +++ b/test/IISExpress.FunctionalTests/RequiresNewShim.cs @@ -0,0 +1,17 @@ +// 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."; + } +} -- GitLab