Fix flaky keepalive ping test (#24804)

* Fix flaky keepalive ping test

* Clean up stream
This commit is contained in:
James Newton-King 2020-08-12 12:23:56 +12:00 committed by GitHub
parent ef1f48ab97
commit 57b5321417
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 1 deletions

View File

@ -147,6 +147,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
}
[Fact]
[QuarantinedTest]
public async Task PING_NoKeepAliveTimeout_DoesNotResetKeepAliveTimeout()
{
var mockSystemClock = _serviceContext.MockSystemClock;
@ -156,13 +157,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
CreateConnection();
await InitializeConnectionAsync(_noopApplication);
await InitializeConnectionAsync(_echoApplication);
// Connection starts and sets keep alive timeout
_mockTimeoutControl.Verify(c => c.SetTimeout(It.IsAny<long>(), TimeoutReason.KeepAlive), Times.Once);
_mockTimeoutControl.Verify(c => c.ResetTimeout(It.IsAny<long>(), TimeoutReason.KeepAlive), Times.Never);
_mockTimeoutControl.Verify(c => c.CancelTimeout(), Times.Never);
// Stream will stay open because it is waiting for request body to end
await StartStreamAsync(1, _browserRequestHeaders, endStream: false);
// Starting a stream cancels the keep alive timeout
@ -176,6 +178,17 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
// Server doesn't reset keep alive timeout because it isn't running
_mockTimeoutControl.Verify(c => c.ResetTimeout(It.IsAny<long>(), TimeoutReason.KeepAlive), Times.Never);
// End stream
await SendDataAsync(1, _helloWorldBytes, endStream: true);
await ExpectAsync(Http2FrameType.HEADERS,
withLength: 32,
withFlags: (byte)Http2HeadersFrameFlags.END_HEADERS,
withStreamId: 1);
await ExpectAsync(Http2FrameType.DATA,
withLength: _helloWorldBytes.Length,
withFlags: (byte)Http2DataFrameFlags.NONE,
withStreamId: 1);
}
[Fact]