Add ConfigureAwait(false) to test helpers (#1699)

* Add ConfigureAwait(false) to test helpers
This commit is contained in:
David Fowler 2017-04-17 11:33:27 -07:00 committed by Stephen Halter
parent 85d883456b
commit de6da7c757
4 changed files with 38 additions and 37 deletions

View File

@ -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));

View File

@ -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);
}
}
}

View File

@ -16,26 +16,26 @@ namespace Microsoft.AspNetCore.Testing
// Lightweight version of HttpClient implemented using Socket and SslStream
public static class HttpClientSlim
{
public static Task<string> GetStringAsync(string requestUri, bool validateCertificate = true)
=> GetStringAsync(new Uri(requestUri), validateCertificate);
public static async Task<string> GetStringAsync(string requestUri, bool validateCertificate = true)
=> await GetStringAsync(new Uri(requestUri), validateCertificate).ConfigureAwait(false);
public static async Task<string> 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<string> PostAsync(string requestUri, HttpContent content, bool validateCertificate = true)
=> PostAsync(new Uri(requestUri), content, validateCertificate);
public static async Task<string> PostAsync(string requestUri, HttpContent content, bool validateCertificate = true)
=> await PostAsync(new Uri(requestUri), content, validateCertificate).ConfigureAwait(false);
public static async Task<string> 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<Stream> 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;

View File

@ -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;