[Routing] Move to GenericHost (#24281)
This commit is contained in:
parent
f26942805d
commit
e893ef59e8
|
|
@ -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<IConfiguration>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<IConfiguration>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<InvalidOperationException>(() => 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<InvalidOperationException>(() => 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<InvalidOperationException>(() => 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<InvalidOperationException>(() => server.CreateRequest("/").SendAsync("GET"));
|
||||
Assert.Equal(CORSErrorMessage, ex.Message);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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<IRouteBuilder> 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
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
<!--These references are used when running locally-->
|
||||
<ItemGroup Condition="'$(UseP2PReferences)'=='true'">
|
||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||
<Reference Include="Microsoft.AspNetCore.Routing" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||
<Reference Include="Microsoft.Extensions.Configuration.CommandLine" />
|
||||
|
|
|
|||
|
|
@ -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<StartupUsingEndpointRouting>();
|
||||
// for testing
|
||||
webHostBuilder.UseSetting("Startup", nameof(StartupUsingEndpointRouting));
|
||||
hostBuilder.ConfigureWebHost(webHostBuilder =>
|
||||
{
|
||||
webHostBuilder
|
||||
.UseStartup<StartupUsingEndpointRouting>()
|
||||
// for testing
|
||||
.UseSetting("Startup", nameof(StartupUsingEndpointRouting));
|
||||
});
|
||||
}
|
||||
else if (scenario == "plaintextrouting" || scenario == "plaintextrouter")
|
||||
{
|
||||
webHostBuilder.UseStartup<StartupUsingRouter>();
|
||||
// for testing
|
||||
webHostBuilder.UseSetting("Startup", nameof(StartupUsingRouter));
|
||||
hostBuilder.ConfigureWebHost(webHostBuilder =>
|
||||
{
|
||||
webHostBuilder
|
||||
.UseStartup<StartupUsingRouter>()
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||
<Reference Include="Microsoft.AspNetCore.Routing" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IISIntegration" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.AspNetCore.TestHost" />
|
||||
<Reference Include="Microsoft.AspNetCore.Routing" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.IISIntegration" />
|
||||
<Reference Include="Microsoft.AspNetCore.Server.Kestrel" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue