public void PoolSizeTest() { int defaultPoolSize = ObjectPool <Type1> .DEFAULT_POOL_SIZE; Assert.AreEqual(defaultPoolSize, _type1Pool.PoolSize); Type1 acquiredObject = _type1Pool.AcquireObject(); Assert.AreEqual(defaultPoolSize - 1, _type1Pool.PoolSize); _type1Pool.ReleaseObject(acquiredObject); Assert.AreEqual(defaultPoolSize, _type1Pool.PoolSize); }
public void Test_If_Pool_Removes_Faulted_Items_During_Acquire() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10, false, TimeSpan.FromSeconds(1)); var exceptionThrown = false; const string errorMessage = "Something bad happened..."; void ThrowEx(PoolItem item) { exceptionThrown = true; op.OnAcquiring.Unsubscribe(ThrowEx); throw new Exception(errorMessage); } op.OnAcquiring.Subscribe(ThrowEx); var obj = op.AcquireObject(); Assert.IsNotNull(obj); Assert.IsTrue(exceptionThrown); }
public void TestNoAvailableItem() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10); op.AcquireAllObjects(); Assert.AreEqual(0, op.AvailableTokenCount); op.AcquireObject(); }
public void TestAcquireOneAndRelease() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10); var o = op.AcquireObject(); Assert.AreEqual(99, op.AvailableTokenCount); Thread.Sleep(new Random().Next(10, 200)); op.ReleaseObject(o); Assert.AreEqual(100, op.AvailableTokenCount); }
public void TestObjectInitialization() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10); var o = op.AcquireObject(); Assert.IsNotNull(o); Assert.AreEqual(42, o.Number); Assert.AreEqual("The Hitchhiker's Guide to the Galaxy", o.Text); Thread.Sleep(new Random().Next(10, 200)); op.ReleaseObject(o); }
public void ReleaseObjectOverAgeLimit() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10, false, TimeSpan.FromSeconds(1)); Assert.AreEqual(100, op.AvailableTokenCount); var o = op.AcquireObject(); Thread.Sleep(1200); Assert.AreEqual(99, op.AvailableTokenCount); op.ReleaseObject(o); Assert.AreEqual(100, op.AvailableTokenCount); }
public void AcquireObjectWithinAgeLimit() { var op = new ObjectPool <PoolItem>( () => new PoolItem(42, "The Hitchhiker's Guide to the Galaxy"), 100, 10, false, TimeSpan.FromHours(8)); Assert.AreEqual(100, op.AvailableTokenCount); Thread.Sleep(1200); var o = op.AcquireObject(); Assert.AreEqual(99, op.AvailableTokenCount); Assert.IsTrue(o.CreationTime < DateTime.UtcNow - TimeSpan.FromSeconds(1)); op.ReleaseObject(o); Assert.AreEqual(100, op.AvailableTokenCount); }