public void RedisNotificationBus_WhenInvalidation_ShouldRemoveFromDefaultCache() { var lcache = new MemoryCache(Guid.NewGuid().ToString()); var bus = new RedisNotificationBus("localhost:6379", new InvalidationSettings() { TargetCache = lcache, InvalidationStrategy = InvalidationStrategyType.AutoCacheRemoval }); bus.Connection = this.MockOfConnection.Object; var monitor = new RedisChangeMonitor(bus.Notifier, "mykey"); lcache.Add("mykey", DateTime.UtcNow, new CacheItemPolicy() { AbsoluteExpiration = DateTime.UtcNow.AddDays(1), ChangeMonitors = { monitor } }); bus.Start(); //act this.NotificationEmitter(Constants.DEFAULT_INVALIDATION_CHANNEL, "mykey"); //assert Assert.False(lcache.Contains("mykey")); Assert.True(monitor.IsDisposed); }
public void WhenExceptionInCtor_ShouldBeDisposed() { this.mockOfBus.Setup(e => e.Subscribe(It.IsAny <string>(), It.IsAny <INotificationObserver <string> >())).Throws <InvalidOperationException>(); var monitor = new RedisChangeMonitor(this.Bus, notifKey); Assert.True(monitor.IsDisposed); }
public void RedisNotificationBus_WhenInvalidation_ShouldInvokeCallback() { var lcache = new MemoryCache(Guid.NewGuid().ToString()); var called = false; Action <string> cb = s => { called = true; }; var bus = new RedisNotificationBus("localhost:6379", new InvalidationSettings() { InvalidationStrategy = InvalidationStrategyType.External, InvalidationCallback = cb }); bus.Connection = this.MockOfConnection.Object; var monitor = new RedisChangeMonitor(bus.Notifier, "mykey"); lcache.Add("mykey", DateTime.UtcNow, new CacheItemPolicy() { AbsoluteExpiration = DateTime.UtcNow.AddDays(1), ChangeMonitors = { monitor } }); bus.Start(); //act this.NotificationEmitter(Constants.DEFAULT_INVALIDATION_CHANNEL, "mykey"); //assert Assert.True(lcache.Contains("mykey")); Assert.False(monitor.IsDisposed); Assert.True(called); }
public void WhenChanged_ShouldBeDisposed() { var monitor = new RedisChangeMonitor(this.Bus, notifKey); monitor.Notify(notifKey); Assert.True(monitor.IsDisposed); this.mockOfBus.Verify(e => e.Subscribe(notifKey, monitor), Times.Once); this.mockOfDispose.Verify(e => e.Dispose(), Times.Once); }
public void WhenCtor_ShouldHaveUniqueId() { var monitor1 = new RedisChangeMonitor(this.Bus, notifKey); Assert.NotNull(monitor1); Assert.True(monitor1.UniqueId.Length > 0); var monitor2 = new RedisChangeMonitor(this.Bus, notifKey); Assert.NotNull(monitor2); Assert.True(monitor2.UniqueId.Length > 0); Assert.NotSame(monitor1.UniqueId, monitor2.UniqueId); }
public void RedisNotificationBus_WhenInvalidation_ShouldDisposeMonitor() { var lcache = new MemoryCache(Guid.NewGuid().ToString()); var bus = new RedisNotificationBus("localhost:6379", new InvalidationSettings() { TargetCache = lcache, InvalidationStrategy = InvalidationStrategyType.ChangeMonitor }); bus.Connection = this.MockOfConnection.Object; var monitor = new RedisChangeMonitor(bus.Notifier, "mykey"); lcache.Add("mykey", DateTime.UtcNow, new CacheItemPolicy() { AbsoluteExpiration = DateTime.UtcNow.AddDays(1), ChangeMonitors = { monitor } }); bus.Start(); //act this.NotificationEmitter(Constants.DEFAULT_INVALIDATION_CHANNEL, "mykey"); //assert Assert.False(lcache.Contains("mykey")); Assert.True(monitor.IsDisposed); }
public void WhenExceptionInCtor_ShouldBeDisposed() { this.mockOfBus.Setup(e => e.Subscribe(It.IsAny<string>(), It.IsAny<INotificationObserver<string>>())).Throws<InvalidOperationException>(); var monitor = new RedisChangeMonitor(this.Bus, notifKey); Assert.True(monitor.IsDisposed); }
public void WhenCtor_ShouldBeRegistered() { var monitor = new RedisChangeMonitor(this.Bus, notifKey); this.mockOfBus.Verify(e => e.Subscribe(notifKey, monitor), Times.Once); }
public void WhenCtorWithoutBusBadArgs_ShouldThrowArgumentNullException() { Assert.Throws<ArgumentNullException>(() => { var monitor = new RedisChangeMonitor(null, notifKey); }); Assert.Throws<ArgumentNullException>(() => { var monitor = new RedisChangeMonitor(this.Bus, null); }); }
private static CacheItem CreateCacheItemAndAdd(MemoryCache target, string cacheKey, RedisChangeMonitor monitor = null) { var cacheItem = new CacheItem(cacheKey, DateTime.Now); var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow.AddDays(1) }; if (monitor != null) { policy.ChangeMonitors.Add(monitor); } target.Add(cacheItem, policy); return(cacheItem); }
public void WhenCtorWithoutBusBadArgs_ShouldThrowArgumentNullException() { Assert.Throws <ArgumentNullException>(() => { var monitor = new RedisChangeMonitor(null, notifKey); }); Assert.Throws <ArgumentNullException>(() => { var monitor = new RedisChangeMonitor(this.Bus, null); }); }
private static CacheItem CreateCacheItemAndAdd(MemoryCache target, string cacheKey, RedisChangeMonitor monitor = null) { var cacheItem = new CacheItem(cacheKey, DateTime.Now); var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow.AddDays(1) }; if (monitor != null) policy.ChangeMonitors.Add(monitor); target.Add(cacheItem, policy); return cacheItem; }