From 6cac028716f3249d5f27112a60de58fb46ccd1ed Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Wed, 16 Jan 2019 11:47:52 -0800 Subject: [PATCH] Switch IIS tests to Hosted queue (#6746) --- .azure/pipelines/jobs/default-build.yml | 1 + .azure/pipelines/jobs/iisintegration-job.yml | 4 +++- .../test/Common.FunctionalTests/Inprocess/StartupTests.cs | 1 + .../Common.FunctionalTests/SkipIfNotAdminAttribute.cs | 2 +- .../IIS/test/Common.FunctionalTests/SkipVSTSAttribute.cs | 3 ++- .../IIS.Shared.FunctionalTests/RequiresIISAttribute.cs | 8 ++++---- .../IIS/test/IIS.Shared.FunctionalTests/ServicesTests.cs | 4 ++-- src/Servers/IIS/tools/InstallIISFeatures.ps1 | 7 +++++++ 8 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 src/Servers/IIS/tools/InstallIISFeatures.ps1 diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 234e7c00c2..0e90c8edc6 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -75,6 +75,7 @@ jobs: pool: ${{ if ne(parameters.poolName, '') }}: name: ${{ parameters.poolName }} + vmImage: ${{ parameters.poolVmImage }} ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'macOS')) }}: name: Hosted macOS vmImage: macOS-10.13 diff --git a/.azure/pipelines/jobs/iisintegration-job.yml b/.azure/pipelines/jobs/iisintegration-job.yml index 3ee3a2a307..d174a9fcc8 100644 --- a/.azure/pipelines/jobs/iisintegration-job.yml +++ b/.azure/pipelines/jobs/iisintegration-job.yml @@ -3,8 +3,10 @@ jobs: parameters: buildScript: ./build.cmd buildArgs: "-ci -restore -build -test -projects src/Servers/IIS/**/*.csproj ${{ parameters.skipArgs }}" + poolName: "Hosted VS2017" + poolVmImage: "vs2017-win2016" beforeBuild: - - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1; & ./src/Servers/IIS/tools/SetupTestEnvironment.ps1 Setup" + - powershell: "& ./src/Servers/IIS/tools/InstallIISFeatures.ps1; & ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1; & ./src/Servers/IIS/tools/SetupTestEnvironment.ps1 Setup" displayName: Prepare repo afterBuild: - powershell: "& ./src/Servers/IIS/tools/SetupTestEnvironment.ps1 Shutdown" diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs index af512044a2..2cc413689f 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs @@ -273,6 +273,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests } [ConditionalFact] + [RequiresNewShim] public async Task RemoveHostfxrFromApp_InProcessHostfxrLoadFailure() { var deploymentParameters = _fixture.GetBaseDeploymentParameters(_fixture.InProcessTestSite, publish: true); diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipIfNotAdminAttribute.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipIfNotAdminAttribute.cs index d2acb70415..649a3984f9 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipIfNotAdminAttribute.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipIfNotAdminAttribute.cs @@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests { var identity = WindowsIdentity.GetCurrent(); var principal = new WindowsPrincipal(identity); - return principal.IsInRole(WindowsBuiltInRole.Administrator); + return principal.IsInRole(WindowsBuiltInRole.Administrator) || SkipInVSTSAttribute.RunningInVSTS; } } diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipVSTSAttribute.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipVSTSAttribute.cs index 8e88fc8c26..58a9347148 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipVSTSAttribute.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/SkipVSTSAttribute.cs @@ -10,7 +10,8 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] public sealed class SkipInVSTSAttribute : Attribute, ITestCondition { - public bool IsMet => string.IsNullOrEmpty(Environment.GetEnvironmentVariable("SYSTEM_TASKDEFINITIONSURI")); + public static bool RunningInVSTS = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("SYSTEM_TASKDEFINITIONSURI")); + public bool IsMet => !RunningInVSTS; public string SkipReason => "Running in VSTS"; } diff --git a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs index cfbbf70486..0476ced47a 100644 --- a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs +++ b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/RequiresIISAttribute.cs @@ -47,13 +47,13 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests var identity = WindowsIdentity.GetCurrent(); var principal = new WindowsPrincipal(identity); - if (!principal.IsInRole(WindowsBuiltInRole.Administrator)) + if (!principal.IsInRole(WindowsBuiltInRole.Administrator) && !SkipInVSTSAttribute.RunningInVSTS) { _skipReasonStatic += "The current console is not running as admin."; return; } - if (!File.Exists(Path.Combine(Environment.SystemDirectory, "inetsrv", "w3wp.exe"))) + if (!File.Exists(Path.Combine(Environment.SystemDirectory, "inetsrv", "w3wp.exe")) && !SkipInVSTSAttribute.RunningInVSTS) { _skipReasonStatic += "The machine does not have IIS installed."; return; @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests var ancmConfigPath = Path.Combine(Environment.SystemDirectory, "inetsrv", "config", "schema", "aspnetcore_schema_v2.xml"); - if (!File.Exists(ancmConfigPath)) + if (!File.Exists(ancmConfigPath) && !SkipInVSTSAttribute.RunningInVSTS) { _skipReasonStatic = "IIS Schema is not installed."; return; @@ -88,7 +88,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests foreach (var module in Modules) { - if (File.Exists(Path.Combine(Environment.SystemDirectory, "inetsrv", module.DllName))) + if (File.Exists(Path.Combine(Environment.SystemDirectory, "inetsrv", module.DllName)) || SkipInVSTSAttribute.RunningInVSTS) { _modulesAvailable |= module.Capability; } diff --git a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ServicesTests.cs b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ServicesTests.cs index 875b5b13be..84ddd11b34 100644 --- a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ServicesTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ServicesTests.cs @@ -26,7 +26,7 @@ namespace IIS.FunctionalTests _fixture = fixture; } - [ConditionalTheory] + [ConditionalTheory(Skip="https://github.com/aspnet/AspNetCore/issues/6752")] [RequiresIIS(IISCapability.ApplicationInitialization)] [InlineData(HostingModel.InProcess)] [InlineData(HostingModel.OutOfProcess)] @@ -48,7 +48,7 @@ namespace IIS.FunctionalTests } } - [ConditionalTheory] + [ConditionalTheory(Skip="https://github.com/aspnet/AspNetCore/issues/6752")] [RequiresIIS(IISCapability.ApplicationInitialization)] [InlineData(HostingModel.InProcess)] [InlineData(HostingModel.OutOfProcess)] diff --git a/src/Servers/IIS/tools/InstallIISFeatures.ps1 b/src/Servers/IIS/tools/InstallIISFeatures.ps1 new file mode 100644 index 0000000000..e27ef712e8 --- /dev/null +++ b/src/Servers/IIS/tools/InstallIISFeatures.ps1 @@ -0,0 +1,7 @@ +Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebSockets +Enable-WindowsOptionalFeature -Online -FeatureName IIS-WindowsAuthentication +Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationInit +Enable-WindowsOptionalFeature -Online -FeatureName IIS-CustomLogging +Enable-WindowsOptionalFeature -Online -FeatureName IIS-BasicAuthentication +Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpTracing +Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionDynamic \ No newline at end of file