public void OnlyMaxLifetimeIsSpecified_ValidYoungObjectsAreKept() { _settings.MaxObjectLifetimeInSeconds = 5; _settings.MaxObjectIdleTimeSpanInSeconds = null; _pool = new PWObjectStateMonitoringWrapper<TestKey, TestResource>(_settings, _baseSuccessfulPoolMock.Object, _successfulObjectActionsMock.Object, _objectUtilizerMock.Object); AddObject("young"); _pool.DropLifelessObjectsAndWakeupOthers(); Assert.That(_pool.ObjectToLifetimeData.Count, Is.EqualTo(1)); }
public void MaxLifetimeIsSpecified_TooOldObjectsAreUtilizedAndForgotten() { _settings.MaxObjectLifetimeInSeconds = 5; _pool = new PWObjectStateMonitoringWrapper<TestKey, TestResource>(_settings, _baseSuccessfulPoolMock.Object, _successfulObjectActionsMock.Object, _objectUtilizerMock.Object); var tooOldResource = new TestResource("old"); _pool.ObjectToLifetimeData[tooOldResource] = new ObjectLifetimeData<TestKey>(_key) { CreationTimeStamp = DateTime.Now - TimeSpan.FromSeconds(6), }; _pool.DropLifelessObjectsAndWakeupOthers(); Assert.That(_pool.ObjectToLifetimeData.Count, Is.EqualTo(0)); _objectUtilizerMock.Verify(x => x.Utilize(_key, tooOldResource, _pool), Times.Once); }
public void CleaningExecutedAndTimespansAreNotSpecified_InvalidObjectsAreUtilizedAndForgotten() { _settings.MaxObjectIdleTimeSpanInSeconds = null; _settings.MaxObjectLifetimeInSeconds = null; _pool = new PWObjectStateMonitoringWrapper<TestKey, TestResource>(_settings, _baseSuccessfulPoolMock.Object, _successfulObjectActionsMock.Object, _objectUtilizerMock.Object); var invalidResource = AddObject(Mocks.ObjectActions.SubstringOfInvalidObject); _pool.DropLifelessObjectsAndWakeupOthers(); Assert.That(_pool.ObjectToLifetimeData.Count, Is.EqualTo(0)); _objectUtilizerMock.Verify(x => x.Utilize(_key, invalidResource, _pool), Times.Once); }
public void CleaningExecuted_UsefulObjectsArePinged() { _pool = new PWObjectStateMonitoringWrapper<TestKey, TestResource>(_settings, _baseSuccessfulPoolMock.Object, _successfulObjectActionsMock.Object, _objectUtilizerMock.Object); var usefulResource = AddObject("useful"); _pool.DropLifelessObjectsAndWakeupOthers(); _successfulObjectActionsMock.Verify(x => x.Ping(usefulResource)); }
public void CleaningExecutedAndPingFailed_ObjectIsUtilizedAndForgottenAndCleaningProceeds() { _settings.TimeSpanBetweenRevivalsInSeconds = 100; _pool = new PWObjectStateMonitoringWrapper<TestKey, TestResource>(_settings, _baseThrowingPoolMock.Object, _failingOnPingObjectActionsMock.Object, _objectUtilizerMock.Object); var object1 = AddObject("something1"); var object2 = AddObject("something2"); _pool.DropLifelessObjectsAndWakeupOthers(); Assert.That(_pool.ObjectToLifetimeData.Count, Is.EqualTo(0)); _objectUtilizerMock.Verify(x => x.Utilize(_key,object1,_pool)); _objectUtilizerMock.Verify(x => x.Utilize(_key,object2,_pool)); }