Prevent blocking threads (#6190)
- Call StopAsync and StartAsync on the Host and TestServer in more places
This commit is contained in:
parent
010c1f0c9f
commit
712b01d063
|
|
@ -297,7 +297,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
var testUrlWithPort = $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}";
|
var testUrlWithPort = $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}";
|
||||||
|
|
||||||
|
|
@ -309,6 +309,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// Compare the response with Uri.ToString(), rather than testUrl directly.
|
// Compare the response with Uri.ToString(), rather than testUrl directly.
|
||||||
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
||||||
Assert.Equal(new Uri(testUrlWithPort).ToString(), response);
|
Assert.Equal(new Uri(testUrlWithPort).ToString(), response);
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -348,7 +350,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
foreach (var testUrl in testUrls.Select(testUrl => $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}"))
|
foreach (var testUrl in testUrls.Select(testUrl => $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}"))
|
||||||
{
|
{
|
||||||
|
|
@ -358,6 +360,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
||||||
Assert.Equal(new Uri(testUrl).ToString(), response);
|
Assert.Equal(new Uri(testUrl).ToString(), response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -389,7 +393,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
foreach (var testUrl in testUrls.Select(testUrl => $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}"))
|
foreach (var testUrl in testUrls.Select(testUrl => $"{testUrl}:{(testPort == 0 ? host.GetPort() : testPort)}"))
|
||||||
{
|
{
|
||||||
|
|
@ -399,6 +403,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
// Required to handle IPv6 addresses with zone index, like "fe80::3%1"
|
||||||
Assert.Equal(new Uri(testUrl).ToString(), response);
|
Assert.Equal(new Uri(testUrl).ToString(), response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -468,7 +474,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
Assert.Equal(5000, host.GetPort());
|
Assert.Equal(5000, host.GetPort());
|
||||||
|
|
||||||
|
|
@ -485,6 +491,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
{
|
{
|
||||||
Assert.Equal(new Uri(address).ToString(), await HttpClientSlim.GetStringAsync(address, validateCertificate: false));
|
Assert.Equal(new Uri(address).ToString(), await HttpClientSlim.GetStringAsync(address, validateCertificate: false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -555,7 +563,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
var port = host.GetPort();
|
var port = host.GetPort();
|
||||||
|
|
||||||
|
|
@ -571,6 +579,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
log.Message, StringComparison.Ordinal));
|
log.Message, StringComparison.Ordinal));
|
||||||
|
|
||||||
Assert.Equal(new Uri(useUrlsAddressWithPort).ToString(), await HttpClientSlim.GetStringAsync(useUrlsAddressWithPort));
|
Assert.Equal(new Uri(useUrlsAddressWithPort).ToString(), await HttpClientSlim.GetStringAsync(useUrlsAddressWithPort));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -594,7 +604,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
var port = host.GetPort();
|
var port = host.GetPort();
|
||||||
|
|
||||||
|
|
@ -610,6 +620,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
log.Message, StringComparison.Ordinal));
|
log.Message, StringComparison.Ordinal));
|
||||||
|
|
||||||
Assert.Equal(new Uri(endPointAddress).ToString(), await HttpClientSlim.GetStringAsync(endPointAddress, validateCertificate: false));
|
Assert.Equal(new Uri(endPointAddress).ToString(), await HttpClientSlim.GetStringAsync(endPointAddress, validateCertificate: false));
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -630,7 +641,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
var port = host.GetPort();
|
var port = host.GetPort();
|
||||||
|
|
||||||
|
|
@ -641,6 +652,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
Assert.Equal(serverAddresses.First(), endPointAddress);
|
Assert.Equal(serverAddresses.First(), endPointAddress);
|
||||||
|
|
||||||
Assert.Equal(new Uri(endPointAddress).ToString(), await HttpClientSlim.GetStringAsync(endPointAddress, validateCertificate: false));
|
Assert.Equal(new Uri(endPointAddress).ToString(), await HttpClientSlim.GetStringAsync(endPointAddress, validateCertificate: false));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -709,9 +722,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
Assert.Equal(endPointAddress, await HttpClientSlim.GetStringAsync(endPointAddress));
|
Assert.Equal(endPointAddress, await HttpClientSlim.GetStringAsync(endPointAddress));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
hostBuilder = TransportSelector.GetWebHostBuilder()
|
hostBuilder = TransportSelector.GetWebHostBuilder()
|
||||||
|
|
@ -723,9 +738,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
Assert.Equal(endPointAddress, await HttpClientSlim.GetStringAsync(endPointAddress));
|
Assert.Equal(endPointAddress, await HttpClientSlim.GetStringAsync(endPointAddress));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -748,10 +765,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
Assert.Equal(ipv4endPointAddress, await HttpClientSlim.GetStringAsync(ipv4endPointAddress));
|
Assert.Equal(ipv4endPointAddress, await HttpClientSlim.GetStringAsync(ipv4endPointAddress));
|
||||||
Assert.Equal(ipv6endPointAddress, await HttpClientSlim.GetStringAsync(ipv6endPointAddress));
|
Assert.Equal(ipv6endPointAddress, await HttpClientSlim.GetStringAsync(ipv6endPointAddress));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
hostBuilder = TransportSelector.GetWebHostBuilder()
|
hostBuilder = TransportSelector.GetWebHostBuilder()
|
||||||
|
|
@ -764,10 +783,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
Assert.Equal(ipv4endPointAddress, await HttpClientSlim.GetStringAsync(ipv4endPointAddress));
|
Assert.Equal(ipv4endPointAddress, await HttpClientSlim.GetStringAsync(ipv4endPointAddress));
|
||||||
Assert.Equal(ipv6endPointAddress, await HttpClientSlim.GetStringAsync(ipv6endPointAddress));
|
Assert.Equal(ipv6endPointAddress, await HttpClientSlim.GetStringAsync(ipv6endPointAddress));
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -775,7 +796,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
[InlineData("http1", HttpProtocols.Http1)]
|
[InlineData("http1", HttpProtocols.Http1)]
|
||||||
[InlineData("http2", HttpProtocols.Http2)]
|
[InlineData("http2", HttpProtocols.Http2)]
|
||||||
[InlineData("http1AndHttp2", HttpProtocols.Http1AndHttp2)]
|
[InlineData("http1AndHttp2", HttpProtocols.Http1AndHttp2)]
|
||||||
public void EndpointDefaultsConfig_CanSetProtocolForUrlsConfig(string input, HttpProtocols expected)
|
public async Task EndpointDefaultsConfig_CanSetProtocolForUrlsConfig(string input, HttpProtocols expected)
|
||||||
{
|
{
|
||||||
KestrelServerOptions capturedOptions = null;
|
KestrelServerOptions capturedOptions = null;
|
||||||
var hostBuilder = TransportSelector.GetWebHostBuilder()
|
var hostBuilder = TransportSelector.GetWebHostBuilder()
|
||||||
|
|
@ -795,9 +816,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
Assert.Single(capturedOptions.ListenOptions);
|
Assert.Single(capturedOptions.ListenOptions);
|
||||||
Assert.Equal(expected, capturedOptions.ListenOptions[0].Protocols);
|
Assert.Equal(expected, capturedOptions.ListenOptions[0].Protocols);
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
||||||
{
|
{
|
||||||
var result = await Client.GetStringAsync($"https://localhost:{server.Port}/");
|
var result = await Client.GetStringAsync($"https://localhost:{server.Port}/");
|
||||||
Assert.Equal("hello world HTTP/2", result);
|
Assert.Equal("hello world HTTP/2", result);
|
||||||
|
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,6 +91,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.Http2
|
||||||
{
|
{
|
||||||
var result = await Client.GetStringAsync($"https://localhost:{server.Port}/");
|
var result = await Client.GetStringAsync($"https://localhost:{server.Port}/");
|
||||||
Assert.Equal("hello world HTTP/2", result);
|
Assert.Equal("hello world HTTP/2", result);
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
@ -132,7 +132,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
var memoryPoolFactory = new DiagnosticMemoryPoolFactory(allowLateReturn: true);
|
var memoryPoolFactory = new DiagnosticMemoryPoolFactory(allowLateReturn: true);
|
||||||
|
|
||||||
using (var host = StartWebHost(maxRequestBufferSize, data, connectionAdapter, startReadingRequestBody, clientFinishedSendingRequestBody, memoryPoolFactory.Create))
|
using (var host = await StartWebHost(maxRequestBufferSize, data, connectionAdapter, startReadingRequestBody, clientFinishedSendingRequestBody, memoryPoolFactory.Create))
|
||||||
{
|
{
|
||||||
var port = host.GetPort();
|
var port = host.GetPort();
|
||||||
using (var socket = CreateSocket(port))
|
using (var socket = CreateSocket(port))
|
||||||
|
|
@ -204,6 +204,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
await AssertStreamContains(stream, $"bytesRead: {data.Length}");
|
await AssertStreamContains(stream, $"bytesRead: {data.Length}");
|
||||||
}
|
}
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
await memoryPoolFactory.WhenAllBlocksReturned(TestConstants.DefaultTimeout);
|
await memoryPoolFactory.WhenAllBlocksReturned(TestConstants.DefaultTimeout);
|
||||||
|
|
@ -224,7 +225,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
var memoryPoolFactory = new DiagnosticMemoryPoolFactory(allowLateReturn: true);
|
var memoryPoolFactory = new DiagnosticMemoryPoolFactory(allowLateReturn: true);
|
||||||
|
|
||||||
using (var host = StartWebHost(16 * 1024, data, false, startReadingRequestBody, clientFinishedSendingRequestBody, memoryPoolFactory.Create))
|
using (var host = await StartWebHost(16 * 1024, data, false, startReadingRequestBody, clientFinishedSendingRequestBody, memoryPoolFactory.Create))
|
||||||
{
|
{
|
||||||
var port = host.GetPort();
|
var port = host.GetPort();
|
||||||
using (var socket = CreateSocket(port))
|
using (var socket = CreateSocket(port))
|
||||||
|
|
@ -278,6 +279,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
// Dispose host prior to closing connection to verify the server doesn't throw during shutdown
|
// Dispose host prior to closing connection to verify the server doesn't throw during shutdown
|
||||||
// if a connection no longer has alloc and read callbacks configured.
|
// if a connection no longer has alloc and read callbacks configured.
|
||||||
|
await host.StopAsync();
|
||||||
host.Dispose();
|
host.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -287,7 +289,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await memoryPoolFactory.WhenAllBlocksReturned(TestConstants.DefaultTimeout);
|
await memoryPoolFactory.WhenAllBlocksReturned(TestConstants.DefaultTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IWebHost StartWebHost(long? maxRequestBufferSize,
|
private async Task<IWebHost> StartWebHost(long? maxRequestBufferSize,
|
||||||
byte[] expectedBody,
|
byte[] expectedBody,
|
||||||
bool useConnectionAdapter,
|
bool useConnectionAdapter,
|
||||||
TaskCompletionSource<object> startReadingRequestBody,
|
TaskCompletionSource<object> startReadingRequestBody,
|
||||||
|
|
@ -350,7 +352,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}))
|
}))
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
{
|
{
|
||||||
|
|
@ -123,6 +123,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await AssertStreamContains(stream, $"bytesRead: {contentLength}");
|
await AssertStreamContains(stream, $"bytesRead: {contentLength}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -157,13 +159,15 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
using (var client = new HttpClient())
|
using (var client = new HttpClient())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
client.DefaultRequestHeaders.Connection.Clear();
|
client.DefaultRequestHeaders.Connection.Clear();
|
||||||
client.DefaultRequestHeaders.Connection.Add("close");
|
client.DefaultRequestHeaders.Connection.Add("close");
|
||||||
|
|
||||||
var response = await client.GetAsync($"http://127.0.0.1:{host.GetPort()}/");
|
var response = await client.GetAsync($"http://127.0.0.1:{host.GetPort()}/");
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,6 +214,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
"",
|
"",
|
||||||
"");
|
"");
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,7 +225,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var connectionReset = new SemaphoreSlim(0);
|
var connectionReset = new SemaphoreSlim(0);
|
||||||
var loggedHigherThanDebug = false;
|
var loggedHigherThanDebug = false;
|
||||||
|
|
||||||
TestSink.MessageLogged += context => {
|
TestSink.MessageLogged += context =>
|
||||||
|
{
|
||||||
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
||||||
|
|
@ -258,6 +264,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// is still in flight when the connection is aborted, leading to the reset never being received
|
// is still in flight when the connection is aborted, leading to the reset never being received
|
||||||
// and therefore not logged.
|
// and therefore not logged.
|
||||||
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout));
|
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout));
|
||||||
|
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.False(loggedHigherThanDebug);
|
Assert.False(loggedHigherThanDebug);
|
||||||
|
|
@ -269,7 +277,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var connectionReset = new SemaphoreSlim(0);
|
var connectionReset = new SemaphoreSlim(0);
|
||||||
var loggedHigherThanDebug = false;
|
var loggedHigherThanDebug = false;
|
||||||
|
|
||||||
TestSink.MessageLogged += context => {
|
TestSink.MessageLogged += context =>
|
||||||
|
{
|
||||||
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
||||||
|
|
@ -316,6 +325,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// is still in flight when the connection is aborted, leading to the reset never being received
|
// is still in flight when the connection is aborted, leading to the reset never being received
|
||||||
// and therefore not logged.
|
// and therefore not logged.
|
||||||
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout));
|
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout));
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.False(loggedHigherThanDebug);
|
Assert.False(loggedHigherThanDebug);
|
||||||
|
|
@ -329,7 +339,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var connectionClosing = new SemaphoreSlim(0);
|
var connectionClosing = new SemaphoreSlim(0);
|
||||||
var loggedHigherThanDebug = false;
|
var loggedHigherThanDebug = false;
|
||||||
|
|
||||||
TestSink.MessageLogged += context => {
|
TestSink.MessageLogged += context =>
|
||||||
|
{
|
||||||
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
||||||
|
|
@ -371,6 +382,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// and therefore not logged.
|
// and therefore not logged.
|
||||||
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout), "Connection reset event should have been logged");
|
Assert.True(await connectionReset.WaitAsync(TestConstants.DefaultTimeout), "Connection reset event should have been logged");
|
||||||
connectionClosing.Release();
|
connectionClosing.Release();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.False(loggedHigherThanDebug, "Logged event should not have been higher than debug.");
|
Assert.False(loggedHigherThanDebug, "Logged event should not have been higher than debug.");
|
||||||
|
|
@ -407,7 +419,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
{
|
{
|
||||||
|
|
@ -421,6 +433,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
Assert.True(await appDone.WaitAsync(_semaphoreWaitTimeout));
|
Assert.True(await appDone.WaitAsync(_semaphoreWaitTimeout));
|
||||||
Assert.True(expectedExceptionThrown);
|
Assert.True(expectedExceptionThrown);
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -444,7 +458,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
{
|
{
|
||||||
|
|
@ -454,11 +468,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
socket.Shutdown(SocketShutdown.Send);
|
socket.Shutdown(SocketShutdown.Send);
|
||||||
await requestAborted.WaitAsync().DefaultTimeout();
|
await requestAborted.WaitAsync().DefaultTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AbortingTheConnectionSendsFIN()
|
public async Task AbortingTheConnectionSendsFIN()
|
||||||
{
|
{
|
||||||
var builder = TransportSelector.GetWebHostBuilder()
|
var builder = TransportSelector.GetWebHostBuilder()
|
||||||
.UseKestrel()
|
.UseKestrel()
|
||||||
|
|
@ -472,7 +488,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
{
|
{
|
||||||
|
|
@ -481,6 +497,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
int result = socket.Receive(new byte[32]);
|
int result = socket.Receive(new byte[32]);
|
||||||
Assert.Equal(0, result);
|
Assert.Equal(0, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -516,6 +534,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
await connectionClosedTcs.Task.DefaultTimeout();
|
await connectionClosedTcs.Task.DefaultTimeout();
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -552,6 +571,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
"",
|
"",
|
||||||
"");
|
"");
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -593,6 +613,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
// isn't guaranteed but not unexpected.
|
// isn't guaranteed but not unexpected.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -673,6 +694,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
"");
|
"");
|
||||||
await connection.WaitForConnectionClose();
|
await connection.WaitForConnectionClose();
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
await Assert.ThrowsAsync<TaskCanceledException>(async () => await readTcs.Task);
|
await Assert.ThrowsAsync<TaskCanceledException>(async () => await readTcs.Task);
|
||||||
|
|
@ -698,7 +720,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var serverClosedConnection = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var serverClosedConnection = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
var appFuncCompleted = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var appFuncCompleted = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
TestSink.MessageLogged += context => {
|
TestSink.MessageLogged += context =>
|
||||||
|
{
|
||||||
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
if (context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" &&
|
||||||
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
context.LoggerName != "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets")
|
||||||
{
|
{
|
||||||
|
|
@ -760,6 +783,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
clientClosedConnection.SetResult(null);
|
clientClosedConnection.SetResult(null);
|
||||||
|
|
||||||
await appFuncCompleted.Task.DefaultTimeout();
|
await appFuncCompleted.Task.DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
||||||
|
|
@ -783,7 +807,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await context.Request.Body.CopyToAsync(Stream.Null);;
|
await context.Request.Body.CopyToAsync(Stream.Null); ;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -812,6 +836,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
|
|
||||||
await Assert.ThrowsAnyAsync<IOException>(() => readTcs.Task).DefaultTimeout();
|
await Assert.ThrowsAnyAsync<IOException>(() => readTcs.Task).DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
||||||
|
|
@ -841,7 +866,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
using (var host = builder.Build())
|
using (var host = builder.Build())
|
||||||
using (var client = new HttpClient())
|
using (var client = new HttpClient())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
var response = await client.GetAsync($"http://{requestAddress}:{host.GetPort()}/");
|
var response = await client.GetAsync($"http://{requestAddress}:{host.GetPort()}/");
|
||||||
response.EnsureSuccessStatusCode();
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
@ -852,6 +877,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var facts = JsonConvert.DeserializeObject<JObject>(connectionFacts);
|
var facts = JsonConvert.DeserializeObject<JObject>(connectionFacts);
|
||||||
Assert.Equal(expectAddress, facts["RemoteIPAddress"].Value<string>());
|
Assert.Equal(expectAddress, facts["RemoteIPAddress"].Value<string>());
|
||||||
Assert.NotEmpty(facts["RemotePort"].Value<string>());
|
Assert.NotEmpty(facts["RemotePort"].Value<string>());
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var client = new HttpClient())
|
using (var client = new HttpClient())
|
||||||
{
|
{
|
||||||
|
|
@ -91,6 +91,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
count = await responseBody.ReadAsync(bytes, 0, bytes.Length);
|
count = await responseBody.ReadAsync(bytes, 0, bytes.Length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,7 +114,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
using (var host = hostBuilder.Build())
|
using (var host = hostBuilder.Build())
|
||||||
{
|
{
|
||||||
host.Start();
|
await host.StartAsync();
|
||||||
|
|
||||||
using (var client = new HttpClient())
|
using (var client = new HttpClient())
|
||||||
{
|
{
|
||||||
|
|
@ -132,6 +133,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
Assert.Equal(headers.GetValues(headerName).Single(), expectedValue);
|
Assert.Equal(headers.GetValues(headerName).Single(), expectedValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,6 +177,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
connectionClosed.SetResult(null);
|
connectionClosed.SetResult(null);
|
||||||
|
|
||||||
await appCompleted.Task.DefaultTimeout();
|
await appCompleted.Task.DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,6 +241,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
// RequestAborted tripped
|
// RequestAborted tripped
|
||||||
await requestAbortedWh.Task.DefaultTimeout();
|
await requestAbortedWh.Task.DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -328,6 +332,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
clientClosedConnection.SetResult(null);
|
clientClosedConnection.SetResult(null);
|
||||||
|
|
||||||
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => writeTcs.Task).DefaultTimeout();
|
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => writeTcs.Task).DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
mockKestrelTrace.Verify(t => t.ConnectionStop(It.IsAny<string>()), Times.Once());
|
||||||
|
|
@ -394,6 +399,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
|
|
||||||
// On macOS, the default 5 shutdown timeout is insufficient for the write loop to complete, so give it extra time.
|
// On macOS, the default 5 shutdown timeout is insufficient for the write loop to complete, so give it extra time.
|
||||||
await appCompletedTcs.Task.DefaultTimeout();
|
await appCompletedTcs.Task.DefaultTimeout();
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
var coreLogs = TestSink.Writes.Where(w => w.LoggerName == "Microsoft.AspNetCore.Server.Kestrel");
|
var coreLogs = TestSink.Writes.Where(w => w.LoggerName == "Microsoft.AspNetCore.Server.Kestrel");
|
||||||
|
|
@ -430,6 +436,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
connection.Reset();
|
connection.Reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
var transportLogs = TestSink.Writes.Where(w => w.LoggerName == "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" ||
|
var transportLogs = TestSink.Writes.Where(w => w.LoggerName == "Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" ||
|
||||||
|
|
@ -539,6 +546,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
sw.Stop();
|
sw.Stop();
|
||||||
logger.LogInformation("Connection was aborted after {totalMilliseconds}ms.", sw.ElapsedMilliseconds);
|
logger.LogInformation("Connection was aborted after {totalMilliseconds}ms.", sw.ElapsedMilliseconds);
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -629,6 +637,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await AssertStreamAborted(connection.Stream, chunkSize * chunks);
|
await AssertStreamAborted(connection.Stream, chunkSize * chunks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -722,6 +731,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => copyToAsyncCts.Task).DefaultTimeout();
|
await Assert.ThrowsAnyAsync<OperationCanceledException>(() => copyToAsyncCts.Task).DefaultTimeout();
|
||||||
await AssertStreamAborted(connection.Stream, responseSize);
|
await AssertStreamAborted(connection.Stream, responseSize);
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -785,6 +795,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
await AssertStreamCompleted(connection.Stream, minTotalOutputSize, targetBytesPerSecond);
|
await AssertStreamCompleted(connection.Stream, minTotalOutputSize, targetBytesPerSecond);
|
||||||
await appFuncCompleted.Task.DefaultTimeout();
|
await appFuncCompleted.Task.DefaultTimeout();
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
mockKestrelTrace.Verify(t => t.ResponseMinimumDataRateNotSatisfied(It.IsAny<string>(), It.IsAny<string>()), Times.Never());
|
mockKestrelTrace.Verify(t => t.ResponseMinimumDataRateNotSatisfied(It.IsAny<string>(), It.IsAny<string>()), Times.Never());
|
||||||
|
|
@ -867,6 +878,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
var targetBytesPerSecond = responseSize / 4;
|
var targetBytesPerSecond = responseSize / 4;
|
||||||
await AssertStreamCompleted(connection.Stream, minTotalOutputSize, targetBytesPerSecond);
|
await AssertStreamCompleted(connection.Stream, minTotalOutputSize, targetBytesPerSecond);
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
mockKestrelTrace.Verify(t => t.ResponseMinimumDataRateNotSatisfied(It.IsAny<string>(), It.IsAny<string>()), Times.Never());
|
mockKestrelTrace.Verify(t => t.ResponseMinimumDataRateNotSatisfied(It.IsAny<string>(), It.IsAny<string>()), Times.Never());
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,8 @@ namespace Interop.FunctionalTests
|
||||||
var chromeOutput = RunHeadlessChrome($"https://localhost:{host.GetPort()}/{requestSuffix}");
|
var chromeOutput = RunHeadlessChrome($"https://localhost:{host.GetPort()}/{requestSuffix}");
|
||||||
|
|
||||||
AssertExpectedResponseOrShowDebugInstructions(expectedResponse, chromeOutput);
|
AssertExpectedResponseOrShowDebugInstructions(expectedResponse, chromeOutput);
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ namespace Interop.FunctionalTests
|
||||||
await host.StartAsync();
|
await host.StartAsync();
|
||||||
|
|
||||||
H2SpecCommands.RunTest(testCase.Id, host.GetPort(), testCase.Https, Logger);
|
H2SpecCommands.RunTest(testCase.Id, host.GetPort(), testCase.Https, Logger);
|
||||||
|
|
||||||
|
await host.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
|
@ -41,6 +41,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
"",
|
"",
|
||||||
"");
|
"");
|
||||||
}
|
}
|
||||||
|
await server.StopAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue