From 748afb1f65d361f964588a8e0d6540655d6068e9 Mon Sep 17 00:00:00 2001 From: Chris Ross Date: Mon, 16 Oct 2017 10:03:20 -0700 Subject: [PATCH] #270 Fix hang in SendFile tests --- .../Listener/ResponseSendFileTests.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/Microsoft.AspNetCore.Server.HttpSys.FunctionalTests/Listener/ResponseSendFileTests.cs b/test/Microsoft.AspNetCore.Server.HttpSys.FunctionalTests/Listener/ResponseSendFileTests.cs index a24bd3d4ac..cf7bab0591 100644 --- a/test/Microsoft.AspNetCore.Server.HttpSys.FunctionalTests/Listener/ResponseSendFileTests.cs +++ b/test/Microsoft.AspNetCore.Server.HttpSys.FunctionalTests/Listener/ResponseSendFileTests.cs @@ -510,7 +510,7 @@ namespace Microsoft.AspNetCore.Server.HttpSys.Listener } } - [ConditionalFact(Skip = "Tests hanging: https://github.com/aspnet/HttpSysServer/issues/270")] + [ConditionalFact] public async Task ResponseSendFileExceptions_ClientDisconnectsBeforeSecondSend_SendThrows() { string address; @@ -524,10 +524,14 @@ namespace Microsoft.AspNetCore.Server.HttpSys.Listener context = await server.AcceptAsync(Utilities.DefaultTimeout); // First write sends headers - await context.Response.SendFileAsync(AbsoluteFilePath, 0, null, CancellationToken.None); + var sendFileTask = context.Response.SendFileAsync(AbsoluteFilePath, 0, null, CancellationToken.None); var response = await responseTask; response.EnsureSuccessStatusCode(); + // Drain data from the connection so that SendFileAsync can complete. + var bufferTask = response.Content.LoadIntoBufferAsync(); + + await sendFileTask; response.Dispose(); } @@ -544,7 +548,7 @@ namespace Microsoft.AspNetCore.Server.HttpSys.Listener } } - [ConditionalFact(Skip = "Tests hanging: https://github.com/aspnet/WebListener/issues/270")] + [ConditionalFact] public async Task ResponseSendFile_ClientDisconnectsBeforeSecondSend_SendCompletesSilently() { string address; @@ -557,10 +561,14 @@ namespace Microsoft.AspNetCore.Server.HttpSys.Listener context = await server.AcceptAsync(Utilities.DefaultTimeout); // First write sends headers - await context.Response.SendFileAsync(AbsoluteFilePath, 0, null, CancellationToken.None); + var sendFileTask = context.Response.SendFileAsync(AbsoluteFilePath, 0, null, CancellationToken.None); var response = await responseTask; response.EnsureSuccessStatusCode(); + // Drain data from the connection so that SendFileAsync can complete. + var bufferTask = response.Content.LoadIntoBufferAsync(); + + await sendFileTask; response.Dispose(); }