From 4f638f8e11f827ce81c95f92a2723954826ee953 Mon Sep 17 00:00:00 2001 From: Chris Ross <Tratcher@Outlook.com> Date: Wed, 17 Jul 2019 09:19:31 -0700 Subject: [PATCH] Cleanup ClientCancellationAbortsRequest Internal/2771 (#12248) --- src/Hosting/TestHost/test/TestClientTests.cs | 26 +++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Hosting/TestHost/test/TestClientTests.cs b/src/Hosting/TestHost/test/TestClientTests.cs index 9fc257d843f..84689708a06 100644 --- a/src/Hosting/TestHost/test/TestClientTests.cs +++ b/src/Hosting/TestHost/test/TestClientTests.cs @@ -366,7 +366,7 @@ namespace Microsoft.AspNetCore.TestHost public async Task ClientDisposalAbortsRequest() { // Arrange - TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); + var tcs = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously); RequestDelegate appDelegate = async ctx => { // Write Headers @@ -399,30 +399,26 @@ namespace Microsoft.AspNetCore.TestHost [Fact] public async Task ClientCancellationAbortsRequest() { - // Arrange - TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); - RequestDelegate appDelegate = async ctx => + var tcs = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously); + var builder = new WebHostBuilder().Configure(app => app.Run(async ctx => { - var sem = new SemaphoreSlim(0); try { - await sem.WaitAsync(ctx.RequestAborted); + await Task.Delay(TimeSpan.FromSeconds(30), ctx.RequestAborted); + tcs.SetResult(0); } catch (Exception e) { tcs.SetException(e); + return; } - }; - - // Act - var builder = new WebHostBuilder().Configure(app => app.Run(appDelegate)); - var server = new TestServer(builder); - var client = server.CreateClient(); - var cts = new CancellationTokenSource(); - cts.CancelAfter(500); + throw new InvalidOperationException("The request was not aborted"); + })); + using var server = new TestServer(builder); + using var client = server.CreateClient(); + using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1)); var response = await Assert.ThrowsAnyAsync<OperationCanceledException>(() => client.GetAsync("http://localhost:12345", cts.Token)); - // Assert var exception = await Assert.ThrowsAnyAsync<OperationCanceledException>(async () => await tcs.Task); } -- GitLab