Example #1
0
        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));
        }
Example #2
0
        public void TryIdleOut_New()
        {
            // Arrange
            var current = DateTime.UtcNow;

            // Act
            var result = IdleTimeoutPool.TryIdleOut("x", current);

            // Assert
            Assert.False(result);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }