From afe97b7f40bc1fd94097a8b8b3336c7e095a4f64 Mon Sep 17 00:00:00 2001 From: ManickaP Date: Thu, 10 Jul 2025 10:49:39 +0200 Subject: [PATCH 1/2] Wait with connection disposal on both sides. --- ...ClientHandlerTest.MaxResponseHeadersLength.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs index 0e8cfc240ceb94..9e2b988b99e635 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs @@ -73,7 +73,7 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => [InlineData(15)] public async Task LargeSingleHeader_ThrowsException(int maxResponseHeadersLength) { - var semaphore = new SemaphoreSlim(0); + var ce = new CountdownEvent(2); using HttpClientHandler handler = CreateHttpClientHandler(); handler.MaxResponseHeadersLength = maxResponseHeadersLength; @@ -86,7 +86,8 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => { Assert.Contains((handler.MaxResponseHeadersLength * 1024).ToString(), e.ToString()); } - await semaphore.WaitAsync(); + ce.Signal(); + ce.Wait(TestHelper.PassingTestTimeout); }, async server => { @@ -105,7 +106,8 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => #endif finally { - semaphore.Release(); + ce.Signal(); + ce.Wait(TestHelper.PassingTestTimeout); await connection.DisposeAsync(); } }); @@ -119,7 +121,7 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => [InlineData(int.MaxValue / 800, 100 * 1024)] // Capped at int.MaxValue public async Task ThresholdExceeded_ThrowsException(int? maxResponseHeadersLength, int headersLengthEstimate) { - var semaphore = new SemaphoreSlim(0); + var ce = new CountdownEvent(2); await LoopbackServerFactory.CreateClientAndServerAsync(async uri => { using HttpClientHandler handler = CreateHttpClientHandler(); @@ -143,7 +145,8 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => Assert.Contains((handler.MaxResponseHeadersLength * 1024).ToString(), e.ToString()); } } - await semaphore.WaitAsync(); + ce.Signal(); + ce.Wait(TestHelper.PassingTestTimeout); }, async server => { @@ -168,7 +171,8 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => #endif finally { - semaphore.Release(); + ce.Signal(); + ce.Wait(TestHelper.PassingTestTimeout); await connection.DisposeAsync(); } }); From d8c9e27b90c4438277eb507061925caa41f96688 Mon Sep 17 00:00:00 2001 From: ManickaP Date: Fri, 11 Jul 2025 09:24:34 +0200 Subject: [PATCH 2/2] Feedback --- .../Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs index 9e2b988b99e635..7fee0affc047c3 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.MaxResponseHeadersLength.cs @@ -73,7 +73,7 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => [InlineData(15)] public async Task LargeSingleHeader_ThrowsException(int maxResponseHeadersLength) { - var ce = new CountdownEvent(2); + using var ce = new CountdownEvent(2); using HttpClientHandler handler = CreateHttpClientHandler(); handler.MaxResponseHeadersLength = maxResponseHeadersLength; @@ -121,7 +121,7 @@ await LoopbackServerFactory.CreateClientAndServerAsync(async uri => [InlineData(int.MaxValue / 800, 100 * 1024)] // Capped at int.MaxValue public async Task ThresholdExceeded_ThrowsException(int? maxResponseHeadersLength, int headersLengthEstimate) { - var ce = new CountdownEvent(2); + using var ce = new CountdownEvent(2); await LoopbackServerFactory.CreateClientAndServerAsync(async uri => { using HttpClientHandler handler = CreateHttpClientHandler();