From 14146e66ee77a9dc478717a7dad8a6f90d6ea644 Mon Sep 17 00:00:00 2001 From: Geoffrey Kizer Date: Thu, 5 Nov 2020 00:27:53 -0800 Subject: [PATCH] fix stream conformance tests for mock provider --- .../System/Net/Quic/Implementations/Mock/MockStream.cs | 9 ++++++--- .../QuicStreamConnectedStreamConformanceTests.cs | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockStream.cs b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockStream.cs index d96db6c650a132..8ce79f6dd22d5f 100644 --- a/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockStream.cs +++ b/src/libraries/System.Net.Quic/src/System/Net/Quic/Implementations/Mock/MockStream.cs @@ -40,7 +40,7 @@ internal override long StreamId private StreamBuffer? ReadStreamBuffer => _isInitiator ? _streamState._inboundStreamBuffer : _streamState._outboundStreamBuffer; - internal override bool CanRead => ReadStreamBuffer is not null; + internal override bool CanRead => !_disposed && ReadStreamBuffer is not null; internal override int Read(Span buffer) { @@ -80,7 +80,7 @@ internal override async ValueTask ReadAsync(Memory buffer, Cancellati private StreamBuffer? WriteStreamBuffer => _isInitiator ? _streamState._outboundStreamBuffer : _streamState._inboundStreamBuffer; - internal override bool CanWrite => WriteStreamBuffer is not null; + internal override bool CanWrite => !_disposed && WriteStreamBuffer is not null; internal override void Write(ReadOnlySpan buffer) { @@ -199,8 +199,9 @@ public override void Dispose() { if (!_disposed) { - _disposed = true; + Shutdown(); + _disposed = true; } } @@ -208,6 +209,8 @@ public override ValueTask DisposeAsync() { if (!_disposed) { + Shutdown(); + _disposed = true; } diff --git a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamConnectedStreamConformanceTests.cs b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamConnectedStreamConformanceTests.cs index eb4a2167cad56d..5fc894bf82f6bb 100644 --- a/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamConnectedStreamConformanceTests.cs +++ b/src/libraries/System.Net.Quic/tests/FunctionalTests/QuicStreamConnectedStreamConformanceTests.cs @@ -20,10 +20,7 @@ public sealed class MockQuicStreamConformanceTests : QuicStreamConformanceTests public sealed class MsQuicQuicStreamConformanceTests : QuicStreamConformanceTests { protected override QuicImplementationProvider Provider => QuicImplementationProviders.MsQuic; - } - public abstract class QuicStreamConformanceTests : ConnectedStreamConformanceTests - { // TODO: These are all hanging, likely due to Stream close behavior. [ActiveIssue("https://github.com/dotnet/runtime/issues/756")] public override Task Read_Eof_Returns0(ReadWriteMode mode, bool dataAvailableFirst) => base.Read_Eof_Returns0(mode, dataAvailableFirst); @@ -38,6 +35,10 @@ public abstract class QuicStreamConformanceTests : ConnectedStreamConformanceTes [ActiveIssue("https://github.com/dotnet/runtime/issues/756")] public override Task Parallel_ReadWriteMultipleStreamsConcurrently() => base.Parallel_ReadWriteMultipleStreamsConcurrently(); + } + + public abstract class QuicStreamConformanceTests : ConnectedStreamConformanceTests + { protected abstract QuicImplementationProvider Provider { get; } protected override async Task CreateConnectedStreamsAsync()