diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs index f059f28d577199..06f32320a17f14 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicConnectionTests.cs @@ -405,14 +405,14 @@ public async Task GetStreamCapacity_OpenCloseStreamCanceledIntoNegative_CountsCo Assert.Equal(QuicDefaults.DefaultServerMaxInboundUnidirectionalStreams, unidiTotal); // Open # of streams up to the capacity. - List clientStreams = (await Task.WhenAll(Enumerable.Range(0, unidirectional ? QuicDefaults.DefaultServerMaxInboundUnidirectionalStreams : QuicDefaults.DefaultServerMaxInboundBidirectionalStreams) - .Select(i => clientConnection.OpenOutboundStreamAsync(unidirectional ? QuicStreamType.Unidirectional : QuicStreamType.Bidirectional).AsTask()))) - .ToList(); + QuicStream[] clientStreams = (await Task.WhenAll(Enumerable.Range(0, unidirectional ? QuicDefaults.DefaultServerMaxInboundUnidirectionalStreams : QuicDefaults.DefaultServerMaxInboundBidirectionalStreams) + .Select(i => clientConnection.OpenOutboundStreamAsync(unidirectional ? QuicStreamType.Unidirectional : QuicStreamType.Bidirectional).AsTask()))) + .ToArray(); // Open another # of streams up to 2x capacity all together. CancellationTokenSource cts = new CancellationTokenSource(); - List> pendingClientStreams = Enumerable.Range(0, unidirectional ? QuicDefaults.DefaultServerMaxInboundUnidirectionalStreams : QuicDefaults.DefaultServerMaxInboundBidirectionalStreams) - .Select(i => clientConnection.OpenOutboundStreamAsync(unidirectional ? QuicStreamType.Unidirectional : QuicStreamType.Bidirectional, cts.Token).AsTask()) - .ToList(); + Task[] pendingClientStreams = Enumerable.Range(0, unidirectional ? QuicDefaults.DefaultServerMaxInboundUnidirectionalStreams : QuicDefaults.DefaultServerMaxInboundBidirectionalStreams) + .Select(i => clientConnection.OpenOutboundStreamAsync(unidirectional ? QuicStreamType.Unidirectional : QuicStreamType.Bidirectional, cts.Token).AsTask()) + .ToArray(); foreach (var task in pendingClientStreams) { Assert.False(task.IsCompleted); @@ -428,11 +428,11 @@ public async Task GetStreamCapacity_OpenCloseStreamCanceledIntoNegative_CountsCo await clientStream.DisposeAsync(); await (await serverConnection.AcceptInboundStreamAsync()).DisposeAsync(); } - clientStreams.Clear(); Assert.False(streamsAvailableFired.CurrentCount > 0); // Pending streams should get cancelled and disposing the streams now should lead to stream capacity increments. bool first = true; // The stream capacity is cumulatively reported only after the STREAMS_AVAILABLE reached over 0. + OperationCanceledException oce = await Assert.ThrowsAsync(() => Task.WhenAll(pendingClientStreams)); foreach (var cancelledStream in pendingClientStreams) { Assert.True(cancelledStream.IsCanceled); diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs index 2a4eb4db68a80f..d8e55cd4f00836 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicTestBase.cs @@ -211,7 +211,7 @@ internal ValueTask CreateQuicListener(IPEndPoint endpoint, Action< } QuicConnection clientConnection = null; - ValueTask serverTask = listener.AcceptConnectionAsync(); + Task serverTask = listener.AcceptConnectionAsync().AsTask(); try { while (retry > 0) @@ -250,6 +250,10 @@ internal ValueTask CreateQuicListener(IPEndPoint endpoint, Action< { await clientConnection.DisposeAsync(); } + if (serverTask.IsCompleted) + { + _output.WriteLine($"Server {(serverTask.IsCompletedSuccessfully ? "succeeded" : "failed with " + serverTask.Exception)}"); + } throw; } }