public virtual void TestObjectCacheInvalidationWithOneRoot(TestCacheProvider cacheProvider) { var cacheService = EFServiceProvider.GetCacheServiceProvider(cacheProvider); var efCachePolicy = new EFCachePolicy().Timeout(TimeSpan.FromMinutes(10)).ExpirationMode(CacheExpirationMode.Absolute); const string rootCacheKey = "EFSecondLevelCache.Core.AspNetCoreSample.DataLayer.Entities.Product"; cacheService.InvalidateCacheDependencies(new EFCacheKey { CacheDependencies = new HashSet <string> { rootCacheKey } }); var key11888622 = new EFCacheKey { KeyHash = "11888622", CacheDependencies = new HashSet <string> { rootCacheKey } }; var val11888622 = cacheService.GetValue(key11888622, efCachePolicy); Assert.IsNull(val11888622); cacheService.InsertValue( key11888622, new EFCachedData { Scalar = "Test1" }, efCachePolicy); var key44513A63 = new EFCacheKey { KeyHash = "44513A63", CacheDependencies = new HashSet <string> { rootCacheKey } }; var val44513A63 = cacheService.GetValue(key44513A63, efCachePolicy); Assert.IsNull(val44513A63); cacheService.InsertValue( key44513A63, new EFCachedData { Scalar = "Test1" }, efCachePolicy); cacheService.InvalidateCacheDependencies(new EFCacheKey { CacheDependencies = new HashSet <string> { rootCacheKey } }); val11888622 = cacheService.GetValue(key11888622, efCachePolicy); Assert.IsNull(val11888622); val44513A63 = cacheService.GetValue(key44513A63, efCachePolicy); Assert.IsNull(val44513A63); }
public virtual void TestParallelInsertsAndRemoves(TestCacheProvider cacheProvider) { var cacheService = EFServiceProvider.GetCacheServiceProvider(cacheProvider); var efCachePolicy = new EFCachePolicy().Timeout(TimeSpan.FromMinutes(10)).ExpirationMode(CacheExpirationMode.Absolute); var tests = new List <Action>(); for (var i = 0; i < 4000; i++) { var i1 = i; tests.Add(() => cacheService.InsertValue( new EFCacheKey(new HashSet <string> { "entity1", "entity2" }) { KeyHash = $"EF_key{i1}" }, new EFCachedData { NonQuery = i1 }, efCachePolicy)); } for (var i = 0; i < 400; i++) { if (i % 2 == 0) { tests.Add(() => cacheService.InvalidateCacheDependencies(new EFCacheKey(new HashSet <string> { "entity1" }) { KeyHash = $"EF_key{i}" })); } else { tests.Add(() => cacheService.InvalidateCacheDependencies(new EFCacheKey(new HashSet <string> { "entity2" }) { KeyHash = $"EF_key{i}" })); } } Parallel.Invoke(tests.OrderBy(a => RandomNumberProvider.Next()).ToArray()); var value1 = cacheService.GetValue(new EFCacheKey(new HashSet <string> { "entity1", "entity2" }) { KeyHash = "EF_key1" }, efCachePolicy); Assert.IsNull(value1); }
public virtual void TestCacheInvalidationWithSimilarRoots(TestCacheProvider cacheProvider) { var cacheService = EFServiceProvider.GetCacheServiceProvider(cacheProvider); var efCachePolicy = new EFCachePolicy().Timeout(TimeSpan.FromMinutes(10)).ExpirationMode(CacheExpirationMode.Absolute); var key1 = new EFCacheKey { KeyHash = "EF_key1", CacheDependencies = new HashSet <string> { "entity1", "entity2" } }; cacheService.InsertValue( key1, new EFCachedData { Scalar = "value1" }, efCachePolicy); var key2 = new EFCacheKey { KeyHash = "EF_key2", CacheDependencies = new HashSet <string> { "entity2" } }; cacheService.InsertValue( key2, new EFCachedData { Scalar = "value2" }, efCachePolicy); var value1 = cacheService.GetValue(key1, efCachePolicy); Assert.IsNotNull(value1); var value2 = cacheService.GetValue(key2, efCachePolicy); Assert.IsNotNull(value2); cacheService.InvalidateCacheDependencies(new EFCacheKey { CacheDependencies = new HashSet <string> { "entity2" } }); value1 = cacheService.GetValue(key1, efCachePolicy); Assert.IsNull(value1); value2 = cacheService.GetValue(key2, efCachePolicy); Assert.IsNull(value2); }
public virtual void TestInsertingNullValues(TestCacheProvider cacheProvider) { var cacheService = EFServiceProvider.GetCacheServiceProvider(cacheProvider); var efCachePolicy = new EFCachePolicy().Timeout(TimeSpan.FromMinutes(10)).ExpirationMode(CacheExpirationMode.Absolute); var key1 = new EFCacheKey(new HashSet <string> { "entity1", "entity2" }) { KeyHash = "EF_key1" }; cacheService.InsertValue( key1, null, efCachePolicy); var value1 = cacheService.GetValue(key1, efCachePolicy); Assert.IsTrue(value1.IsNull, $"value1 is `{value1}`"); }
private static void clearAllCachedEntries() { EFServiceProvider.GetCacheServiceProvider(TestCacheProvider.CacheManagerCoreRedis).ClearAllCachedEntries(); }