public void CanScavengeInBackground() { CacheItem item1 = new CacheItem("key1", "value1", CacheItemPriority.Low, null); CacheItem item2 = new CacheItem("key2", "value2", CacheItemPriority.Normal, null); CacheItem item3 = new CacheItem("key3", "value3", CacheItemPriority.High, null); AddCacheItem("key1", item1); AddCacheItem("key2", item2); AddCacheItem("key3", item3); TestConfigurationContext context = new TestConfigurationContext(); CachingConfigurationView view = new CachingConfigurationView(context); view.GetCacheManagerSettings().CacheManagers["test"].MaximumElementsInCacheBeforeScavenging = 2; view.GetCacheManagerSettings().CacheManagers["test"].NumberToRemoveWhenScavenging = 1; CacheCapacityScavengingPolicy scavengingPolicy = new CacheCapacityScavengingPolicy("test", view); ScavengerTask scavenger = new ScavengerTask("test", view, scavengingPolicy, this); BackgroundScheduler scheduler = new BackgroundScheduler(null, scavenger); scheduler.Start(); Thread.Sleep(500); scheduler.StartScavenging(); Thread.Sleep(250); scheduler.Stop(); Thread.Sleep(250); Assert.AreEqual("key1", scavengedKeys); }
public void CanScavengeInBackground() { CacheItem item1 = new CacheItem("key1", "value1", CacheItemPriority.Low, null); CacheItem item2 = new CacheItem("key2", "value2", CacheItemPriority.Normal, null); CacheItem item3 = new CacheItem("key3", "value3", CacheItemPriority.High, null); AddCacheItem("key1", item1); AddCacheItem("key2", item2); AddCacheItem("key3", item3); CacheCapacityScavengingPolicy scavengingPolicy = new CacheCapacityScavengingPolicy(2); ScavengerTask scavenger = new ScavengerTask(1, scavengingPolicy, this, instrumentationProvider); BackgroundScheduler scheduler = new BackgroundScheduler(null, scavenger, instrumentationProvider); scheduler.Start(); Thread.Sleep(500); scheduler.StartScavenging(); Thread.Sleep(250); scheduler.Stop(); Thread.Sleep(250); Assert.AreEqual("key1", scavengedKeys); }
public void SchedulerCanBeStoppedWhenRequested() { BackgroundScheduler scheduler = new BackgroundScheduler(null, null); scheduler.Start(); Thread.Sleep(2500); Assert.IsTrue(scheduler.IsActive); scheduler.Stop(); Thread.Sleep(10000); Assert.IsFalse(scheduler.IsActive); }
public void SchedulerCanBeStoppedWhenRequested() { BackgroundScheduler scheduler = new BackgroundScheduler(null, null, null); scheduler.Start(); Thread.Sleep(2500); Assert.IsTrue(scheduler.IsActive); scheduler.Stop(); Thread.Sleep(10000); Assert.IsFalse(scheduler.IsActive); }
public void CanDoMarkAndSweepInBackground() { CacheItem itemOne = new CacheItem("1", "value", CacheItemPriority.Normal, null, new AbsoluteTime(TimeSpan.FromSeconds(0.5))); AddCacheItem("1", itemOne); ExpirationTask expirer = new ExpirationTask(this); BackgroundScheduler scheduler = new BackgroundScheduler(expirer, null); scheduler.Start(); Thread.Sleep(1000); scheduler.ExpirationTimeoutExpired(null); Thread.Sleep(100); scheduler.Stop(); Assert.AreEqual("1", expiredItemKeys, "Item should have been expired in the background"); }
public CacheManager BuildCacheManager( string cacheManagerName, IBackingStore backingStore, int maximumElementsInCacheBeforeScavenging, int numberToRemoveWhenScavenging, int expirationPollFrequencyInSeconds, CachingInstrumentationProvider instrumentationProvider) { CacheCapacityScavengingPolicy scavengingPolicy = new CacheCapacityScavengingPolicy(maximumElementsInCacheBeforeScavenging); Cache cache = new Cache(backingStore, scavengingPolicy, instrumentationProvider); ExpirationPollTimer timer = new ExpirationPollTimer(); ExpirationTask expirationTask = CreateExpirationTask(cache, instrumentationProvider); ScavengerTask scavengerTask = new ScavengerTask(numberToRemoveWhenScavenging, scavengingPolicy, cache, instrumentationProvider); BackgroundScheduler scheduler = new BackgroundScheduler(expirationTask, scavengerTask, instrumentationProvider); cache.Initialize(scheduler); scheduler.Start(); timer.StartPolling(new TimerCallback(scheduler.ExpirationTimeoutExpired), expirationPollFrequencyInSeconds * 1000); return(new CacheManager(cache, scheduler, timer)); }