From ba1f86d5bf9689ea1a781c1f701093491e2f9790 Mon Sep 17 00:00:00 2001 From: Justin Kotalik Date: Tue, 30 Apr 2019 08:49:45 -0700 Subject: [PATCH] Make sure read is async first before cancelling. (#9832) --- .../IIS/test/IIS.Tests/ClientDisconnectTests.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs b/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs index 908675b6d3..16586947a1 100644 --- a/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs @@ -138,7 +138,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests } [ConditionalFact] - public async Task WriterThrowsCancelledException() + public async Task WriterThrowsCanceledException() { var requestStartedCompletionSource = CreateTaskCompletionSource(); var requestCompletedCompletionSource = CreateTaskCompletionSource(); @@ -179,10 +179,10 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests } [ConditionalFact] - [Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/1798", FlakyOn.All)] - public async Task ReaderThrowsCancelledException() + [Repeat] + public async Task ReaderThrowsCanceledException() { - var requestStartedCompletionSource = CreateTaskCompletionSource(); + var readIsAsyncCompletionSource = CreateTaskCompletionSource(); var requestCompletedCompletionSource = CreateTaskCompletionSource(); Exception exception = null; @@ -191,10 +191,11 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests var data = new byte[1024]; using (var testServer = await TestServer.Create(async ctx => { - requestStartedCompletionSource.SetResult(true); try { - await ctx.Request.Body.ReadAsync(data, cancellationTokenSource.Token); + var task = ctx.Request.Body.ReadAsync(data, cancellationTokenSource.Token); + readIsAsyncCompletionSource.SetResult(true); + await task; } catch (Exception e) { @@ -207,7 +208,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests using (var connection = testServer.CreateConnection()) { await SendContentLength1Post(connection); - await requestStartedCompletionSource.Task.DefaultTimeout(); + await readIsAsyncCompletionSource.Task.DefaultTimeout(); cancellationTokenSource.Cancel(); await requestCompletedCompletionSource.Task.DefaultTimeout(); }