public void RecycleIdled() { // Arrange var current = DateTime.UtcNow; Assert.False(IdleTimeoutPool.TryIdleOut(new PoolItem("x"), current.AddSeconds(-10))); Assert.False(IdleTimeoutPool.TryIdleOut("y", current.AddSeconds(-9))); Assert.False(IdleTimeoutPool.TryIdleOut("z", current.AddSeconds(-9))); Assert.False(IdleTimeoutPool.TryIdleOut("_", current.AddSeconds(-10))); var taken = new Queue <string>(new string[] { "x", "y", "z", "_", null }); MockInnerPool.Setup(inner => inner.Count).Returns(4); MockInnerPool.Setup(inner => inner.Take(null)).Returns(() => taken.Dequeue()); MockInnerPool.Setup(inner => inner.Return(It.IsAny <string>())) .Callback((string item) => taken.Enqueue(item)) .Returns(() => true); // Act lock (MockInnerPool.Object) { Assert.Equal(2, IdleTimeoutPool.RecycleIdled(current)); } // Assert Assert.Equal(2, m_releaseFactoryCalls); Assert.Equal("z", IdleTimeoutPool.TakeCurrent(null, current)); Assert.Equal("y", IdleTimeoutPool.TakeCurrent(null, current)); }
public void TryIdleOut_New() { // Arrange var current = DateTime.UtcNow; // Act var result = IdleTimeoutPool.TryIdleOut("x", current); // Assert Assert.False(result); }
public void CheckExpired_Idle() { // Arrange var current = DateTime.UtcNow; var state = new IdleState(current.AddSeconds(-10)); // Act var result = IdleTimeoutPool.CheckExpired(state, current); // Assert Assert.True(result); }
public void TryIdleOut_Existing_Expired() { // Arrange var current = DateTime.UtcNow; Assert.False(IdleTimeoutPool.TryIdleOut("x", current.AddSeconds(-10))); // Act var result = IdleTimeoutPool.TryIdleOut("x", current); // Assert Assert.True(result); }
public void CheckExpired_Lease_NoExpiration() { // Arrange var current = DateTime.UtcNow; var state = new IdleState(current.AddSeconds(-19)); state.UsedOn = current; // Act var result = IdleTimeoutPool.CheckExpired(state, current); // Assert Assert.False(result); }
public void TakeCurrent_Not_IdledOut() { // Arrange var current = DateTime.UtcNow; Assert.False(IdleTimeoutPool.TryIdleOut("x", current.AddSeconds(-1))); MockInnerPool.Setup(inner => inner.Take(null)).Returns("x"); // Act var result = IdleTimeoutPool.TakeCurrent(null, current); // Assert Assert.Equal("x", result); Assert.Equal(0, m_releaseFactoryCalls); }
public void TakeCurrent_IdledOut() { // Arrange var current = DateTime.UtcNow; Assert.False(IdleTimeoutPool.TryIdleOut("x", current.AddSeconds(-10))); Assert.False(IdleTimeoutPool.TryIdleOut("y", current.AddSeconds(-10))); var items = new Queue <string>(new string[] { "x", "y", null }); MockInnerPool.Setup(inner => inner.Take(null)).Returns(() => items.Dequeue()); // Act var result = IdleTimeoutPool.TakeCurrent(null, current); // Assert Assert.Null(result); Assert.Equal(2, m_releaseFactoryCalls); }