diff --git a/README.md b/README.md
index 85a0a73610..d58602dabb 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,6 @@ KestrelHttpServer
[](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 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.
diff --git a/src/Kestrel.Core/Internal/Http/DateHeaderValueManager.cs b/src/Kestrel.Core/Internal/Http/DateHeaderValueManager.cs
index b2cb874364..ee82fd1bc1 100644
--- a/src/Kestrel.Core/Internal/Http/DateHeaderValueManager.cs
+++ b/src/Kestrel.Core/Internal/Http/DateHeaderValueManager.cs
@@ -22,14 +22,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
/// Initializes a new instance of the class.
///
public DateHeaderValueManager()
- : this(systemClock: new SystemClock())
+ : this(DateTimeOffset.UtcNow)
{
}
// Internal for testing
- internal DateHeaderValueManager(ISystemClock systemClock)
+ internal DateHeaderValueManager(DateTimeOffset initialUtcNow)
{
- SetDateValues(systemClock.UtcNow);
+ SetDateValues(initialUtcNow);
}
///
diff --git a/src/Kestrel.Core/Internal/Infrastructure/Heartbeat.cs b/src/Kestrel.Core/Internal/Infrastructure/Heartbeat.cs
index fb0f17d83b..5937002304 100644
--- a/src/Kestrel.Core/Internal/Infrastructure/Heartbeat.cs
+++ b/src/Kestrel.Core/Internal/Infrastructure/Heartbeat.cs
@@ -19,18 +19,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
private Timer _timer;
private int _executingOnHeartbeat;
- public Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace): this(callbacks, systemClock, debugger, trace, Interval)
- {
-
- }
-
- internal Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace, TimeSpan interval)
+ public Heartbeat(IHeartbeatHandler[] callbacks, ISystemClock systemClock, IDebugger debugger, IKestrelTrace trace)
{
_callbacks = callbacks;
_systemClock = systemClock;
_debugger = debugger;
_trace = trace;
- _interval = interval;
+ _interval = Interval;
}
public void Start()
diff --git a/src/Kestrel.Core/Internal/Infrastructure/HeartbeatManager.cs b/src/Kestrel.Core/Internal/Infrastructure/HeartbeatManager.cs
index bc54e73385..98d3585921 100644
--- a/src/Kestrel.Core/Internal/Infrastructure/HeartbeatManager.cs
+++ b/src/Kestrel.Core/Internal/Infrastructure/HeartbeatManager.cs
@@ -11,9 +11,10 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
private readonly Action _walkCallback;
private DateTimeOffset _now;
- public HeartbeatManager(ConnectionManager connectionManager)
+ public HeartbeatManager(ConnectionManager connectionManager, DateTimeOffset initialUtcNow)
{
_connectionManager = connectionManager;
+ _now = initialUtcNow;
_walkCallback = WalkCallback;
}
diff --git a/src/Kestrel.Core/KestrelServer.cs b/src/Kestrel.Core/KestrelServer.cs
index cc21f738d0..e90188a6eb 100644
--- a/src/Kestrel.Core/KestrelServer.cs
+++ b/src/Kestrel.Core/KestrelServer.cs
@@ -71,8 +71,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core
trace,
serverOptions.Limits.MaxConcurrentUpgradedConnections);
- var heartbeatManager = new HeartbeatManager(connectionManager);
- var dateHeaderValueManager = new DateHeaderValueManager(heartbeatManager);
+ var now = DateTimeOffset.UtcNow;
+ var heartbeatManager = new HeartbeatManager(connectionManager, now);
+ var dateHeaderValueManager = new DateHeaderValueManager(now);
var heartbeat = new Heartbeat(
new IHeartbeatHandler[] { dateHeaderValueManager, heartbeatManager },
new SystemClock(),
diff --git a/test/Kestrel.Core.Tests/DateHeaderValueManagerTests.cs b/test/Kestrel.Core.Tests/DateHeaderValueManagerTests.cs
index 3d1e880765..adf2971c2c 100644
--- a/test/Kestrel.Core.Tests/DateHeaderValueManagerTests.cs
+++ b/test/Kestrel.Core.Tests/DateHeaderValueManagerTests.cs
@@ -24,12 +24,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
public void GetDateHeaderValue_ReturnsDateValueInRFC1123Format()
{
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);
}
@@ -43,7 +39,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
UtcNow = now
};
- var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
+ var dateHeaderValueManager = new DateHeaderValueManager(now);
var testKestrelTrace = new 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(1, systemClock.UtcNowCalled);
+ Assert.Equal(0, systemClock.UtcNowCalled);
}
[Fact]
@@ -66,7 +62,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
UtcNow = now
};
- var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
+ var dateHeaderValueManager = new DateHeaderValueManager(now);
var testKestrelTrace = new TestKestrelTrace();
var mockHeartbeatHandler = new Mock();
@@ -83,7 +79,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
heartbeat.OnHeartbeat();
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
};
- var dateHeaderValueManager = new DateHeaderValueManager(systemClock);
+ var dateHeaderValueManager = new DateHeaderValueManager(now);
var testKestrelTrace = new TestKestrelTrace();
using (var heatbeat = new Heartbeat(new IHeartbeatHandler[] { dateHeaderValueManager }, systemClock, DebuggerWrapper.Singleton, testKestrelTrace))
diff --git a/test/Kestrel.InMemory.FunctionalTests/HttpsTests.cs b/test/Kestrel.InMemory.FunctionalTests/HttpsTests.cs
index 9e52de9f12..1f3039abbb 100644
--- a/test/Kestrel.InMemory.FunctionalTests/HttpsTests.cs
+++ b/test/Kestrel.InMemory.FunctionalTests/HttpsTests.cs
@@ -312,7 +312,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
LoggerFactory.AddProvider(loggerProvider);
var testContext = new TestServiceContext(LoggerFactory);
- var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager);
+ var heartbeatManager = new HeartbeatManager(testContext.ConnectionManager, testContext.SystemClock.UtcNow);
var handshakeStartedTcs = new TaskCompletionSource