diff --git a/src/Servers/Kestrel/Core/test/Http1/Http1OutputProducerTests.cs b/src/Servers/Kestrel/Core/test/Http1/Http1OutputProducerTests.cs index 381a1ccd2483a..c876e6c125f62 100644 --- a/src/Servers/Kestrel/Core/test/Http1/Http1OutputProducerTests.cs +++ b/src/Servers/Kestrel/Core/test/Http1/Http1OutputProducerTests.cs @@ -117,9 +117,10 @@ public async Task FlushAsync_OnSocketWithCanceledPendingFlush_ReturnsResultWithI [Fact] public void AbortsTransportEvenAfterDispose() { + var metricsTagsFeature = new TestConnectionMetricsTagsFeature(); var mockConnectionContext = new Mock(); - var outputProducer = CreateOutputProducer(connectionContext: mockConnectionContext.Object); + var outputProducer = CreateOutputProducer(connectionContext: mockConnectionContext.Object, metricsTagsFeature: metricsTagsFeature); outputProducer.Dispose(); @@ -132,6 +133,8 @@ public void AbortsTransportEvenAfterDispose() outputProducer.Abort(null, ConnectionEndReason.AbortedByApplication); mockConnectionContext.Verify(f => f.Abort(null), Times.Once()); + + Assert.Equal(nameof(ConnectionEndReason.AbortedByApplication), metricsTagsFeature.Tags.Single(t => t.Key == KestrelMetrics.KestrelConnectionEndReason).Value); } [Fact] @@ -219,7 +222,8 @@ public void ReusesFakeMemory() private TestHttpOutputProducer CreateOutputProducer( PipeOptions pipeOptions = null, - ConnectionContext connectionContext = null) + ConnectionContext connectionContext = null, + IConnectionMetricsTagsFeature metricsTagsFeature = null) { pipeOptions = pipeOptions ?? new PipeOptions(); connectionContext = connectionContext ?? Mock.Of(); @@ -234,12 +238,17 @@ public void ReusesFakeMemory() serviceContext.Log, Mock.Of(), Mock.Of(), - Mock.Of(), + metricsTagsFeature ?? new TestConnectionMetricsTagsFeature(), Mock.Of()); return socketOutput; } + private class TestConnectionMetricsTagsFeature : IConnectionMetricsTagsFeature + { + public ICollection> Tags { get; } = new List>(); + } + private class TestHttpOutputProducer : Http1OutputProducer { public TestHttpOutputProducer(Pipe pipe, string connectionId, ConnectionContext connectionContext, MemoryPool memoryPool, KestrelTrace log, ITimeoutControl timeoutControl, IHttpMinResponseDataRateFeature minResponseDataRateFeature, IConnectionMetricsTagsFeature metricsTagsFeature, IHttpOutputAborter outputAborter) diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3StreamTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3StreamTests.cs index 98e641b1b95bc..ef93e8de5972d 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3StreamTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/Http3/Http3StreamTests.cs @@ -2139,7 +2139,7 @@ public async Task UnexpectedServerFrame(string frameType) expectedLastStreamId: null, Http3ErrorCode.UnexpectedFrame, null); - Assert.Equal(nameof(ConnectionEndReason.UnexpectedFrame), Http3Api.ConnectionTags[KestrelMetrics.KestrelConnectionEndReason]); + Assert.Equal(nameof(ConnectionEndReason.UnsupportedFrame), Http3Api.ConnectionTags[KestrelMetrics.KestrelConnectionEndReason]); } [Fact]