From b897983aa0347bc9713621f4e1ae016eccfb7fcb Mon Sep 17 00:00:00 2001 From: "Ahmet Ibrahim Aksoy (from Dev Box)" Date: Wed, 4 Oct 2023 21:10:59 +0200 Subject: [PATCH 1/4] Change test server from external server to never responding loopback server --- .../FunctionalTests/WinHttpHandlerTest.cs | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs index 5ac9a78702cbab..04e98767b55574 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs @@ -80,7 +80,6 @@ public async Task GetAsync_RedirectResponseHasCookie_CookieSentToFinalUri( [OuterLoop] [Fact] - [OuterLoop] public async Task SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException() { var handler = new WinHttpHandler(); @@ -97,19 +96,36 @@ public async Task SendAsync_SlowServerAndCancel_ThrowsTaskCanceledException() } } - [ActiveIssue("https://github.com/dotnet/runtime/issues/20675")] [OuterLoop] [Fact] - [OuterLoop] - public void SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException() + public async void SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsHttpRequestException() { var handler = new WinHttpHandler(); using (var client = new HttpClient(handler)) { - Task t = client.GetAsync(SlowServer); + var triggerResponseWrite = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var triggerRequestWait = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - AggregateException ag = Assert.Throws(() => t.Wait()); - Assert.IsType(ag.InnerException); + await LoopbackServer.CreateServerAsync(async (server, url) => + { + Task serverTask = server.AcceptConnectionAsync(async connection => + { + await connection.SendResponseAsync($"HTTP/1.1 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 16000\r\n\r\n"); + + triggerRequestWait.SetResult(true); + await triggerResponseWrite.Task; + }); + + AggregateException ag = await Assert.ThrowsAsync(async () => + { + Task t = client.GetAsync(url); + await triggerRequestWait.Task; + t.Wait(); + }); + Assert.IsType(ag.InnerException); + + triggerResponseWrite.SetResult(true); + }); } } From 01d679da3b1accfe5a2d18d28181c672643262d1 Mon Sep 17 00:00:00 2001 From: "Ahmet Ibrahim Aksoy (from Dev Box)" Date: Thu, 5 Oct 2023 12:17:14 +0200 Subject: [PATCH 2/4] Review feedback --- .../tests/FunctionalTests/WinHttpHandlerTest.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs index 04e98767b55574..0a329386fd0fde 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs @@ -103,8 +103,8 @@ public async void SendAsync_SlowServerRespondsAfterDefaultReceiveTimeout_ThrowsH var handler = new WinHttpHandler(); using (var client = new HttpClient(handler)) { - var triggerResponseWrite = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - var triggerRequestWait = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var triggerResponseWrite = new TaskCompletionSource(); + var triggerRequestWait = new TaskCompletionSource(); await LoopbackServer.CreateServerAsync(async (server, url) => { @@ -116,13 +116,16 @@ await LoopbackServer.CreateServerAsync(async (server, url) => await triggerResponseWrite.Task; }); - AggregateException ag = await Assert.ThrowsAsync(async () => + HttpRequestException ex = await Assert.ThrowsAsync(async () => { Task t = client.GetAsync(url); await triggerRequestWait.Task; - t.Wait(); + var message = await t; + var _ = message.Content; }); - Assert.IsType(ag.InnerException); + Assert.IsType(ex.InnerException); + Assert.NotNull(ex.InnerException.InnerException); + Assert.Contains("The operation timed out", ex.InnerException.InnerException.Message); triggerResponseWrite.SetResult(true); }); From 01f908c59adcb5be7e81e23d430aa5dd7e733973 Mon Sep 17 00:00:00 2001 From: "Ahmet Ibrahim Aksoy (from Dev Box)" Date: Fri, 6 Oct 2023 13:35:06 +0200 Subject: [PATCH 3/4] Delete date from response --- .../tests/FunctionalTests/WinHttpHandlerTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs index 0a329386fd0fde..917f000092ac18 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs @@ -110,7 +110,7 @@ await LoopbackServer.CreateServerAsync(async (server, url) => { Task serverTask = server.AcceptConnectionAsync(async connection => { - await connection.SendResponseAsync($"HTTP/1.1 200 OK\r\nDate: {DateTimeOffset.UtcNow:R}\r\nContent-Length: 16000\r\n\r\n"); + await connection.SendResponseAsync($"HTTP/1.1 200 OK\r\nContent-Length: 16000\r\n\r\n"); triggerRequestWait.SetResult(true); await triggerResponseWrite.Task; From 7e02e4abb4bcf335443b231d23901997269e77f8 Mon Sep 17 00:00:00 2001 From: "Ahmet Ibrahim Aksoy (from Dev Box)" Date: Fri, 6 Oct 2023 19:32:01 +0200 Subject: [PATCH 4/4] Delete get content explicitly --- .../tests/FunctionalTests/WinHttpHandlerTest.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs index 917f000092ac18..f204e21536beef 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs @@ -120,8 +120,7 @@ await LoopbackServer.CreateServerAsync(async (server, url) => { Task t = client.GetAsync(url); await triggerRequestWait.Task; - var message = await t; - var _ = message.Content; + var _ = await t; }); Assert.IsType(ex.InnerException); Assert.NotNull(ex.InnerException.InnerException);