From 990e2a8dc40ee8f394f930ee456520ffa9c0b7c6 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Thu, 23 Feb 2017 08:04:43 -0800 Subject: [PATCH] Use pass through connection adapter instead of ssl for max buffer size tests (#1391) --- .../MaxRequestBufferSizeTests.cs | 29 ++++--------------- .../PassThroughConnectionAdapter.cs | 2 +- 2 files changed, 7 insertions(+), 24 deletions(-) rename test/{Microsoft.AspNetCore.Server.KestrelTests/TestHelpers => shared}/PassThroughConnectionAdapter.cs (94%) diff --git a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs index cfbb6cc2ce..3c09271a4f 100644 --- a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs +++ b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs @@ -71,7 +71,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests [Theory] [MemberData(nameof(LargeUploadData))] - public async Task LargeUpload(long? maxRequestBufferSize, bool ssl, bool expectPause) + public async Task LargeUpload(long? maxRequestBufferSize, bool connectionAdapter, bool expectPause) { // Parameters var data = new byte[_dataLength]; @@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests var clientFinishedSendingRequestBody = new ManualResetEvent(false); var lastBytesWritten = DateTime.MaxValue; - using (var host = StartWebHost(maxRequestBufferSize, data, ssl, startReadingRequestBody, clientFinishedSendingRequestBody)) + using (var host = StartWebHost(maxRequestBufferSize, data, connectionAdapter, startReadingRequestBody, clientFinishedSendingRequestBody)) { var port = host.GetPort(); using (var socket = CreateSocket(port)) - using (var stream = await CreateStreamAsync(socket, ssl, host.GetHost(ssl))) + using (var stream = new NetworkStream(socket)) { await WritePostRequestHeaders(stream, data.Length); @@ -165,7 +165,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests } } - private static IWebHost StartWebHost(long? maxRequestBufferSize, byte[] expectedBody, bool useSsl, ManualResetEvent startReadingRequestBody, + private static IWebHost StartWebHost(long? maxRequestBufferSize, byte[] expectedBody, bool useConnectionAdapter, ManualResetEvent startReadingRequestBody, ManualResetEvent clientFinishedSendingRequestBody) { var host = new WebHostBuilder() @@ -173,9 +173,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests { options.Listen(new IPEndPoint(IPAddress.Loopback, 0), listenOptions => { - if (useSsl) + if (useConnectionAdapter) { - listenOptions.UseHttps(TestResources.TestCertificatePath, "testPassword"); + listenOptions.ConnectionAdapters.Add(new PassThroughConnectionAdapter()); } }); @@ -251,22 +251,5 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests await writer.WriteAsync("\r\n"); } } - - private static async Task CreateStreamAsync(Socket socket, bool ssl, string targetHost) - { - var networkStream = new NetworkStream(socket); - if (ssl) - { - var sslStream = new SslStream(networkStream, leaveInnerStreamOpen: false, - userCertificateValidationCallback: (a, b, c, d) => true); - await sslStream.AuthenticateAsClientAsync(targetHost, clientCertificates: null, - enabledSslProtocols: SslProtocols.Tls11 | SslProtocols.Tls12, checkCertificateRevocation: false); - return sslStream; - } - else - { - return networkStream; - } - } } } diff --git a/test/Microsoft.AspNetCore.Server.KestrelTests/TestHelpers/PassThroughConnectionAdapter.cs b/test/shared/PassThroughConnectionAdapter.cs similarity index 94% rename from test/Microsoft.AspNetCore.Server.KestrelTests/TestHelpers/PassThroughConnectionAdapter.cs rename to test/shared/PassThroughConnectionAdapter.cs index 2494e4bc5d..faa688a194 100644 --- a/test/Microsoft.AspNetCore.Server.KestrelTests/TestHelpers/PassThroughConnectionAdapter.cs +++ b/test/shared/PassThroughConnectionAdapter.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Adapter; using Microsoft.AspNetCore.Server.Kestrel.Adapter.Internal; using Microsoft.AspNetCore.Testing; -namespace Microsoft.AspNetCore.Server.KestrelTests.TestHelpers +namespace Microsoft.AspNetCore.Testing { public class PassThroughConnectionAdapter : IConnectionAdapter {