public void CacheItemPolicy() { //Arrange var entityManager = new EntitiesManager <Category>(new MemoryCache <IEnumerable <Category> >(cachePolicyService)); FieldInfo cacheField = entityManager.GetType().GetField("cache", BindingFlags.NonPublic | BindingFlags.Instance); object cacheFieldValue = cacheField.GetValue(entityManager); MethodInfo method = cacheFieldValue.GetType().GetMethod("Get", new Type[] { typeof(string) }); //Act var entities = entityManager.GetEntities(); using (var dbContext = new Northwind()) { dbContext.Configuration.LazyLoadingEnabled = false; dbContext.Configuration.ProxyCreationEnabled = false; dbContext.Categories.Add(new Category { CategoryName = "Milk products" }); dbContext.SaveChanges(); } Thread.Sleep(3000); IEnumerable <Category> cacheValue = (IEnumerable <Category>)method.Invoke(cacheFieldValue, new object[] { Thread.CurrentPrincipal.Identity.Name + " " + typeof(Category) }); //Assert Assert.IsTrue(entities != null); Assert.IsTrue(cacheValue == null); }
public void CustomersUsingRedisCache() { //Arrange var entityManager = new EntitiesManager <Customer>(new RedisCache <IEnumerable <Customer> >("localhost", cachePolicyService)); FieldInfo cacheField = entityManager.GetType().GetField("cache", BindingFlags.NonPublic | BindingFlags.Instance); object cacheFieldValue = cacheField.GetValue(entityManager); MethodInfo method = cacheFieldValue.GetType().GetMethod("Get", new Type[] { typeof(string) }); //Act var entities = entityManager.GetEntities(); IEnumerable <Customer> cacheValue = (IEnumerable <Customer>)method.Invoke(cacheFieldValue, new object[] { Thread.CurrentPrincipal.Identity.Name + " " + typeof(Customer) }); //Assert Assert.IsTrue(entities != null); Assert.IsTrue(cacheValue != null); Assert.IsTrue(cacheValue.Any()); }
public void ExcpirationTimeTestInvalidation() { //Arrange var entityManager = new EntitiesManager <Category>(new MemoryCache <IEnumerable <Category> >(cachePolicyService)); FieldInfo cacheField = entityManager.GetType().GetField("cache", BindingFlags.NonPublic | BindingFlags.Instance); object cacheFieldValue = cacheField.GetValue(entityManager); MethodInfo method = cacheFieldValue.GetType().GetMethod("Get", new Type[] { typeof(string) }); double interval = Convert.ToDouble(ConfigurationManager.AppSettings["TimeIntervalMilliseconds"]) + 1; //Act var entities = entityManager.GetEntities(); System.Threading.Thread.Sleep(Convert.ToInt32(interval)); IEnumerable <Category> cacheValue = (IEnumerable <Category>)method.Invoke(cacheFieldValue, new object[] { Thread.CurrentPrincipal.Identity.Name + " " + typeof(Category) }); //Assert Assert.IsTrue(entities != null); Assert.IsTrue(cacheValue == null); }