Skip to content

Commit ccc59b9

Browse files
authored
Revert breaking KestrelServer ctor change (#26367)
1 parent 792df8a commit ccc59b9

File tree

6 files changed

+24
-31
lines changed

6 files changed

+24
-31
lines changed

src/Servers/Kestrel/Core/src/Internal/KestrelServerImpl.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public KestrelServerImpl(
5454
}
5555

5656
// For testing
57-
internal KestrelServerImpl(IEnumerable<IConnectionListenerFactory> transportFactories, ServiceContext serviceContext)
58-
: this(transportFactories, null, serviceContext)
57+
internal KestrelServerImpl(IConnectionListenerFactory transportFactory, ServiceContext serviceContext)
58+
: this(new[] { transportFactory }, null, serviceContext)
5959
{
6060
}
6161

src/Servers/Kestrel/Core/src/KestrelServer.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4-
using System.Collections.Generic;
4+
using System;
55
using System.Threading;
66
using System.Threading.Tasks;
77
using Microsoft.AspNetCore.Connections;
88
using Microsoft.AspNetCore.Hosting.Server;
99
using Microsoft.AspNetCore.Http.Features;
10-
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal;
1110
using Microsoft.Extensions.Logging;
1211
using Microsoft.Extensions.Options;
1312

@@ -17,18 +16,12 @@ public class KestrelServer : IServer
1716
{
1817
private KestrelServerImpl _innerKestrelServer;
1918

20-
public KestrelServer(
21-
IOptions<KestrelServerOptions> options,
22-
IEnumerable<IConnectionListenerFactory> transportFactories,
23-
ILoggerFactory loggerFactory)
19+
public KestrelServer(IOptions<KestrelServerOptions> options, IConnectionListenerFactory transportFactory, ILoggerFactory loggerFactory)
2420
{
25-
_innerKestrelServer = new KestrelServerImpl(options, transportFactories, loggerFactory);
26-
}
27-
28-
// For testing
29-
internal KestrelServer(IEnumerable<IConnectionListenerFactory> transportFactories, ServiceContext serviceContext)
30-
{
31-
_innerKestrelServer = new KestrelServerImpl(transportFactories, serviceContext);
21+
_innerKestrelServer = new KestrelServerImpl(
22+
options,
23+
new[] { transportFactory ?? throw new ArgumentNullException(nameof(transportFactory)) },
24+
loggerFactory);
3225
}
3326

3427
public IFeatureCollection Features => _innerKestrelServer.Features;

src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load() -> void
164164
~Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser<TRequestHandler>.ParseHeaders(TRequestHandler handler, ref System.Buffers.SequenceReader<byte> reader) -> bool
165165
~Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser<TRequestHandler>.ParseRequestLine(TRequestHandler handler, ref System.Buffers.SequenceReader<byte> reader) -> bool
166166
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.Features.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection
167-
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.KestrelServer(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions> options, System.Collections.Generic.IEnumerable<Microsoft.AspNetCore.Connections.IConnectionListenerFactory> transportFactories, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void
167+
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.KestrelServer(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions> options, Microsoft.AspNetCore.Connections.IConnectionListenerFactory transportFactory, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void
168168
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.Options.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions
169169
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync<TContext>(Microsoft.AspNetCore.Hosting.Server.IHttpApplication<TContext> application, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
170170
~Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StopAsync(System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task

src/Servers/Kestrel/Core/test/KestrelServerTests.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -208,27 +208,27 @@ public void LoggerCategoryNameIsKestrelServerNamespace()
208208
var mockLoggerFactory = new Mock<ILoggerFactory>();
209209
var mockLogger = new Mock<ILogger>();
210210
mockLoggerFactory.Setup(m => m.CreateLogger(It.IsAny<string>())).Returns(mockLogger.Object);
211-
new KestrelServer(Options.Create<KestrelServerOptions>(null), new List<IConnectionListenerFactory>() { new MockTransportFactory() }, mockLoggerFactory.Object);
211+
new KestrelServer(Options.Create<KestrelServerOptions>(null), new MockTransportFactory(), mockLoggerFactory.Object);
212212
mockLoggerFactory.Verify(factory => factory.CreateLogger("Microsoft.AspNetCore.Server.Kestrel"));
213213
}
214214

215215
[Fact]
216-
public void ConstructorWithNullTransportFactoriesThrows()
216+
public void ConstructorWithNullTransportFactoryThrows()
217217
{
218218
var exception = Assert.Throws<ArgumentNullException>(() =>
219219
new KestrelServer(
220220
Options.Create<KestrelServerOptions>(null),
221221
null,
222222
new LoggerFactory(new[] { new KestrelTestLoggerProvider() })));
223223

224-
Assert.Equal("transportFactories", exception.ParamName);
224+
Assert.Equal("transportFactory", exception.ParamName);
225225
}
226226

227227
[Fact]
228228
public void ConstructorWithNoTransportFactoriesThrows()
229229
{
230230
var exception = Assert.Throws<InvalidOperationException>(() =>
231-
new KestrelServer(
231+
new KestrelServerImpl(
232232
Options.Create<KestrelServerOptions>(null),
233233
new List<IConnectionListenerFactory>(),
234234
new LoggerFactory(new[] { new KestrelTestLoggerProvider() })));
@@ -239,7 +239,7 @@ public void ConstructorWithNoTransportFactoriesThrows()
239239
[Fact]
240240
public void StartWithMultipleTransportFactoriesDoesNotThrow()
241241
{
242-
using var server = new KestrelServer(
242+
using var server = new KestrelServerImpl(
243243
Options.Create(CreateServerOptions()),
244244
new List<IConnectionListenerFactory>() { new ThrowingTransportFactory(), new MockTransportFactory() },
245245
new LoggerFactory(new[] { new KestrelTestLoggerProvider() }));
@@ -285,7 +285,7 @@ public async Task StopAsyncCallsCompleteWhenFirstCallCompletes()
285285
var mockLoggerFactory = new Mock<ILoggerFactory>();
286286
var mockLogger = new Mock<ILogger>();
287287
mockLoggerFactory.Setup(m => m.CreateLogger(It.IsAny<string>())).Returns(mockLogger.Object);
288-
var server = new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { mockTransportFactory.Object }, mockLoggerFactory.Object);
288+
var server = new KestrelServer(Options.Create(options), mockTransportFactory.Object, mockLoggerFactory.Object);
289289
await server.StartAsync(new DummyApplication(), CancellationToken.None);
290290

291291
var stopTask1 = server.StopAsync(default);
@@ -343,7 +343,7 @@ public async Task StopAsyncCallsCompleteWithThrownException()
343343
var mockLoggerFactory = new Mock<ILoggerFactory>();
344344
var mockLogger = new Mock<ILogger>();
345345
mockLoggerFactory.Setup(m => m.CreateLogger(It.IsAny<string>())).Returns(mockLogger.Object);
346-
var server = new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { mockTransportFactory.Object }, mockLoggerFactory.Object);
346+
var server = new KestrelServer(Options.Create(options), mockTransportFactory.Object, mockLoggerFactory.Object);
347347
await server.StartAsync(new DummyApplication(), CancellationToken.None);
348348

349349
var stopTask1 = server.StopAsync(default);
@@ -398,7 +398,7 @@ public async Task StopAsyncDispatchesSubsequentStopAsyncContinuations()
398398
var mockLoggerFactory = new Mock<ILoggerFactory>();
399399
var mockLogger = new Mock<ILogger>();
400400
mockLoggerFactory.Setup(m => m.CreateLogger(It.IsAny<string>())).Returns(mockLogger.Object);
401-
var server = new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { mockTransportFactory.Object }, mockLoggerFactory.Object);
401+
var server = new KestrelServer(Options.Create(options), mockTransportFactory.Object, mockLoggerFactory.Object);
402402
await server.StartAsync(new DummyApplication(), default);
403403

404404
var stopTask1 = server.StopAsync(default);
@@ -444,7 +444,7 @@ public void StartingServerInitializesHeartbeat()
444444
DebuggerWrapper.Singleton,
445445
testContext.Log);
446446

447-
using (var server = new KestrelServer(new List<IConnectionListenerFactory>() { new MockTransportFactory() }, testContext))
447+
using (var server = new KestrelServerImpl(new MockTransportFactory(), testContext))
448448
{
449449
Assert.Null(testContext.DateHeaderValueManager.GetDateHeaderValues());
450450

@@ -526,7 +526,7 @@ public async Task ReloadsOnConfigurationChangeWhenOptedIn()
526526
});
527527

528528
// Don't use "using". Dispose() could hang if test fails.
529-
var server = new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { mockTransportFactory.Object }, mockLoggerFactory.Object);
529+
var server = new KestrelServer(Options.Create(options), mockTransportFactory.Object, mockLoggerFactory.Object);
530530

531531
await server.StartAsync(new DummyApplication(), CancellationToken.None).DefaultTimeout();
532532

@@ -663,7 +663,7 @@ public async Task DoesNotReloadOnConfigurationChangeByDefault()
663663
});
664664

665665
// Don't use "using". Dispose() could hang if test fails.
666-
var server = new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { mockTransportFactory.Object }, mockLoggerFactory.Object);
666+
var server = new KestrelServer(Options.Create(options), mockTransportFactory.Object, mockLoggerFactory.Object);
667667

668668
await server.StartAsync(new DummyApplication(), CancellationToken.None).DefaultTimeout();
669669

@@ -677,12 +677,12 @@ public async Task DoesNotReloadOnConfigurationChangeByDefault()
677677

678678
private static KestrelServer CreateServer(KestrelServerOptions options, ILogger testLogger)
679679
{
680-
return new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { new MockTransportFactory() }, new LoggerFactory(new[] { new KestrelTestLoggerProvider(testLogger) }));
680+
return new KestrelServer(Options.Create(options), new MockTransportFactory(), new LoggerFactory(new[] { new KestrelTestLoggerProvider(testLogger) }));
681681
}
682682

683683
private static KestrelServer CreateServer(KestrelServerOptions options, bool throwOnCriticalErrors = true)
684684
{
685-
return new KestrelServer(Options.Create(options), new List<IConnectionListenerFactory>() { new MockTransportFactory() }, new LoggerFactory(new[] { new KestrelTestLoggerProvider(throwOnCriticalErrors) }));
685+
return new KestrelServer(Options.Create(options), new MockTransportFactory(), new LoggerFactory(new[] { new KestrelTestLoggerProvider(throwOnCriticalErrors) }));
686686
}
687687

688688
private static void StartDummyApplication(IServer server)

src/Servers/Kestrel/shared/test/TransportTestHelpers/TestServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public TestServer(RequestDelegate app, TestServiceContext context, Action<Kestre
9393
c.Configure(context.ServerOptions);
9494
}
9595

96-
return new KestrelServer(new List<IConnectionListenerFactory>() { sp.GetRequiredService<IConnectionListenerFactory>() }, context);
96+
return new KestrelServerImpl(sp.GetRequiredService<IConnectionListenerFactory>(), context);
9797
});
9898
configureServices(services);
9999
})

src/Servers/Kestrel/test/InMemory.FunctionalTests/TestTransport/TestServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public TestServer(RequestDelegate app, TestServiceContext context, Action<Kestre
8888
{
8989
context.ServerOptions.ApplicationServices = sp;
9090
configureKestrel(context.ServerOptions);
91-
return new KestrelServer(new List<IConnectionListenerFactory>() { _transportFactory }, context);
91+
return new KestrelServerImpl(_transportFactory, context);
9292
});
9393
});
9494

0 commit comments

Comments
 (0)