Fix flakiness in KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests (#1684).

This commit is contained in:
Cesar Blum Silveira 2017-09-18 15:12:13 -07:00 committed by GitHub
parent 1470ee0658
commit 91eb4cd54c
1 changed files with 3 additions and 19 deletions

View File

@ -3,7 +3,6 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -11,10 +10,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
using Microsoft.AspNetCore.Testing; using Microsoft.AspNetCore.Testing;
using Microsoft.AspNetCore.Testing.xunit;
using Microsoft.Extensions.Logging;
using Xunit; using Xunit;
using Xunit.Abstractions;
namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
{ {
@ -24,15 +20,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
private static readonly TimeSpan _longDelay = TimeSpan.FromSeconds(30); private static readonly TimeSpan _longDelay = TimeSpan.FromSeconds(30);
private static readonly TimeSpan _shortDelay = TimeSpan.FromSeconds(_longDelay.TotalSeconds / 10); private static readonly TimeSpan _shortDelay = TimeSpan.FromSeconds(_longDelay.TotalSeconds / 10);
private readonly ILoggerFactory _loggerFactory = new LoggerFactory();
private readonly ILogger _logger;
public KeepAliveTimeoutTests(ITestOutputHelper output)
{
_loggerFactory.AddXunit(output);
_logger = _loggerFactory.CreateLogger("Microsoft.AspNetCore.Server.Kestrel.FunctionalTests.KeepAliveTimeoutTests");
}
[Fact] [Fact]
public Task TestKeepAliveTimeout() public Task TestKeepAliveTimeout()
{ {
@ -90,11 +77,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
"", "",
""); "");
var stopWatch = new Stopwatch(); // Don't change this to Task.Delay. See https://github.com/aspnet/KestrelHttpServer/issues/1684#issuecomment-330285740.
stopWatch.Start(); Thread.Sleep(_shortDelay);
await Task.Delay(_shortDelay);
stopWatch.Stop();
_logger.LogDebug($"Short delay lasted {TimeSpan.FromMilliseconds(stopWatch.ElapsedMilliseconds).TotalSeconds} seconds instead of {_shortDelay.TotalSeconds} seconds.");
} }
for (var i = 0; i < 10; i++) for (var i = 0; i < 10; i++)
@ -202,7 +186,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
private TestServer CreateServer(CancellationToken longRunningCt, CancellationToken upgradeCt) private TestServer CreateServer(CancellationToken longRunningCt, CancellationToken upgradeCt)
{ {
return new TestServer(httpContext => App(httpContext, longRunningCt, upgradeCt), new TestServiceContext(_loggerFactory) return new TestServer(httpContext => App(httpContext, longRunningCt, upgradeCt), new TestServiceContext
{ {
// Use real SystemClock so timeouts trigger. // Use real SystemClock so timeouts trigger.
SystemClock = new SystemClock(), SystemClock = new SystemClock(),