Switch back to libuv as the default transport (#2257)

* Switch back to libuv as the default transport
This commit is contained in:
Stephen Halter 2018-01-18 17:25:28 -08:00 committed by GitHub
parent 040ea2e6b4
commit 526dfdb332
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 3 deletions

View File

@ -5,9 +5,8 @@ using System;
using Microsoft.AspNetCore.Hosting.Server;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal;
using Microsoft.AspNetCore.Server.Kestrel.Internal;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.Internal;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
@ -30,7 +29,7 @@ namespace Microsoft.AspNetCore.Hosting
return hostBuilder.ConfigureServices(services =>
{
// Don't override an already-configured transport
services.TryAddSingleton<ITransportFactory, SocketTransportFactory>();
services.TryAddSingleton<ITransportFactory, LibuvTransportFactory>();
services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
services.AddSingleton<IServer, KestrelServer>();

View File

@ -3,6 +3,9 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.Internal;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv;
using Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
@ -46,5 +49,51 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Tests
// Act
hostBuilder.Build();
}
[Fact]
public void LibuvIsTheDefaultTransport()
{
var hostBuilder = new WebHostBuilder()
.UseKestrel()
.Configure(app => { });
Assert.IsType<LibuvTransportFactory>(hostBuilder.Build().Services.GetService<ITransportFactory>());
}
[Fact]
public void LibuvTransportCanBeManuallySelectedIndependentOfOrder()
{
var hostBuilder = new WebHostBuilder()
.UseKestrel()
.UseLibuv()
.Configure(app => { });
Assert.IsType<LibuvTransportFactory>(hostBuilder.Build().Services.GetService<ITransportFactory>());
var hostBuilderReversed = new WebHostBuilder()
.UseLibuv()
.UseKestrel()
.Configure(app => { });
Assert.IsType<LibuvTransportFactory>(hostBuilderReversed.Build().Services.GetService<ITransportFactory>());
}
[Fact]
public void SocketsTransportCanBeManuallySelectedIndependentOfOrder()
{
var hostBuilder = new WebHostBuilder()
.UseKestrel()
.UseSockets()
.Configure(app => { });
Assert.IsType<SocketTransportFactory>(hostBuilder.Build().Services.GetService<ITransportFactory>());
var hostBuilderReversed = new WebHostBuilder()
.UseSockets()
.UseKestrel()
.Configure(app => { });
Assert.IsType<SocketTransportFactory>(hostBuilderReversed.Build().Services.GetService<ITransportFactory>());
}
}
}