public void GetOrCreateWithslidingExpiration() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate<Guid>(key, () => val, TimeSpan.FromSeconds(1.5D)); Assert.AreEqual(result, val); { Thread.Sleep(1000); var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { Thread.Sleep(1000); var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { Thread.Sleep(2000); var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); } }
public void Concurrency() { var cacheProvider1 = new HttpRuntimeCacheProvider("g"); var cacheProvider2 = new HttpRuntimeCacheProvider("h"); var tasks = new List<Task>(); var total = 10; for (int i = 0; i < total; i++) { if ((Guid.NewGuid().GetHashCode() & 1) == 0) { tasks.Add(new Task(action: x => cacheProvider1.GetOrCreate(x.ToString(), k => x), state: i)); } else { tasks.Add(new Task(action: x => cacheProvider2.GetOrCreate(x.ToString(), k => x), state: i)); } } foreach (var task in tasks) { task.Start(); } Task.WaitAll(tasks.ToArray(), CancellationToken.None); var count1 = cacheProvider1.Count(); var count2 = cacheProvider2.Count(); Assert.AreEqual(count1 + count2, total); cacheProvider1.Dump(); cacheProvider2.Dump(); cacheProvider1.ExpireAll(); Assert.IsTrue(cacheProvider1.Count() == 0); Assert.IsTrue(cacheProvider2.Count() == count2); }
public void Concurrency() { var cacheProvider1 = new HttpRuntimeCacheProvider("g"); var cacheProvider2 = new HttpRuntimeCacheProvider("h"); var tasks = new List <Task>(); var total = 10; for (int i = 0; i < total; i++) { if ((Guid.NewGuid().GetHashCode() & 1) == 0) { tasks.Add(new Task(action: x => cacheProvider1.GetOrCreate(x.ToString(), k => x), state: i)); } else { tasks.Add(new Task(action: x => cacheProvider2.GetOrCreate(x.ToString(), k => x), state: i)); } } foreach (var task in tasks) { task.Start(); } Task.WaitAll(tasks.ToArray(), CancellationToken.None); var count1 = cacheProvider1.Count(); var count2 = cacheProvider2.Count(); Assert.AreEqual(count1 + count2, total); cacheProvider1.ExpireAll(); Assert.IsTrue(cacheProvider1.Count() == 0); Assert.IsTrue(cacheProvider2.Count() == count2); }
public void Duplicate2() { var key = Guid.NewGuid().ToString(); //region a 创建 key->val1 var cacheProvider1 = new HttpRuntimeCacheProvider("c"); cacheProvider1.GetOrCreate <Guid>(key, k => Guid.NewGuid()); Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider1).Count() == 1); //reigon b 创建 key-val2 var cacheProvider2 = new HttpRuntimeCacheProvider("d"); cacheProvider2.GetOrCreate <Guid>(key, k => Guid.NewGuid()); Assert.IsTrue(cacheProvider2.Count() == 1); //确认reigon a 键 key 与 region b 键 key 对应值不同 Guid val1; var exist1 = cacheProvider1.TryGet <Guid>(key, out val1); Assert.IsTrue(exist1); Guid val2; var exist2 = cacheProvider2.TryGet <Guid>(key, out val2); Assert.IsTrue(exist2); Assert.AreNotEqual(val1, val2); }
public void GetOrCreateWithslidingExpiration() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate <Guid>(key, () => val, TimeSpan.FromSeconds(1.5D)); Assert.AreEqual(result, val); { Thread.Sleep(1000); var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { Thread.Sleep(1000); var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { Thread.Sleep(2000); var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); } }
public void ExpireAll() { var key = Guid.NewGuid().ToString(); //region a 创建 key->val1 var cacheProvider1 = new HttpRuntimeCacheProvider("e"); cacheProvider1.GetOrCreate <Guid>(key, k => Guid.NewGuid()); //reigon b 创建 key-val2 var cacheProvider2 = new HttpRuntimeCacheProvider("f"); cacheProvider2.GetOrCreate <Guid>(key, k => Guid.NewGuid()); //region a 过期全部, 确认 region b 未被过期 cacheProvider1.ExpireAll(); Guid val1; var exist = cacheProvider1.TryGet <Guid>(key, out val1); Assert.IsFalse(exist); Assert.AreEqual(val1, Guid.Empty); Guid val2; var exist2 = cacheProvider2.TryGet <Guid>(key, out val2); Assert.IsTrue(exist2); }
public void TryGet() { var key = Guid.NewGuid().ToString(); Guid val; IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); }
public void Callback() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); HttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var expireCallback = new CacheItemUpdateCallback(Callback); cacheProvider.Overwrite(key, val, DateTime.Now.AddSeconds(4D), expireCallback); Thread.Sleep(5000); }
public void TryGet() { var key = Guid.NewGuid().ToString(); Guid val; IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); }
public void NullCache() { var key = Guid.NewGuid().ToString(); Object val; IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var exist = cacheProvider.TryGet<Object>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, null); cacheProvider.Overwrite(key, val); exist = cacheProvider.TryGet<Object>(key, out val); Assert.IsNull(val); }
public void NullCache() { var key = Guid.NewGuid().ToString(); Object val; IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var exist = cacheProvider.TryGet <Object>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, null); cacheProvider.Overwrite(key, val); exist = cacheProvider.TryGet <Object>(key, out val); Assert.IsNull(val); }
public void Expire() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate <Guid>(key, () => val); Assert.AreEqual(result, val); cacheProvider.Expire(key); Guid val2; var exist = cacheProvider.TryGet <Guid>(key, out val2); Assert.IsFalse(exist); Assert.AreEqual(val2, Guid.Empty); }
public void Duplicate() { var key = Guid.NewGuid().ToString(); var val1 = Guid.NewGuid(); //region a 创建 key->val1 HttpRuntimeCacheProvider cacheProvider1 = new HttpRuntimeCacheProvider("a"); var result = cacheProvider1.GetOrCreate<Guid>(key, k => val1); Assert.AreEqual(result, val1); Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider1).Count() == 1); //reigon b 确认不存在键 key HttpRuntimeCacheProvider cacheProvider2 = new HttpRuntimeCacheProvider("b"); Assert.IsTrue(cacheProvider2.Count() == 0); Guid val2; var exist = cacheProvider2.TryGet<Guid>(key, out val2); Assert.IsFalse(exist); Assert.AreEqual(val2, Guid.Empty); }
public void GetOrCreateWithAbsoluteExpiration() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate <Guid>(key, () => val, DateTime.UtcNow.AddSeconds(2D)); Assert.AreEqual(result, val); var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); Thread.Sleep(2000); exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); }
public void Overwrite() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate <Guid>(key, () => val); Assert.AreEqual(result, val); var val2 = Guid.NewGuid(); cacheProvider.Overwrite <Guid>(key, val2); Guid val3; var exist = cacheProvider.TryGet <Guid>(key, out val3); Assert.IsTrue(exist); Assert.AreEqual(val3, val2); }
public void ExpireAll() { var key = Guid.NewGuid().ToString(); //region a 创建 key->val1 var cacheProvider1 = new HttpRuntimeCacheProvider("e"); cacheProvider1.GetOrCreate<Guid>(key, k => Guid.NewGuid()); //reigon b 创建 key-val2 var cacheProvider2 = new HttpRuntimeCacheProvider("f"); cacheProvider2.GetOrCreate<Guid>(key, k => Guid.NewGuid()); //region a 过期全部, 确认 region b 未被过期 cacheProvider1.ExpireAll(); Guid val1; var exist = cacheProvider1.TryGet<Guid>(key, out val1); Assert.IsFalse(exist); Assert.AreEqual(val1, Guid.Empty); Guid val2; var exist2 = cacheProvider2.TryGet<Guid>(key, out val2); Assert.IsTrue(exist2); }
public void GetOrCreate() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); var cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate<Guid>(key, () => val); Assert.AreEqual(result, val); { var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { var result2 = cacheProvider.GetOrCreate<Guid>(key, () => { Assert.Fail(); return Guid.NewGuid(); }); Assert.AreEqual(result2, val); } }
public void Duplicate() { var key = Guid.NewGuid().ToString(); var val1 = Guid.NewGuid(); //region a 创建 key->val1 HttpRuntimeCacheProvider cacheProvider1 = new HttpRuntimeCacheProvider("a"); var result = cacheProvider1.GetOrCreate <Guid>(key, k => val1); Assert.AreEqual(result, val1); Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider1).Count() == 1); //reigon b 确认不存在键 key HttpRuntimeCacheProvider cacheProvider2 = new HttpRuntimeCacheProvider("b"); Assert.IsTrue(cacheProvider2.Count() == 0); Guid val2; var exist = cacheProvider2.TryGet <Guid>(key, out val2); Assert.IsFalse(exist); Assert.AreEqual(val2, Guid.Empty); }
public void Flush() { var cacheProvider = new HttpRuntimeCacheProvider(); cacheProvider.Overwrite("id", 21685); cacheProvider.Overwrite("begin", DateTime.Now); cacheProvider.Flush(k => true); cacheProvider = new HttpRuntimeCacheProvider("User"); cacheProvider.Overwrite("13", new User { Id = 13, Name = "Rattz", Age = 20, Address = new[] { "Beijing", "Wuhan" } }); cacheProvider.Overwrite("14", new User { Id = 14, Name = "Kate", Age = 18, Address = new[] { "Tokyo", "Los Angeles" } }); cacheProvider.Flush(k => k == "13"); cacheProvider.Restore <User>("13"); cacheProvider = new HttpRuntimeCacheProvider("Job"); cacheProvider.Overwrite("52", new { Id = 52, Title = "Software Engineer", Salary = 10000 }); cacheProvider.Overwrite("100", new { Id = 100, Title = "Gwhilsttroenterologist", Salary = 12000 }); cacheProvider.Flush(k => true); }
public void Duplicate2() { var key = Guid.NewGuid().ToString(); //region a 创建 key->val1 var cacheProvider1 = new HttpRuntimeCacheProvider("c"); cacheProvider1.GetOrCreate<Guid>(key, k => Guid.NewGuid()); Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider1).Count() == 1); //reigon b 创建 key-val2 var cacheProvider2 = new HttpRuntimeCacheProvider("d"); cacheProvider2.GetOrCreate<Guid>(key, k => Guid.NewGuid()); Assert.IsTrue(cacheProvider2.Count() == 1); //确认reigon a 键 key 与 region b 键 key 对应值不同 Guid val1; var exist1 = cacheProvider1.TryGet<Guid>(key, out val1); Assert.IsTrue(exist1); Guid val2; var exist2 = cacheProvider2.TryGet<Guid>(key, out val2); Assert.IsTrue(exist2); Assert.AreNotEqual(val1, val2); }
public void Concurrency() { HttpRuntimeCacheProvider cacheProvider1 = (HttpRuntimeCacheProvider)CacheProviderFactory.GetHttpRuntimeCache("g"); HttpRuntimeCacheProvider cacheProvider2 = (HttpRuntimeCacheProvider)CacheProviderFactory.GetHttpRuntimeCache("h"); var tasks = new List <Task>(); for (int i = 0; i < 100; i++) { if ((Guid.NewGuid().GetHashCode() & 1) == 0) { tasks.Add(new Task(action: x => cacheProvider1.GetOrCreate(x.ToString(), k => x), state: i)); } else { tasks.Add(new Task(action: x => cacheProvider2.GetOrCreate(x.ToString(), k => x), state: i)); } } foreach (var task in tasks) { task.Start(); } Task.WaitAll(tasks.ToArray(), CancellationToken.None); var count1 = cacheProvider1.Count(); var count2 = cacheProvider2.Count(); cacheProvider1.ExpireAll(); Assert.IsTrue(cacheProvider1.Count() == 0); Assert.IsTrue(cacheProvider2.Count() == count2); foreach (var entry in System.Web.HttpRuntime.Cache.OfType <DictionaryEntry>()) { Console.WriteLine("{0}: {1}", entry.Key, entry.Value); } }
public void GetOrCreate() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); var cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate <Guid>(key, () => val); Assert.AreEqual(result, val); { var exist = cacheProvider.TryGet <Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); } { var result2 = cacheProvider.GetOrCreate <Guid>(key, () => { Assert.Fail(); return(Guid.NewGuid()); }); Assert.AreEqual(result2, val); } }
public override void Setup() { base.Setup(); _provider = new HttpRuntimeCacheProvider(HttpRuntime.Cache); }
public void Overwrite() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate<Guid>(key, () => val); Assert.AreEqual(result, val); var val2 = Guid.NewGuid(); cacheProvider.Overwrite<Guid>(key, val2); Guid val3; var exist = cacheProvider.TryGet<Guid>(key, out val3); Assert.IsTrue(exist); Assert.AreEqual(val3, val2); }
public void ExpireAll() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); HttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate<Guid>(key, () => val); Assert.AreEqual(result, val); Assert.IsTrue(cacheProvider.Count() > 0); cacheProvider.ExpireAll(); Guid val2; var exist = cacheProvider.TryGet<Guid>(key, out val2); Assert.IsFalse(exist); Assert.AreEqual(val2, Guid.Empty); Assert.IsTrue(cacheProvider.Count() == 0); }
public void GetOrCreateWithAbsoluteExpiration() { var key = Guid.NewGuid().ToString(); var val = Guid.NewGuid(); IHttpRuntimeCacheProvider cacheProvider = new HttpRuntimeCacheProvider(); var result = cacheProvider.GetOrCreate<Guid>(key, () => val, DateTime.UtcNow.AddSeconds(2D)); Assert.AreEqual(result, val); var exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsTrue(exist); Assert.AreEqual(result, val); Thread.Sleep(2000); exist = cacheProvider.TryGet<Guid>(key, out val); Assert.IsFalse(exist); Assert.AreEqual(val, Guid.Empty); }