Пример #1
0
        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);
        }
Пример #3
0
        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 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 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); });
 }
Пример #12
0
        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 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;
 }