update and enable ReadOutstanding_ReadAborted_Throws test (#56839)
authorTomas Weinfurt <tweinfurt@yahoo.com>
Thu, 5 Aug 2021 00:26:15 +0000 (17:26 -0700)
committerGitHub <noreply@github.com>
Thu, 5 Aug 2021 00:26:15 +0000 (17:26 -0700)
src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamTests.cs

index 438f836..4cd21e5 100644 (file)
@@ -504,7 +504,6 @@ namespace System.Net.Quic.Tests
         }
 
         [Fact]
-        [ActiveIssue("https://github.com/dotnet/runtime/issues/55948")]
         public async Task ReadOutstanding_ReadAborted_Throws()
         {
             // aborting doesn't work properly on mock
@@ -513,27 +512,31 @@ namespace System.Net.Quic.Tests
                 return;
             }
 
-            const int ExpectedErrorCode = 0xfffffff;
-
-            using SemaphoreSlim sem = new SemaphoreSlim(0);
+            (QuicConnection clientConnection, QuicConnection serverConnection) = await CreateConnectedQuicConnection();
+            using (clientConnection)
+            using (serverConnection)
+            {
+                byte[] buffer = new byte[1] { 42 };
+                const int ExpectedErrorCode = 0xfffffff;
 
-            await RunBidirectionalClientServer(
-                async clientStream =>
-                {
-                    await sem.WaitAsync();
-                },
-                async serverStream =>
+                QuicStream clientStream = clientConnection.OpenBidirectionalStream();
+                Task<QuicStream> t = serverConnection.AcceptStreamAsync().AsTask();
+                await TaskTimeoutExtensions.WhenAllOrAnyFailed(clientStream.WriteAsync(buffer).AsTask(), t, PassingTestTimeoutMilliseconds);
+                QuicStream serverStream = t.Result;
+                Assert.Equal(1, await serverStream.ReadAsync(buffer));
+
+                // streams are new established and in good shape.
+                using (clientStream)
+                using (serverStream)
                 {
                     Task exTask = Assert.ThrowsAsync<QuicOperationAbortedException>(() => serverStream.ReadAsync(new byte[1]).AsTask());
-
                     Assert.False(exTask.IsCompleted);
 
                     serverStream.AbortRead(ExpectedErrorCode);
 
                     await exTask;
-
-                    sem.Release();
-                });
+                }
+            }
         }
 
         [Fact]