diff --git a/src/Http/Routing/test/FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs b/src/Http/Routing/test/FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs index b40da83fc9..003db4f95f 100644 --- a/src/Http/Routing/test/FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs +++ b/src/Http/Routing/test/FunctionalTests/Benchmarks/EndpointRoutingBenchmarkTest.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -6,6 +6,9 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Xunit; namespace Microsoft.AspNetCore.Routing.FunctionalTests @@ -13,19 +16,24 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public class EndpointRoutingBenchmarkTest : IDisposable { private readonly HttpClient _client; + private readonly IHost _host; private readonly TestServer _testServer; public EndpointRoutingBenchmarkTest() { // This switch and value are set by benchmark server when running the app for profiling. var args = new[] { "--scenarios", "PlaintextEndpointRouting" }; - var webHostBuilder = Benchmarks.Program.GetWebHostBuilder(args); + var hostBuilder = Benchmarks.Program.GetHostBuilder(args); + + _host = hostBuilder.Build(); // Make sure we are using the right startup - var startupName = webHostBuilder.GetSetting("Startup"); - Assert.Equal(nameof(Benchmarks.StartupUsingEndpointRouting), startupName); + var configuration = _host.Services.GetService(); + var startupName = configuration["Startup"]; + Assert.Equal(nameof(Benchmarks.StartupUsingEndpointRouting), startupName); - _testServer = new TestServer(webHostBuilder); + _testServer = _host.GetTestServer(); + _host.Start(); _client = _testServer.CreateClient(); _client.BaseAddress = new Uri("http://localhost"); } @@ -53,6 +61,7 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests { _testServer.Dispose(); _client.Dispose(); + _host.Dispose(); } } } diff --git a/src/Http/Routing/test/FunctionalTests/Benchmarks/RouterBenchmarkTest.cs b/src/Http/Routing/test/FunctionalTests/Benchmarks/RouterBenchmarkTest.cs index aecbaaab8c..ccd11a551a 100644 --- a/src/Http/Routing/test/FunctionalTests/Benchmarks/RouterBenchmarkTest.cs +++ b/src/Http/Routing/test/FunctionalTests/Benchmarks/RouterBenchmarkTest.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -6,6 +6,10 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.TestHost; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Xunit; namespace Microsoft.AspNetCore.Routing.FunctionalTests @@ -13,19 +17,24 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public class RouterBenchmarkTest : IDisposable { private readonly HttpClient _client; + private readonly IHost _host; private readonly TestServer _testServer; public RouterBenchmarkTest() { // This switch and value are set by benchmark server when running the app for profiling. var args = new[] { "--scenarios", "PlaintextRouting" }; - var webHostBuilder = Benchmarks.Program.GetWebHostBuilder(args); + var hostBuilder = Benchmarks.Program.GetHostBuilder(args); + + _host = hostBuilder.Build(); // Make sure we are using the right startup - var startupName = webHostBuilder.GetSetting("Startup"); + var configuration = _host.Services.GetService(); + var startupName = configuration["Startup"]; Assert.Equal(nameof(Benchmarks.StartupUsingRouter), startupName); - _testServer = new TestServer(webHostBuilder); + _testServer = _host.GetTestServer(); + _host.Start(); _client = _testServer.CreateClient(); _client.BaseAddress = new Uri("http://localhost"); } @@ -53,6 +62,7 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests { _testServer.Dispose(); _client.Dispose(); + _host.Dispose(); } } -} \ No newline at end of file +} diff --git a/src/Http/Routing/test/FunctionalTests/EndpointRoutingIntegrationTest.cs b/src/Http/Routing/test/FunctionalTests/EndpointRoutingIntegrationTest.cs index f0fa4a4f59..860ebac133 100644 --- a/src/Http/Routing/test/FunctionalTests/EndpointRoutingIntegrationTest.cs +++ b/src/Http/Routing/test/FunctionalTests/EndpointRoutingIntegrationTest.cs @@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using Xunit; namespace Microsoft.AspNetCore.Routing.FunctionalTests @@ -31,20 +32,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_WhenNoAuthMetadataIsConfigured() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseAuthorization(); - app.UseEndpoints(b => b.Map("/", TestDelegate)); - }) - .ConfigureServices(services => - { - services.AddAuthorization(); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseAuthorization(); + app.UseEndpoints(b => b.Map("/", TestDelegate)); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var response = await server.CreateRequest("/").SendAsync("GET"); @@ -55,20 +64,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_WhenEndpointIsNotFound() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseAuthorization(); - app.UseEndpoints(b => b.Map("/", TestDelegate)); - }) - .ConfigureServices(services => - { - services.AddAuthorization(); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseAuthorization(); + app.UseEndpoints(b => b.Map("/", TestDelegate)); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var response = await server.CreateRequest("/not-found").SendAsync("GET"); @@ -79,20 +96,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_WithAuthorizedEndpoint() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseAuthorization(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); - }) - .ConfigureServices(services => - { - services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseAuthorization(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var response = await server.CreateRequest("/").SendAsync("GET"); @@ -103,20 +128,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_NotConfigured_Throws() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); - }) - .ConfigureServices(services => - { - services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); - services.AddRouting(); - }); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var ex = await Assert.ThrowsAsync(() => server.CreateRequest("/").SendAsync("GET")); Assert.Equal(AuthErrorMessage, ex.Message); @@ -126,18 +159,26 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_NotConfigured_WhenEndpointIsNotFound() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); - }) - .ConfigureServices(services => - { - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var response = await server.CreateRequest("/not-found").SendAsync("GET"); @@ -148,20 +189,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_ConfiguredBeforeRouting_Throws() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseAuthorization(); - app.UseRouting(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); - }) - .ConfigureServices(services => - { - services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseAuthorization(); + app.UseRouting(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var ex = await Assert.ThrowsAsync(() => server.CreateRequest("/").SendAsync("GET")); Assert.Equal(AuthErrorMessage, ex.Message); @@ -171,20 +220,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task AuthorizationMiddleware_ConfiguredAfterRouting_Throws() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); - app.UseAuthorization(); - }) - .ConfigureServices(services => - { - services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireAuthorization()); + app.UseAuthorization(); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddAuthorization(options => options.DefaultPolicy = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build()); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var ex = await Assert.ThrowsAsync(() => server.CreateRequest("/").SendAsync("GET")); Assert.Equal(AuthErrorMessage, ex.Message); @@ -194,20 +251,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task CorsMiddleware_WithCorsEndpoint() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseRouting(); - app.UseCors(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireCors(policy => policy.AllowAnyOrigin())); - }) - .ConfigureServices(services => - { - services.AddCors(); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseRouting(); + app.UseCors(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireCors(policy => policy.AllowAnyOrigin())); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddCors(); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var response = await server.CreateRequest("/").SendAsync("PUT"); @@ -218,20 +283,28 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task CorsMiddleware_ConfiguredBeforeRouting_Throws() { // Arrange - var builder = new WebHostBuilder(); - builder.Configure(app => - { - app.UseCors(); - app.UseRouting(); - app.UseEndpoints(b => b.Map("/", TestDelegate).RequireCors(policy => policy.AllowAnyOrigin())); - }) - .ConfigureServices(services => - { - services.AddCors(); - services.AddRouting(); - }); + using var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .Configure(app => + { + app.UseCors(); + app.UseRouting(); + app.UseEndpoints(b => b.Map("/", TestDelegate).RequireCors(policy => policy.AllowAnyOrigin())); + }) + .UseTestServer(); + }) + .ConfigureServices(services => + { + services.AddCors(); + services.AddRouting(); + }) + .Build(); - using var server = new TestServer(builder); + using var server = host.GetTestServer(); + + await host.StartAsync(); var ex = await Assert.ThrowsAsync(() => server.CreateRequest("/").SendAsync("GET")); Assert.Equal(CORSErrorMessage, ex.Message); diff --git a/src/Http/Routing/test/FunctionalTests/EndpointRoutingSampleTest.cs b/src/Http/Routing/test/FunctionalTests/EndpointRoutingSampleTest.cs index e5ad2bd10a..aa575ab084 100644 --- a/src/Http/Routing/test/FunctionalTests/EndpointRoutingSampleTest.cs +++ b/src/Http/Routing/test/FunctionalTests/EndpointRoutingSampleTest.cs @@ -6,6 +6,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; using RoutingWebSite; using Xunit; @@ -14,12 +15,17 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public class EndpointRoutingSampleTest : IDisposable { private readonly HttpClient _client; + private readonly IHost _host; private readonly TestServer _testServer; public EndpointRoutingSampleTest() { - var webHostBuilder = Program.GetWebHostBuilder(new[] { Program.EndpointRoutingScenario, }); - _testServer = new TestServer(webHostBuilder); + var hostBuilder = Program.GetHostBuilder(new[] { Program.EndpointRoutingScenario, }); + _host = hostBuilder.Build(); + + _testServer = _host.GetTestServer(); + _host.Start(); + _client = _testServer.CreateClient(); _client.BaseAddress = new Uri("http://localhost"); } @@ -227,6 +233,7 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests { _testServer.Dispose(); _client.Dispose(); + _host.Dispose(); } } } diff --git a/src/Http/Routing/test/FunctionalTests/RouterSampleTest.cs b/src/Http/Routing/test/FunctionalTests/RouterSampleTest.cs index 9388a03781..d0b93a8965 100644 --- a/src/Http/Routing/test/FunctionalTests/RouterSampleTest.cs +++ b/src/Http/Routing/test/FunctionalTests/RouterSampleTest.cs @@ -6,6 +6,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; using RoutingWebSite; using Xunit; @@ -14,12 +15,15 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public class RouterSampleTest : IDisposable { private readonly HttpClient _client; + private readonly IHost _host; private readonly TestServer _testServer; public RouterSampleTest() { - var webHostBuilder = Program.GetWebHostBuilder(new[] { Program.RouterScenario, }); - _testServer = new TestServer(webHostBuilder); + var hostBuilder = Program.GetHostBuilder(new[] { Program.RouterScenario, }); + _host = hostBuilder.Build(); + _testServer = _host.GetTestServer(); + _host.Start(); _client = _testServer.CreateClient(); _client.BaseAddress = new Uri("http://localhost"); } @@ -96,6 +100,7 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests { _testServer.Dispose(); _client.Dispose(); + _host.Dispose(); } } } diff --git a/src/Http/Routing/test/FunctionalTests/RoutingTestFixture.cs b/src/Http/Routing/test/FunctionalTests/RoutingTestFixture.cs index 51c9bc8c5a..c0c97347f3 100644 --- a/src/Http/Routing/test/FunctionalTests/RoutingTestFixture.cs +++ b/src/Http/Routing/test/FunctionalTests/RoutingTestFixture.cs @@ -5,6 +5,7 @@ using System; using System.Net.Http; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; namespace Microsoft.AspNetCore.Routing.FunctionalTests { @@ -14,10 +15,18 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public RoutingTestFixture() { - var builder = new WebHostBuilder() - .UseStartup(typeof(TStartup)); + var host = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseStartup(typeof(TStartup)) + .UseTestServer(); + }) + .Build(); - _server = new TestServer(builder); + _server = host.GetTestServer(); + + host.Start(); Client = _server.CreateClient(); Client.BaseAddress = new Uri("http://localhost"); diff --git a/src/Http/Routing/test/FunctionalTests/WebHostBuilderExtensionsTest.cs b/src/Http/Routing/test/FunctionalTests/WebHostBuilderExtensionsTest.cs index 7466006026..59373e2594 100644 --- a/src/Http/Routing/test/FunctionalTests/WebHostBuilderExtensionsTest.cs +++ b/src/Http/Routing/test/FunctionalTests/WebHostBuilderExtensionsTest.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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; @@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.DependencyInjection; using Xunit; +using Microsoft.Extensions.Hosting; namespace Microsoft.AspNetCore.Routing.FunctionalTests { @@ -79,14 +80,21 @@ namespace Microsoft.AspNetCore.Routing.FunctionalTests public async Task UseRouter_MapGet_MatchesRequest(Action routeBuilder, HttpRequestMessage request, string expected) { // Arrange - var webhostbuilder = new WebHostBuilder(); - webhostbuilder - .ConfigureServices(services => services.AddRouting()) - .Configure(app => + using var host = new HostBuilder() + .ConfigureWebHost(webhostbuilder => { - app.UseRouter(routeBuilder); - }); - var testServer = new TestServer(webhostbuilder); + webhostbuilder + .Configure(app => + { + app.UseRouter(routeBuilder); + }) + .UseTestServer(); + }) + .ConfigureServices(services => services.AddRouting()) + .Build(); + + var testServer = host.GetTestServer(); + await host.StartAsync(); var client = testServer.CreateClient(); // Act diff --git a/src/Http/Routing/test/testassets/Benchmarks/Benchmarks.csproj b/src/Http/Routing/test/testassets/Benchmarks/Benchmarks.csproj index 8bab94164f..6f70f9b391 100644 --- a/src/Http/Routing/test/testassets/Benchmarks/Benchmarks.csproj +++ b/src/Http/Routing/test/testassets/Benchmarks/Benchmarks.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Http/Routing/test/testassets/Benchmarks/Program.cs b/src/Http/Routing/test/testassets/Benchmarks/Program.cs index 4e832df4a2..b4b29acb03 100644 --- a/src/Http/Routing/test/testassets/Benchmarks/Program.cs +++ b/src/Http/Routing/test/testassets/Benchmarks/Program.cs @@ -1,20 +1,23 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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.Threading.Tasks; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; namespace Benchmarks { public class Program { - public static void Main(string[] args) + public static Task Main(string[] args) { - GetWebHostBuilder(args).Build().Run(); + return GetHostBuilder(args).Build().RunAsync(); } - public static IWebHostBuilder GetWebHostBuilder(string[] args) + public static IHostBuilder GetHostBuilder(string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) @@ -24,22 +27,35 @@ namespace Benchmarks // Consoler logger has a major impact on perf results, so do not use // default builder. - var webHostBuilder = new WebHostBuilder() - .UseConfiguration(config) - .UseKestrel(); + var hostBuilder = new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + .UseTestServer() + .UseConfiguration(config); + }); var scenario = config["scenarios"]?.ToLower(); if (scenario == "plaintextdispatcher" || scenario == "plaintextendpointrouting") { - webHostBuilder.UseStartup(); - // for testing - webHostBuilder.UseSetting("Startup", nameof(StartupUsingEndpointRouting)); + hostBuilder.ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseStartup() + // for testing + .UseSetting("Startup", nameof(StartupUsingEndpointRouting)); + }); } else if (scenario == "plaintextrouting" || scenario == "plaintextrouter") { - webHostBuilder.UseStartup(); - // for testing - webHostBuilder.UseSetting("Startup", nameof(StartupUsingRouter)); + hostBuilder.ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseStartup() + // for testing + .UseSetting("Startup", nameof(StartupUsingRouter)); + }); } else { @@ -47,7 +63,7 @@ namespace Benchmarks $"Invalid scenario '{scenario}'. Allowed scenarios are PlaintextEndpointRouting and PlaintextRouter"); } - return webHostBuilder; + return hostBuilder; } } } diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/Program.cs b/src/Http/Routing/test/testassets/RoutingSandbox/Program.cs index 4f2d60bc76..edcc062745 100644 --- a/src/Http/Routing/test/testassets/RoutingSandbox/Program.cs +++ b/src/Http/Routing/test/testassets/RoutingSandbox/Program.cs @@ -2,8 +2,11 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace RoutingSandbox @@ -13,14 +16,14 @@ namespace RoutingSandbox public const string EndpointRoutingScenario = "endpointrouting"; public const string RouterScenario = "router"; - public static void Main(string[] args) + public static Task Main(string[] args) { - var webHost = GetWebHostBuilder(args).Build(); - webHost.Run(); + var host = GetHostBuilder(args).Build(); + return host.RunAsync(); } // For unit testing - public static IWebHostBuilder GetWebHostBuilder(string[] args) + public static IHostBuilder GetHostBuilder(string[] args) { string scenario; if (args.Length == 0) @@ -57,16 +60,20 @@ namespace RoutingSandbox } - return new WebHostBuilder() - .UseKestrel() - .UseIISIntegration() + return new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + .UseIISIntegration() + .UseContentRoot(Environment.CurrentDirectory) + .UseStartup(startupType); + }) .ConfigureLogging(b => { b.AddConsole(); b.SetMinimumLevel(LogLevel.Critical); - }) - .UseContentRoot(Environment.CurrentDirectory) - .UseStartup(startupType); + }); } } } diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/RoutingSandbox.csproj b/src/Http/Routing/test/testassets/RoutingSandbox/RoutingSandbox.csproj index 873236404f..554514e46f 100644 --- a/src/Http/Routing/test/testassets/RoutingSandbox/RoutingSandbox.csproj +++ b/src/Http/Routing/test/testassets/RoutingSandbox/RoutingSandbox.csproj @@ -5,6 +5,7 @@ + diff --git a/src/Http/Routing/test/testassets/RoutingWebSite/Program.cs b/src/Http/Routing/test/testassets/RoutingWebSite/Program.cs index d96af1814f..3727c9a9a8 100644 --- a/src/Http/Routing/test/testassets/RoutingWebSite/Program.cs +++ b/src/Http/Routing/test/testassets/RoutingWebSite/Program.cs @@ -1,9 +1,12 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// 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.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace RoutingWebSite @@ -13,14 +16,14 @@ namespace RoutingWebSite public const string EndpointRoutingScenario = "endpointrouting"; public const string RouterScenario = "router"; - public static void Main(string[] args) + public static Task Main(string[] args) { - var webHost = GetWebHostBuilder(args).Build(); - webHost.Run(); + var host = GetHostBuilder(args).Build(); + return host.RunAsync(); } // For unit testing - public static IWebHostBuilder GetWebHostBuilder(string[] args) + public static IHostBuilder GetHostBuilder(string[] args) { string scenario; if (args.Length == 0) @@ -57,16 +60,21 @@ namespace RoutingWebSite } - return new WebHostBuilder() - .UseKestrel() - .UseIISIntegration() + return new HostBuilder() + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseKestrel() + .UseIISIntegration() + .UseContentRoot(Environment.CurrentDirectory) + .UseStartup(startupType) + .UseTestServer(); + }) .ConfigureLogging(b => { b.AddConsole(); b.SetMinimumLevel(LogLevel.Critical); - }) - .UseContentRoot(Environment.CurrentDirectory) - .UseStartup(startupType); + }); } } } diff --git a/src/Http/Routing/test/testassets/RoutingWebSite/RoutingWebSite.csproj b/src/Http/Routing/test/testassets/RoutingWebSite/RoutingWebSite.csproj index 873236404f..554514e46f 100644 --- a/src/Http/Routing/test/testassets/RoutingWebSite/RoutingWebSite.csproj +++ b/src/Http/Routing/test/testassets/RoutingWebSite/RoutingWebSite.csproj @@ -5,6 +5,7 @@ +