Skip to content

Commit 1e38407

Browse files
authored
Merge pull request #769 from dotnet/fixDblLogging
Fix double-logging in `MonitoringStream`
2 parents 86a8985 + 5bf9737 commit 1e38407

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

src/Nerdbank.Streams/MonitoringStream.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public override async Task<int> ReadAsync(byte[] buffer, int offset, int count,
252252
public override int Read(Span<byte> buffer)
253253
{
254254
this.WillReadSpan?.Invoke(this, buffer);
255-
int bytesRead = base.Read(buffer);
255+
int bytesRead = this.inner.Read(buffer);
256256
this.DidReadSpan?.Invoke(this, buffer);
257257
this.RaiseEndOfStreamIfNecessary(bytesRead);
258258
return bytesRead;
@@ -262,7 +262,7 @@ public override int Read(Span<byte> buffer)
262262
public override async ValueTask<int> ReadAsync(Memory<byte> buffer, CancellationToken cancellationToken = default)
263263
{
264264
this.WillReadMemory?.Invoke(this, buffer);
265-
int bytesRead = await base.ReadAsync(buffer, cancellationToken).ConfigureAwait(false);
265+
int bytesRead = await this.inner.ReadAsync(buffer, cancellationToken).ConfigureAwait(false);
266266
this.DidReadMemory?.Invoke(this, buffer);
267267
this.RaiseEndOfStreamIfNecessary(bytesRead);
268268
return bytesRead;
@@ -272,15 +272,15 @@ public override async ValueTask<int> ReadAsync(Memory<byte> buffer, Cancellation
272272
public override void Write(ReadOnlySpan<byte> buffer)
273273
{
274274
this.WillWriteSpan?.Invoke(this, buffer);
275-
base.Write(buffer);
275+
this.inner.Write(buffer);
276276
this.DidWriteSpan?.Invoke(this, buffer);
277277
}
278278

279279
/// <inheritdoc/>
280280
public override async ValueTask WriteAsync(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken = default)
281281
{
282282
this.WillWriteMemory?.Invoke(this, buffer);
283-
await base.WriteAsync(buffer, cancellationToken).ConfigureAwait(false);
283+
await this.inner.WriteAsync(buffer, cancellationToken).ConfigureAwait(false);
284284
this.DidWriteMemory?.Invoke(this, buffer);
285285
}
286286

test/Nerdbank.Streams.Tests/MonitoringStreamTests.cs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ public void Read_Span_RaisesEvents()
445445
Assert.Same(this.monitoringStream, s);
446446
Assert.Equal(6, e.Length);
447447
};
448+
this.monitoringStream.DidRead += (s, e) => Assert.Fail("Unexpected event.");
449+
this.monitoringStream.DidReadMemory += (s, e) => Assert.Fail("Unexpected event.");
450+
this.monitoringStream.DidReadByte += (s, e) => Assert.Fail("Unexpected event.");
448451
int bytesRead = this.monitoringStream.Read(this.buffer.AsSpan(2, 6));
449452
Assert.Equal(5, bytesRead);
450453
Assert.Equal(bytesRead, this.underlyingStream.Position);
@@ -487,6 +490,9 @@ public async Task ReadAsync_Memory_RaisesEvents()
487490
Assert.Same(this.monitoringStream, s);
488491
Assert.Equal(6, e.Length);
489492
};
493+
this.monitoringStream.DidRead += (s, e) => Assert.Fail("Unexpected event.");
494+
this.monitoringStream.DidReadSpan += (s, e) => Assert.Fail("Unexpected event.");
495+
this.monitoringStream.DidReadByte += (s, e) => Assert.Fail("Unexpected event.");
490496
int bytesRead = await this.monitoringStream.ReadAsync(this.buffer.AsMemory(2, 6));
491497
Assert.Equal(5, bytesRead);
492498
Assert.Equal(bytesRead, this.underlyingStream.Position);
@@ -529,6 +535,9 @@ public void Write_Span_RaisesEvents()
529535
Assert.Same(this.monitoringStream, s);
530536
Assert.Equal(3, e.Length);
531537
};
538+
this.monitoringStream.DidWrite += (s, e) => Assert.Fail("Unexpected event.");
539+
this.monitoringStream.DidWriteMemory += (s, e) => Assert.Fail("Unexpected event.");
540+
this.monitoringStream.DidWriteByte += (s, e) => Assert.Fail("Unexpected event.");
532541
this.monitoringStream.Write(this.buffer.AsSpan(2, 3));
533542
Assert.True(willWriteInvoked);
534543
Assert.True(didWriteInvoked);
@@ -538,25 +547,30 @@ public void Write_Span_RaisesEvents()
538547
[Fact]
539548
public async Task WriteAsync_Memory_RaisesEvents()
540549
{
541-
bool willWriteInvoked = false;
542-
bool didWriteInvoked = false;
550+
int willWriteInvoked = 0;
551+
int didWriteInvoked = 0;
543552
this.monitoringStream.WillWriteMemory += (s, e) =>
544553
{
545-
willWriteInvoked = true;
546-
Assert.False(didWriteInvoked);
554+
Assert.Equal(0, willWriteInvoked);
555+
willWriteInvoked++;
556+
Assert.Equal(0, didWriteInvoked);
547557
Assert.Same(this.monitoringStream, s);
548558
Assert.Equal(3, e.Length);
549559
};
550560
this.monitoringStream.DidWriteMemory += (s, e) =>
551561
{
552-
didWriteInvoked = true;
553-
Assert.True(willWriteInvoked);
562+
Assert.Equal(0, didWriteInvoked);
563+
Assert.Equal(1, willWriteInvoked);
564+
didWriteInvoked++;
554565
Assert.Same(this.monitoringStream, s);
555566
Assert.Equal(3, e.Length);
556567
};
568+
this.monitoringStream.DidWrite += (s, e) => Assert.Fail("Unexpected event.");
569+
this.monitoringStream.DidWriteSpan += (s, e) => Assert.Fail("Unexpected event.");
570+
this.monitoringStream.DidWriteByte += (s, e) => Assert.Fail("Unexpected event.");
557571
await this.monitoringStream.WriteAsync(this.buffer.AsMemory(2, 3));
558-
Assert.True(willWriteInvoked);
559-
Assert.True(didWriteInvoked);
572+
Assert.Equal(1, willWriteInvoked);
573+
Assert.Equal(1, didWriteInvoked);
560574
Assert.Equal(new byte[] { 8, 9, 10, 4, 5 }, this.underlyingStream.ToArray());
561575
}
562576

0 commit comments

Comments
 (0)