From de6da7c757e475cae9eeb5c08f05af62fedd57c8 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Mon, 17 Apr 2017 11:33:27 -0700 Subject: [PATCH] Add ConfigureAwait(false) to test helpers (#1699) * Add ConfigureAwait(false) to test helpers --- .../LoggingConnectionAdapterTests.cs | 2 +- .../MaxRequestBufferSizeTests.cs | 6 +-- test/shared/HttpClientSlim.cs | 41 ++++++++++--------- test/shared/TestConnection.cs | 26 ++++++------ 4 files changed, 38 insertions(+), 37 deletions(-) diff --git a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/LoggingConnectionAdapterTests.cs b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/LoggingConnectionAdapterTests.cs index 2b579ce3f0..4f77ca3a9c 100644 --- a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/LoggingConnectionAdapterTests.cs +++ b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/LoggingConnectionAdapterTests.cs @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests using (host) { - host.Start(); + await host.StartAsync(); var response = await HttpClientSlim.GetStringAsync($"https://localhost:{host.GetPort()}/", validateCertificate: false) .TimeoutAfter(TimeSpan.FromSeconds(10)); diff --git a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs index 2b9c7dcd46..97d2fe4553 100644 --- a/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs +++ b/test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/MaxRequestBufferSizeTests.cs @@ -108,7 +108,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests while (bytesWritten < data.Length) { var size = Math.Min(data.Length - bytesWritten, maxSendSize); - await stream.WriteAsync(data, bytesWritten, size); + await stream.WriteAsync(data, bytesWritten, size).ConfigureAwait(false); bytesWritten += size; lastBytesWritten = DateTime.Now; } @@ -200,7 +200,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests while (bytesWritten < data.Length) { var size = Math.Min(data.Length - bytesWritten, maxSendSize); - await stream.WriteAsync(data, bytesWritten, size); + await stream.WriteAsync(data, bytesWritten, size).ConfigureAwait(false); bytesWritten += size; lastBytesWritten = DateTime.Now; } @@ -336,7 +336,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests { foreach (var line in _requestLines) { - await writer.WriteAsync(line); + await writer.WriteAsync(line).ConfigureAwait(false); } } } diff --git a/test/shared/HttpClientSlim.cs b/test/shared/HttpClientSlim.cs index 02cf1880fe..a85b03aa40 100644 --- a/test/shared/HttpClientSlim.cs +++ b/test/shared/HttpClientSlim.cs @@ -16,26 +16,26 @@ namespace Microsoft.AspNetCore.Testing // Lightweight version of HttpClient implemented using Socket and SslStream public static class HttpClientSlim { - public static Task GetStringAsync(string requestUri, bool validateCertificate = true) - => GetStringAsync(new Uri(requestUri), validateCertificate); + public static async Task GetStringAsync(string requestUri, bool validateCertificate = true) + => await GetStringAsync(new Uri(requestUri), validateCertificate).ConfigureAwait(false); public static async Task GetStringAsync(Uri requestUri, bool validateCertificate = true) { - using (var stream = await GetStream(requestUri, validateCertificate)) + using (var stream = await GetStream(requestUri, validateCertificate).ConfigureAwait(false)) { using (var writer = new StreamWriter(stream, Encoding.ASCII, bufferSize: 1024, leaveOpen: true)) { - await writer.WriteAsync($"GET {requestUri.PathAndQuery} HTTP/1.0\r\n"); - await writer.WriteAsync($"Host: {requestUri.Authority}\r\n"); - await writer.WriteAsync("\r\n"); + await writer.WriteAsync($"GET {requestUri.PathAndQuery} HTTP/1.0\r\n").ConfigureAwait(false); + await writer.WriteAsync($"Host: {requestUri.Authority}\r\n").ConfigureAwait(false); + await writer.WriteAsync("\r\n").ConfigureAwait(false); } - return await ReadResponse(stream); + return await ReadResponse(stream).ConfigureAwait(false); } } - public static Task PostAsync(string requestUri, HttpContent content, bool validateCertificate = true) - => PostAsync(new Uri(requestUri), content, validateCertificate); + public static async Task PostAsync(string requestUri, HttpContent content, bool validateCertificate = true) + => await PostAsync(new Uri(requestUri), content, validateCertificate).ConfigureAwait(false); public static async Task PostAsync(Uri requestUri, HttpContent content, bool validateCertificate = true) { @@ -43,16 +43,16 @@ namespace Microsoft.AspNetCore.Testing { using (var writer = new StreamWriter(stream, Encoding.ASCII, bufferSize: 1024, leaveOpen: true)) { - await writer.WriteAsync($"POST {requestUri.PathAndQuery} HTTP/1.0\r\n"); - await writer.WriteAsync($"Host: {requestUri.Authority}\r\n"); - await writer.WriteAsync($"Content-Type: {content.Headers.ContentType}\r\n"); - await writer.WriteAsync($"Content-Length: {content.Headers.ContentLength}\r\n"); - await writer.WriteAsync("\r\n"); + await writer.WriteAsync($"POST {requestUri.PathAndQuery} HTTP/1.0\r\n").ConfigureAwait(false); + await writer.WriteAsync($"Host: {requestUri.Authority}\r\n").ConfigureAwait(false); + await writer.WriteAsync($"Content-Type: {content.Headers.ContentType}\r\n").ConfigureAwait(false); + await writer.WriteAsync($"Content-Length: {content.Headers.ContentLength}\r\n").ConfigureAwait(false); + await writer.WriteAsync("\r\n").ConfigureAwait(false); } - await content.CopyToAsync(stream); + await content.CopyToAsync(stream).ConfigureAwait(false); - return await ReadResponse(stream); + return await ReadResponse(stream).ConfigureAwait(false); } } @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Testing using (var reader = new StreamReader(stream, Encoding.ASCII, detectEncodingFromByteOrderMarks: true, bufferSize: 1024, leaveOpen: true)) { - var response = await reader.ReadToEndAsync(); + var response = await reader.ReadToEndAsync().ConfigureAwait(false); var status = GetStatus(response); new HttpResponseMessage(status).EnsureSuccessStatusCode(); @@ -83,15 +83,16 @@ namespace Microsoft.AspNetCore.Testing private static async Task GetStream(Uri requestUri, bool validateCertificate) { var socket = await GetSocket(requestUri); - Stream stream = new NetworkStream(socket, ownsSocket: true); + var stream = new NetworkStream(socket, ownsSocket: true); if (requestUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase)) { var sslStream = new SslStream(stream, leaveInnerStreamOpen: false, userCertificateValidationCallback: validateCertificate ? null : (RemoteCertificateValidationCallback)((a, b, c, d) => true)); + await sslStream.AuthenticateAsClientAsync(requestUri.Host, clientCertificates: null, enabledSslProtocols: SslProtocols.Tls11 | SslProtocols.Tls12, - checkCertificateRevocation: validateCertificate); + checkCertificateRevocation: validateCertificate).ConfigureAwait(false); return sslStream; } else @@ -111,7 +112,7 @@ namespace Microsoft.AspNetCore.Testing // Must use static ConnectAsync(), since instance Connect() does not support DNS names on OSX/Linux. if (Socket.ConnectAsync(SocketType.Stream, ProtocolType.Tcp, socketArgs)) { - await tcs.Task; + await tcs.Task.ConfigureAwait(false); } var socket = socketArgs.ConnectSocket; diff --git a/test/shared/TestConnection.cs b/test/shared/TestConnection.cs index b3b377118d..0285a58e46 100644 --- a/test/shared/TestConnection.cs +++ b/test/shared/TestConnection.cs @@ -52,9 +52,9 @@ namespace Microsoft.AspNetCore.Testing { var text = string.Join("\r\n", lines); var writer = new StreamWriter(_stream, Encoding.GetEncoding("iso-8859-1")); - await writer.WriteAsync(text); - writer.Flush(); - _stream.Flush(); + await writer.WriteAsync(text).ConfigureAwait(false); + await writer.FlushAsync().ConfigureAwait(false); + await _stream.FlushAsync().ConfigureAwait(false); } public async Task Send(params string[] lines) @@ -64,13 +64,13 @@ namespace Microsoft.AspNetCore.Testing for (var index = 0; index < text.Length; index++) { var ch = text[index]; - await writer.WriteAsync(ch); - await writer.FlushAsync(); + writer.Write(ch); + await writer.FlushAsync().ConfigureAwait(false); // Re-add delay to help find socket input consumption bugs more consistently //await Task.Delay(TimeSpan.FromMilliseconds(5)); } - writer.Flush(); - _stream.Flush(); + await writer.FlushAsync().ConfigureAwait(false); + await _stream.FlushAsync().ConfigureAwait(false); } public async Task Receive(params string[] lines) @@ -86,7 +86,7 @@ namespace Microsoft.AspNetCore.Testing { task = task.TimeoutAfter(Timeout); } - var count = await task; + var count = await task.ConfigureAwait(false); if (count == 0) { break; @@ -99,22 +99,22 @@ namespace Microsoft.AspNetCore.Testing public async Task ReceiveEnd(params string[] lines) { - await Receive(lines); + await Receive(lines).ConfigureAwait(false); _socket.Shutdown(SocketShutdown.Send); var ch = new char[128]; - var count = await _reader.ReadAsync(ch, 0, 128).TimeoutAfter(Timeout); + var count = await _reader.ReadAsync(ch, 0, 128).TimeoutAfter(Timeout).ConfigureAwait(false); var text = new string(ch, 0, count); Assert.Equal("", text); } public async Task ReceiveForcedEnd(params string[] lines) { - await Receive(lines); + await Receive(lines).ConfigureAwait(false); try { var ch = new char[128]; - var count = await _reader.ReadAsync(ch, 0, 128).TimeoutAfter(Timeout); + var count = await _reader.ReadAsync(ch, 0, 128).TimeoutAfter(Timeout).ConfigureAwait(false); var text = new string(ch, 0, count); Assert.Equal("", text); } @@ -139,7 +139,7 @@ namespace Microsoft.AspNetCore.Testing { Assert.True(task.Wait(4000), "timeout"); } - var count = await task; + var count = await task.ConfigureAwait(false); if (count == 0) { break;