Merge branch 'release/2.2'
This commit is contained in:
commit
4d3647d7bf
|
|
@ -3,12 +3,6 @@ KestrelHttpServer
|
||||||
|
|
||||||
[](https://gitter.im/aspnet/KestrelHttpServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://gitter.im/aspnet/KestrelHttpServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
[![Travis build status][travis-badge]](https://travis-ci.org/aspnet/KestrelHttpServer/branches)
|
|
||||||
[![AppVeyor build status][appveyor-badge]](https://ci.appveyor.com/project/aspnetci/KestrelHttpServer/branch/dev)
|
|
||||||
|
|
||||||
[travis-badge]: https://img.shields.io/travis/aspnet/KestrelHttpServer.svg?label=travis-ci&branch=dev&style=flat-square
|
|
||||||
[appveyor-badge]: https://img.shields.io/appveyor/ci/aspnetci/KestrelHttpServer/dev.svg?label=appveyor&style=flat-square
|
|
||||||
|
|
||||||
This repo contains a cross-platform web server for ASP.NET Core.
|
This repo contains a cross-platform web server for ASP.NET Core.
|
||||||
|
|
||||||
This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
|
This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
|
||||||
|
|
|
||||||
|
|
@ -22,14 +22,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||||
/// Initializes a new instance of the <see cref="DateHeaderValueManager"/> class.
|
/// Initializes a new instance of the <see cref="DateHeaderValueManager"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateHeaderValueManager()
|
public DateHeaderValueManager()
|
||||||
: this(systemClock: new SystemClock())
|
: this(DateTimeOffset.UtcNow)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internal for testing
|
// Internal for testing
|
||||||
internal DateHeaderValueManager(ISystemClock systemClock)
|
internal DateHeaderValueManager(DateTimeOffset initialUtcNow)
|
||||||
{
|
{
|
||||||
SetDateValues(systemClock.UtcNow);
|
SetDateValues(initialUtcNow);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -19,18 +19,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
private Timer _timer;
|
private Timer _timer;
|
||||||
private int _executingOnHeartbeat;
|
private int _executingOnHeartbeat;
|
||||||
|
|
||||||
public Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace): this(callbacks, systemClock, debugger, trace, Interval)
|
public Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
internal Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace, TimeSpan interval)
|
|
||||||
{
|
{
|
||||||
_callbacks = callbacks;
|
_callbacks = callbacks;
|
||||||
_systemClock = systemClock;
|
_systemClock = systemClock;
|
||||||
_debugger = debugger;
|
_debugger = debugger;
|
||||||
_trace = trace;
|
_trace = trace;
|
||||||
_interval = interval;
|
_interval = Interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||||
private readonly Action<KestrelConnection> _walkCallback;
|
private readonly Action<KestrelConnection> _walkCallback;
|
||||||
private DateTimeOffset _now;
|
private DateTimeOffset _now;
|
||||||
|
|
||||||
public HeartbeatManager(ConnectionManager connectionManager)
|
public HeartbeatManager(ConnectionManager connectionManager, DateTimeOffset initialUtcNow)
|
||||||
{
|
{
|
||||||
_connectionManager = connectionManager;
|
_connectionManager = connectionManager;
|
||||||
|
_now = initialUtcNow;
|
||||||
_walkCallback = WalkCallback;
|
_walkCallback = WalkCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core
|
||||||
trace,
|
trace,
|
||||||
serverOptions.Limits.MaxConcurrentUpgradedConnections);
|
serverOptions.Limits.MaxConcurrentUpgradedConnections);
|
||||||
|
|
||||||
var heartbeatManager = new HeartbeatManager(connectionManager);
|
var now = DateTimeOffset.UtcNow;
|
||||||
var dateHeaderValueManager = new DateHeaderValueManager(heartbeatManager);
|
var heartbeatManager = new HeartbeatManager(connectionManager, now);
|
||||||
|
var dateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
var heartbeat = new Heartbeat(
|
var heartbeat = new Heartbeat(
|
||||||
new IHeartbeatHandler[] { dateHeaderValueManager, heartbeatManager },
|
new IHeartbeatHandler[] { dateHeaderValueManager, heartbeatManager },
|
||||||
new SystemClock(),
|
new SystemClock(),
|
||||||
|
|
|
||||||
|
|
@ -24,12 +24,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
public void GetDateHeaderValue_ReturnsDateValueInRFC1123Format()
|
public void GetDateHeaderValue_ReturnsDateValueInRFC1123Format()
|
||||||
{
|
{
|
||||||
var now = DateTimeOffset.UtcNow;
|
var now = DateTimeOffset.UtcNow;
|
||||||
var systemClock = new MockSystemClock
|
|
||||||
{
|
|
||||||
UtcNow = now
|
|
||||||
};
|
|
||||||
|
|
||||||
var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
|
var dateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
Assert.Equal(now.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
Assert.Equal(now.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,7 +39,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
UtcNow = now
|
UtcNow = now
|
||||||
};
|
};
|
||||||
|
|
||||||
var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
|
var dateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
var testKestrelTrace = new TestKestrelTrace();
|
var testKestrelTrace = new TestKestrelTrace();
|
||||||
|
|
||||||
using (var heartbeat = new Heartbeat(new IHeartbeatHandler[] { dateHeaderValueManager }, systemClock, DebuggerWrapper.Singleton, testKestrelTrace))
|
using (var heartbeat = new Heartbeat(new IHeartbeatHandler[] { dateHeaderValueManager }, systemClock, DebuggerWrapper.Singleton, testKestrelTrace))
|
||||||
|
|
@ -53,7 +49,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
Assert.Equal(now.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
Assert.Equal(now.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.Equal(1, systemClock.UtcNowCalled);
|
Assert.Equal(0, systemClock.UtcNowCalled);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -66,7 +62,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
UtcNow = now
|
UtcNow = now
|
||||||
};
|
};
|
||||||
|
|
||||||
var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
|
var dateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
var testKestrelTrace = new TestKestrelTrace();
|
var testKestrelTrace = new TestKestrelTrace();
|
||||||
|
|
||||||
var mockHeartbeatHandler = new Mock<IHeartbeatHandler>();
|
var mockHeartbeatHandler = new Mock<IHeartbeatHandler>();
|
||||||
|
|
@ -83,7 +79,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
heartbeat.OnHeartbeat();
|
heartbeat.OnHeartbeat();
|
||||||
|
|
||||||
Assert.Equal(future.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
Assert.Equal(future.ToString(Rfc1123DateFormat), dateHeaderValueManager.GetDateHeaderValues().String);
|
||||||
Assert.True(systemClock.UtcNowCalled >= 2);
|
Assert.Equal(2, systemClock.UtcNowCalled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -97,7 +93,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
UtcNow = now
|
UtcNow = now
|
||||||
};
|
};
|
||||||
|
|
||||||
var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
|
var dateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
var testKestrelTrace = new TestKestrelTrace();
|
var testKestrelTrace = new TestKestrelTrace();
|
||||||
|
|
||||||
using (var heatbeat = new Heartbeat(new IHeartbeatHandler[] { dateHeaderValueManager }, systemClock, DebuggerWrapper.Singleton, testKestrelTrace))
|
using (var heatbeat = new Heartbeat(new IHeartbeatHandler[] { dateHeaderValueManager }, systemClock, DebuggerWrapper.Singleton, testKestrelTrace))
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
LoggerFactory.AddProvider(loggerProvider);
|
LoggerFactory.AddProvider(loggerProvider);
|
||||||
|
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
var handshakeStartedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var handshakeStartedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
TimeSpan handshakeTimeout = default;
|
TimeSpan handshakeTimeout = default;
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task ConnectionClosedWhenKeepAliveTimeoutExpires()
|
public async Task ConnectionClosedWhenKeepAliveTimeoutExpires()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -51,7 +51,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task ConnectionKeptAliveBetweenRequests()
|
public async Task ConnectionKeptAliveBetweenRequests()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task ConnectionNotTimedOutWhileRequestBeingSent()
|
public async Task ConnectionNotTimedOutWhileRequestBeingSent()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
private async Task ConnectionNotTimedOutWhileAppIsRunning()
|
private async Task ConnectionNotTimedOutWhileAppIsRunning()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
var cts = new CancellationTokenSource();
|
var cts = new CancellationTokenSource();
|
||||||
|
|
||||||
using (var server = CreateServer(testContext, longRunningCt: cts.Token))
|
using (var server = CreateServer(testContext, longRunningCt: cts.Token))
|
||||||
|
|
@ -150,7 +150,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
private async Task ConnectionTimesOutWhenOpenedButNoRequestSent()
|
private async Task ConnectionTimesOutWhenOpenedButNoRequestSent()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
private async Task KeepAliveTimeoutDoesNotApplyToUpgradedConnections()
|
private async Task KeepAliveTimeoutDoesNotApplyToUpgradedConnections()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
var cts = new CancellationTokenSource();
|
var cts = new CancellationTokenSource();
|
||||||
|
|
||||||
using (var server = CreateServer(testContext, upgradeCt: cts.Token))
|
using (var server = CreateServer(testContext, upgradeCt: cts.Token))
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var gracePeriod = TimeSpan.FromSeconds(5);
|
var gracePeriod = TimeSpan.FromSeconds(5);
|
||||||
var serviceContext = new TestServiceContext(LoggerFactory);
|
var serviceContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager, serviceContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
var appRunningEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var appRunningEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
||||||
|
|
@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
{
|
{
|
||||||
var gracePeriod = TimeSpan.FromSeconds(5);
|
var gracePeriod = TimeSpan.FromSeconds(5);
|
||||||
var serviceContext = new TestServiceContext(LoggerFactory);
|
var serviceContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager, serviceContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
var appRunningTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var appRunningTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
var exceptionSwallowedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var exceptionSwallowedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task ConnectionAbortedWhenRequestHeadersNotReceivedInTime(string headers)
|
public async Task ConnectionAbortedWhenRequestHeadersNotReceivedInTime(string headers)
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task RequestHeadersTimeoutCanceledAfterHeadersReceived()
|
public async Task RequestHeadersTimeoutCanceledAfterHeadersReceived()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task ConnectionAbortedWhenRequestLineNotReceivedInTime(string requestLine)
|
public async Task ConnectionAbortedWhenRequestLineNotReceivedInTime(string requestLine)
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
@ -95,7 +95,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
public async Task TimeoutNotResetOnEachRequestLineCharacterReceived()
|
public async Task TimeoutNotResetOnEachRequestLineCharacterReceived()
|
||||||
{
|
{
|
||||||
var testContext = new TestServiceContext(LoggerFactory);
|
var testContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = CreateServer(testContext))
|
using (var server = CreateServer(testContext))
|
||||||
using (var connection = server.CreateConnection())
|
using (var connection = server.CreateConnection())
|
||||||
|
|
|
||||||
|
|
@ -877,7 +877,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
|
||||||
var appEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var appEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
var delayEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
var delayEvent = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
var serviceContext = new TestServiceContext(LoggerFactory);
|
var serviceContext = new TestServiceContext(LoggerFactory);
|
||||||
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager);
|
var heartbeatManager = new HeartbeatManager(serviceContext.ConnectionManager, serviceContext.SystemClock.UtcNow);
|
||||||
|
|
||||||
using (var server = new TestServer(async context =>
|
using (var server = new TestServer(async context =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
{
|
{
|
||||||
socket.Connect(new IPEndPoint(IPAddress.Loopback, host.GetPort()));
|
socket.Connect(new IPEndPoint(IPAddress.Loopback, host.GetPort()));
|
||||||
socket.Send(Encoding.ASCII.GetBytes($"POST / HTTP/1.0\r\nContent-Length: {contentLength}\r\n\r\n"));
|
socket.Send(Encoding.ASCII.GetBytes("POST / HTTP/1.0\r\n"));
|
||||||
|
Thread.Sleep(5000);
|
||||||
|
socket.Send(Encoding.ASCII.GetBytes($"Content-Length: {contentLength}\r\n\r\n"));
|
||||||
|
|
||||||
var contentBytes = new byte[bufferLength];
|
var contentBytes = new byte[bufferLength];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,16 +41,17 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
|
|
||||||
public void InitializeHeartbeat()
|
public void InitializeHeartbeat()
|
||||||
{
|
{
|
||||||
MockSystemClock = null;
|
var now = DateTimeOffset.UtcNow;
|
||||||
SystemClock = new SystemClock();
|
var heartbeatManager = new HeartbeatManager(ConnectionManager, now);
|
||||||
DateHeaderValueManager = new DateHeaderValueManager(SystemClock);
|
DateHeaderValueManager = new DateHeaderValueManager(now);
|
||||||
|
|
||||||
var heartbeatManager = new HeartbeatManager(ConnectionManager);
|
|
||||||
Heartbeat = new Heartbeat(
|
Heartbeat = new Heartbeat(
|
||||||
new IHeartbeatHandler[] { DateHeaderValueManager, heartbeatManager },
|
new IHeartbeatHandler[] { DateHeaderValueManager, heartbeatManager },
|
||||||
SystemClock,
|
new SystemClock(),
|
||||||
DebuggerWrapper.Singleton,
|
DebuggerWrapper.Singleton,
|
||||||
Log);
|
Log);
|
||||||
|
|
||||||
|
MockSystemClock = null;
|
||||||
|
SystemClock = heartbeatManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Initialize(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace)
|
private void Initialize(ILoggerFactory loggerFactory, IKestrelTrace kestrelTrace)
|
||||||
|
|
@ -60,7 +61,7 @@ namespace Microsoft.AspNetCore.Testing
|
||||||
Scheduler = PipeScheduler.ThreadPool;
|
Scheduler = PipeScheduler.ThreadPool;
|
||||||
MockSystemClock = new MockSystemClock();
|
MockSystemClock = new MockSystemClock();
|
||||||
SystemClock = MockSystemClock;
|
SystemClock = MockSystemClock;
|
||||||
DateHeaderValueManager = new DateHeaderValueManager(MockSystemClock);
|
DateHeaderValueManager = new DateHeaderValueManager(MockSystemClock.UtcNow);
|
||||||
ConnectionManager = new ConnectionManager(Log, ResourceCounter.Unlimited);
|
ConnectionManager = new ConnectionManager(Log, ResourceCounter.Unlimited);
|
||||||
HttpParser = new HttpParser<Http1ParsingHandler>(Log.IsEnabled(LogLevel.Information));
|
HttpParser = new HttpParser<Http1ParsingHandler>(Log.IsEnabled(LogLevel.Information));
|
||||||
ServerOptions = new KestrelServerOptions
|
ServerOptions = new KestrelServerOptions
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue