public void DoesNotCallbackIfRemoveFromCacheThrowsException() { CacheItem exceptionThrowingCacheItem = new CacheItem("ThrowException", "value", CacheItemPriority.Normal, new MockRefreshAction(), null); exceptionThrowingCacheItem.WillBeExpired = true; AddCacheItem("ThrowException", exceptionThrowingCacheItem); ExpirationTask expirer = new ExpirationTask(this); expirer.SweepExpiredItemsFromCache(inMemoryCache); Thread.Sleep(250); Assert.AreEqual(0, callbackCount); }
public void RemovalFailureDuringCacheExpirationDoesFireEvents() { ICacheOperations cacheOperations = new FailingOnRemovalCacheOperations(); ExpirationTask expiration = new ExpirationTask(cacheOperations, instrumentationProvider); CacheItem expiredItem1 = new CacheItem(key1, new object(), CacheItemPriority.NotRemovable, new ExceptionThrowingCallback(), new AlwaysExpired()); cacheOperations.CurrentCacheState.Add(key1, expiredItem1); expiredItem1.WillBeExpired = true; expiration.SweepExpiredItemsFromCache(cacheOperations.CurrentCacheState); Assert.AreEqual(1, instrumentationListener.eventArgs.Count); Assert.AreSame(typeof(CacheFailureEventArgs), instrumentationListener.eventArgs[0].GetType()); }
public void DoesNotCallbackIfRemoveFromCacheThrowsException() { CacheItem exceptionThrowingCacheItem = new CacheItem("ThrowException", "value", CacheItemPriority.Normal, new MockRefreshAction(), null); exceptionThrowingCacheItem.WillBeExpired = true; AddCacheItem("ThrowException", exceptionThrowingCacheItem); ExpirationTask expirer = new ExpirationTask(this, instrumentationProvider); int expiredItemsCount = expirer.SweepExpiredItemsFromCache(inMemoryCache); Thread.Sleep(250); Assert.AreEqual(0, callbackCount); Assert.AreEqual(1, expiredItemsCount); }
public void RemovalAfterMarkingDoesNotTriggerSweepForItem() { CacheItem removedItem = CreateNeverExpiredCacheItem("key", "value"); removedItem.WillBeExpired = true; removedItem.TouchedByUserAction(true); AddCacheItem("key", removedItem); ExpirationTask expirer = new ExpirationTask(this, instrumentationProvider); int expiredItemsCount = expirer.SweepExpiredItemsFromCache(inMemoryCache); Assert.AreEqual("", expiredItemKeys, "Items removed through user action during expiration should not be further expired."); Assert.IsFalse(removedItem.WillBeExpired, "User removal of this object should reset its expiration flag"); Assert.AreEqual(0, expiredItemsCount); }
public void WillDoCallbackAtExpiration() { CacheItem removedItem = new CacheItem("1", "value", CacheItemPriority.Normal, new MockRefreshAction(), new AlwaysExpired()); removedItem.WillBeExpired = true; AddCacheItem("1", removedItem); ExpirationTask expirer = new ExpirationTask(this, instrumentationProvider); int expiredItemsCount = expirer.SweepExpiredItemsFromCache(inMemoryCache); Thread.Sleep(250); Assert.AreEqual(1, callbackCount, "Refresh action should be taken for expired items if it exists"); Assert.AreEqual(CacheItemRemovedReason.Expired, callbackReason); Assert.AreEqual(1, expiredItemsCount); }
public void ExceptionThrownInCallbackDoesNotStopOtherCallbacksFromExecuting() { CacheItem exceptionThrowingCacheItem = new CacheItem("ThrowException", "value", CacheItemPriority.Normal, new ExceptionThrowingMockRefreshAction(), null); CacheItem normalCacheItem = new CacheItem("normal", "value2", CacheItemPriority.Normal, new MockRefreshAction(), null); exceptionThrowingCacheItem.WillBeExpired = true; normalCacheItem.WillBeExpired = true; AddCacheItem("ThrowException", exceptionThrowingCacheItem); AddCacheItem("normal", normalCacheItem); ExpirationTask expirer = new ExpirationTask(this, instrumentationProvider); int expiredItemsCount = expirer.SweepExpiredItemsFromCache(inMemoryCache); Thread.Sleep(250); Assert.AreEqual(1, callbackCount, "Second item was still refreshed despite first refresh action throwing exception"); Assert.AreEqual(CacheItemRemovedReason.Expired, callbackReason); Assert.AreEqual(2, expiredItemsCount); }