From 4c634c9a080e2616cddc592968661f1b0b1f1f54 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 16 Jan 2018 14:50:24 -0800 Subject: [PATCH 1/2] Switch back to libuv as the default transport --- .../WebHostBuilderKestrelExtensions.cs | 6 ++-- .../WebHostBuilderKestrelExtensionsTests.cs | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/Kestrel/WebHostBuilderKestrelExtensions.cs b/src/Kestrel/WebHostBuilderKestrelExtensions.cs index faac901af..5662a807d 100644 --- a/src/Kestrel/WebHostBuilderKestrelExtensions.cs +++ b/src/Kestrel/WebHostBuilderKestrelExtensions.cs @@ -5,11 +5,9 @@ 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; namespace Microsoft.AspNetCore.Hosting @@ -30,7 +28,7 @@ public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder) return hostBuilder.ConfigureServices(services => { // Don't override an already-configured transport - services.TryAddSingleton(); + services.AddSingleton(); services.AddTransient, KestrelServerOptionsSetup>(); services.AddSingleton(); diff --git a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs index fc5d6509a..86b79a699 100644 --- a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs +++ b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs @@ -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,38 @@ public void ApplicationServicesNotNullDuringUseKestrelWithOptions() // Act hostBuilder.Build(); } + + [Fact] + public void LibuvIsTheDefaultTransport() + { + var hostBuilder = new WebHostBuilder() + .UseKestrel() + .Configure(app => { }); + + Assert.IsType(hostBuilder.Build().Services.GetService()); + } + + [Fact] + public void LibuvTransportCanBeManuallySelected() + { + var hostBuilder = new WebHostBuilder() + .UseKestrel() + .UseLibuv() + .Configure(app => { }); + + Assert.IsType(hostBuilder.Build().Services.GetService()); + } + + + [Fact] + public void SocketsTransportCanBeManuallySelected() + { + var hostBuilder = new WebHostBuilder() + .UseKestrel() + .UseSockets() + .Configure(app => { }); + + Assert.IsType(hostBuilder.Build().Services.GetService()); + } } } From e54095c6590c1becea15a81951e0584a7467278a Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 16 Jan 2018 14:55:27 -0800 Subject: [PATCH 2/2] Fix typo + tests --- .../WebHostBuilderKestrelExtensions.cs | 3 ++- .../WebHostBuilderKestrelExtensionsTests.cs | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Kestrel/WebHostBuilderKestrelExtensions.cs b/src/Kestrel/WebHostBuilderKestrelExtensions.cs index 5662a807d..70b1a34d7 100644 --- a/src/Kestrel/WebHostBuilderKestrelExtensions.cs +++ b/src/Kestrel/WebHostBuilderKestrelExtensions.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.Internal; using Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.Hosting @@ -28,7 +29,7 @@ public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder) return hostBuilder.ConfigureServices(services => { // Don't override an already-configured transport - services.AddSingleton(); + services.TryAddSingleton(); services.AddTransient, KestrelServerOptionsSetup>(); services.AddSingleton(); diff --git a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs index 86b79a699..3c10c1c0f 100644 --- a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs +++ b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs @@ -61,7 +61,7 @@ public void LibuvIsTheDefaultTransport() } [Fact] - public void LibuvTransportCanBeManuallySelected() + public void LibuvTransportCanBeManuallySelectedIndependentOfOrder() { var hostBuilder = new WebHostBuilder() .UseKestrel() @@ -69,11 +69,17 @@ public void LibuvTransportCanBeManuallySelected() .Configure(app => { }); Assert.IsType(hostBuilder.Build().Services.GetService()); - } + var hostBuilderReversed = new WebHostBuilder() + .UseLibuv() + .UseKestrel() + .Configure(app => { }); + + Assert.IsType(hostBuilderReversed.Build().Services.GetService()); + } [Fact] - public void SocketsTransportCanBeManuallySelected() + public void SocketsTransportCanBeManuallySelectedIndependentOfOrder() { var hostBuilder = new WebHostBuilder() .UseKestrel() @@ -81,6 +87,13 @@ public void SocketsTransportCanBeManuallySelected() .Configure(app => { }); Assert.IsType(hostBuilder.Build().Services.GetService()); + + var hostBuilderReversed = new WebHostBuilder() + .UseSockets() + .UseKestrel() + .Configure(app => { }); + + Assert.IsType(hostBuilderReversed.Build().Services.GetService()); } } }