public void CachedLifetimeReturnsDifferentInstanceIfSlidingTimeoutHaveExpired() { using (var container = new IocContainer()) { // Expires When not Accessed For More than a specific time periode. var lifetime = new CachedLifetime(new TimeSpan(0, 0, 1)); container.Register<IFoo>(c => new Foo1()).SetLifetime(lifetime); var result1 = container.Resolve<IFoo>(); var result2 = container.Resolve<IFoo>(); // Simulate expiry Thread.Sleep(2000); var result3 = container.Resolve<IFoo>(); // Assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); Assert.AreNotSame(result1, result3); } }
public void CachedLifetimeManagerReturnsDifferentObjectIfSlidingTimeExpired() { var cachedltm = new CachedLifetime() .ExpiresAfterNotAccessedFor(new TimeSpan(0, 0, 2)); var container = new Container(); var ireg = container.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = container.Resolve <IFoo>(); var result2 = container.Resolve <IFoo>(); // simulate expiry Thread.Sleep(3000); var result3 = container.Resolve <IFoo>(); Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); // cache not expired Assert.AreNotSame(result2, result3); // cache expired }
public void CallbackIsCalledWhenItemRemovedFromCache() { using (var iocContainer = new IocContainer()) { var cachedltm = new CachedLifetime() .ExpiresAfterNotAccessedFor(new TimeSpan(0, 0, 1)) .CallbackOnRemoval(RemovedCallback); iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); itemRemoved = false; var result1 = iocContainer.Resolve <IFoo>(); // simulate expiry Thread.Sleep(2000); var result2 = iocContainer.Resolve <IFoo>(); Verify.That(result1).IsNotNull(); Verify.That(result2).IsNotNull() .IsNotTheSameObjectAs(result1); Verify.That(itemRemoved).IsTrue(); } }
public void CachedLifetimeManagerReturnsDifferentObjectIfAbsoluteTimeExpired() { var cachedltm = new CachedLifetime() .ExpiresOn(DateTime.UtcNow.AddSeconds(2)); var container = new Container(); var ireg = container.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = container.Resolve <IFoo>(); var result2 = container.Resolve <IFoo>(); // simulate expiry Thread.Sleep(3000); var result3 = container.Resolve <IFoo>(); Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); // cache not expired Assert.AreNotSame(result2, result3); // cache expired }
public void CanSetDefaultLifetimeManagerToCachedLifetime() { var lifetime = new CachedLifetime(); iocContainer.UsesDefaultLifetimeManagerOf(lifetime); Verify.That(iocContainer.DefaultLifetimeManager).IsTheSameObjectAs(lifetime); }
public void IsDependentOnTest() { using (var iocContainer = new IocContainer()) { var executionDirectory = Environment.CurrentDirectory; // create a file for the cached item to be dependent on var filePath = executionDirectory + "\\DependencyFile.txt"; if (File.Exists(filePath)) { File.Delete(filePath); } var dependencyFile = File.CreateText(filePath); dependencyFile.WriteLine("This is a file that the cache item is dependent on."); dependencyFile.Close(); var cachedltm = new CachedLifetime() .IsDependentOn(new CacheDependency(filePath)); iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = iocContainer.Resolve <IFoo>(); var result2 = iocContainer.Resolve <IFoo>(); // change the dependency file dependencyFile = File.AppendText(filePath); dependencyFile.WriteLine("Modified dependecy file."); dependencyFile.Close(); // need to give the system time to detect the change. Thread.Sleep(500); var result3 = iocContainer.Resolve <IFoo>(); // cleanup if (File.Exists(filePath)) { File.Delete(filePath); } Verify.That(result3).IsNotNull(); Verify.That(result1).IsNotNull() .IsTheSameObjectAs(result2) .IsNotTheSameObjectAs(result3); } }
public void CachedLifetimeIsDependentOnTest() { using (var container = new IocContainer()) { var executionDirectory = Environment.CurrentDirectory; // Create a file for the cached item to be dependent on var filePath = executionDirectory + "\\DependencyFile.txt"; if (File.Exists(filePath)) File.Delete(filePath); var dependencyFile = File.CreateText(filePath); dependencyFile.WriteLine("This is a file that the cache item is dependent on."); dependencyFile.Close(); var cacheDependency = new CacheDependency(filePath); var lifetime = new CachedLifetime(cacheDependency); container.Register<IFoo>(c => new Foo1()).SetLifetime(lifetime); var result1 = container.Resolve<IFoo>(); var result2 = container.Resolve<IFoo>(); // Change the dependency file dependencyFile = File.AppendText(filePath); dependencyFile.WriteLine("Modified dependecy file."); dependencyFile.Close(); // Need to give the system time to detect the change. Thread.Sleep(500); var result3 = container.Resolve<IFoo>(); // cleanup if (File.Exists(filePath)) File.Delete(filePath); // Assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); Assert.AreNotSame(result1, result3); } }
public void CachedLifetimeManagerReturnsSameObjectIfCacheNotExpired() { var cachedltm = new CachedLifetime(); iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = iocContainer.Resolve <IFoo>(); var result2 = iocContainer.Resolve <IFoo>(); var result3 = iocContainer.Resolve <IFoo>(); Verify.That(result1).IsNotNull() .IsTheSameObjectAs(result2) .IsTheSameObjectAs(result3); }
public void CachedLifetimeManagerReturnsDifferentObjectIfCacheExpired() { var cachedltm = new CachedLifetime(); var ireg = iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = iocContainer.Resolve <IFoo>(); var result2 = iocContainer.Resolve <IFoo>(); // simulate expiry ireg.InvalidateInstanceCache(); var result3 = iocContainer.Resolve <IFoo>(); Verify.That(result1).IsNotNull() .IsTheSameObjectAs(result2) .IsNotTheSameObjectAs(result3); Verify.That(result3).IsNotNull(); }
public void CachedLifetimeManagerReturnsDifferentObjectIfSlidingTimeExpired() { var cachedltm = new CachedLifetime() .ExpiresAfterNotAccessedFor(new TimeSpan(0, 0, 1)); var ireg = iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = iocContainer.Resolve <IFoo>(); var result2 = iocContainer.Resolve <IFoo>(); // simulate expiry Thread.Sleep(2000); var result3 = iocContainer.Resolve <IFoo>(); Verify.That(result1).IsNotNull() .IsTheSameObjectAs(result2) .IsNotTheSameObjectAs(result3); Verify.That(result3).IsNotNull(); }
public void CachedLifetimeManagerReturnsDifferentObjectIfAbsoluteTimeExpired() { var cachedltm = new CachedLifetime() .ExpiresOn(DateTime.UtcNow.AddSeconds(2)); var ireg = iocContainer.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = iocContainer.Resolve <IFoo>(); var result2 = iocContainer.Resolve <IFoo>(); // simulate expiry Thread.Sleep(3000); var result3 = iocContainer.Resolve <IFoo>(); Verify.That(result1).IsNotNull() .IsTheSameObjectAs(result2) .IsNotTheSameObjectAs(result3); Verify.That(result3).IsNotNull(); }
public void CachedLifetimeManagerReturnsSameObjectIfCacheNotExpired() { var cachedltm = new CachedLifetime(); var container = new Container(); container.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = container.Resolve <IFoo>(); var result2 = container.Resolve <IFoo>(); var result3 = container.Resolve <IFoo>(); Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); // same request Assert.AreSame(result2, result3); // different request }
public void CallbackIsCalledWhenItemRemovedFromCache() { var cachedltm = new CachedLifetime() .ExpiresAfterNotAccessedFor(new TimeSpan(0, 0, 2)) .CallbackOnRemoval(RemovedCallback); var container = new Container(); var ireg = container.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); itemRemoved = false; var result1 = container.Resolve <IFoo>(); // simulate expiry Thread.Sleep(3000); var result2 = container.Resolve <IFoo>(); Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.AreNotSame(result1, result2); Assert.IsTrue(itemRemoved); }
public void CachedLifetimeManagerReturnsDifferentObjectIfCacheExpired() { var cachedltm = new CachedLifetime(); var container = new Container(); var ireg = container.Register <IFoo>(c => new Foo1()) .WithLifetimeManager(cachedltm); var result1 = container.Resolve <IFoo>(); var result2 = container.Resolve <IFoo>(); // simulate expiry HttpRuntime.Cache.Remove(ireg.Id); var result3 = container.Resolve <IFoo>(); Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); // cache not expired Assert.AreNotSame(result2, result3); // cache expired }
public void CachedLifetimeCallbackIsCalledWhenItemRemovedFromCache() { using (var container = new IocContainer()) { var lifetime = new CachedLifetime(new TimeSpan(0, 0, 1), itemRemovedCallback: RemovedCallback); container.Register<IFoo>(c => new Foo1()).SetLifetime(lifetime); _itemRemoved = false; var result1 = container.Resolve<IFoo>(); // Simulate expiry Thread.Sleep(2000); var result2 = container.Resolve<IFoo>(); // Assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.AreNotSame(result1, result2); Assert.IsTrue(_itemRemoved); Assert.IsTrue(_reason == CacheItemRemovedReason.Expired); } }
public void CachedLifetimeReturnsSameInstanceIfCacheNotExpired() { using (var container = new IocContainer()) { var lifetime = new CachedLifetime(new TimeSpan(0, 0, 3)); container.Register<IFoo>(c => new Foo1()).SetLifetime(lifetime); var result1 = container.Resolve<IFoo>(); var result2 = container.Resolve<IFoo>(); Thread.Sleep(1000); var result3 = container.Resolve<IFoo>(); // Assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); Assert.IsNotNull(result3); Assert.AreSame(result1, result2); Assert.AreSame(result1, result3); } }