public void TestReturnsCachedItemWithinPeriod_ListType() { var cache = new DictionaryCache <IAwesomeInterface>(); var configProvider = new BasicConfigurationProvider <IAwesomeInterface>(); configProvider.For(a => a.ParameteredMethod(Param.IsAny <string>(), Param.IsAny <int>(), Param.IsAny <List <string> >())).CacheFor(10); var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameteredMethod("a", 2, new List <string>() { "a", "b" })); var val = Enumerable.Empty <string>(); var cachePolicy = configProvider.GetPolicy(proxyContext.Method, proxyContext.Parameters); Assert.IsNotNull(cachePolicy, "Config provider didn't return a cache policy"); Assert.IsTrue(cachePolicy.CacheDuration == 10, "Cache provider returned an unexpected cache policy"); cache.StoreItem(proxyContext, cachePolicy, val); var returnedValue = cache.GetItem(proxyContext, cachePolicy); Assert.AreEqual(val, returnedValue.Object); }
public void TestILGenerator() { var generator = new ILGenProxyGenerator(); var proxyType = generator.CreateProxy <IAwesomeInterface>(); var instanceMock = new Mock <IAwesomeInterface>(); var proxyHandlerMock = new Mock <IProxyHandler <IAwesomeInterface> >(); var proxy = (IAwesomeInterface)Activator.CreateInstance(proxyType, instanceMock.Object, proxyHandlerMock.Object); proxy.FaulyCachedMethod(); var proxyRequest1 = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.FaulyCachedMethod()); instanceMock.Verify(a => a.FaulyCachedMethod(), Times.Never()); proxyHandlerMock.Verify(a => a.HandleRequest(proxyRequest1), Times.Once()); proxy.VoidMethod(); instanceMock.Verify(a => a.VoidMethod(), Times.Once()); proxy.ParameteredMethod("", 1); var proxyRequest2 = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameteredMethod("", 1)); instanceMock.Verify(a => a.ParameteredMethod("", 1), Times.Never()); proxyHandlerMock.Verify(a => a.HandleRequest(proxyRequest2)); }
public void TestParameterless() { var configuredMethod = GetConfiguredMethod <IAwesomeInterface>(a => a.ParameterlessMethod()); var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameterlessMethod()); var matched = configuredMethod.IsMatch(proxyContext.Method, proxyContext.Parameters); Assert.IsTrue(matched, "MethodConfig didn't match"); }
public void TestPurgeItem() { var memcachedMock = new Mock <IMemcachedClient>(); var enyimProvider = new EnyimMemcachedProvider <IAwesomeInterface>(memcachedMock.Object); var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameteredMethod("", 1)); var hashKey = proxyContext.CreateHash(); enyimProvider.Purge(a => a.ParameteredMethod("", 1)); memcachedMock.Verify(a => a.Remove(hashKey), Times.Once()); }
public void TestStoreException() { var memcachedMock = new Mock <IMemcachedClient>(); var enyimProvider = new EnyimMemcachedProvider <IAwesomeInterface>(memcachedMock.Object); var cachePolicy = new CachePolicy() { CacheDuration = 10 }; var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameteredMethod("", 1)); var hashKey = proxyContext.CreateHash(); enyimProvider.StoreException <IEnumerable <string> >(proxyContext, cachePolicy, new Exception()); memcachedMock.Verify(a => a.Store(StoreMode.Set, hashKey, It.IsAny <MemcachedObject <IEnumerable <string> > >()), Times.Once()); //We can't test properly if it created the object correctly. }
public void TestStoreItem_AbsoluteExpire() { var memcachedMock = new Mock <IMemcachedClient>(); var enyimProvider = new EnyimMemcachedProvider <IAwesomeInterface>(memcachedMock.Object); var cachePolicy = new CachePolicy() { CacheDuration = 10, MaxAge = 20 }; var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameteredMethod("", 1)); var hashKey = proxyContext.CreateHash(); var objectToStore = new[] { "", "" }.AsEnumerable(); enyimProvider.StoreItem(proxyContext, cachePolicy, objectToStore); memcachedMock.Verify(a => a.Store(StoreMode.Set, hashKey, It.IsAny <MemcachedObject <IEnumerable <string> > >(), TimeSpan.FromSeconds(20)), Times.Once()); }
public void TestReturnsCachedItemWithinPeriod() { ICacheProvider <IDummyInterface> cache = new DictionaryCache <IDummyInterface>(); var configProvider = new BasicConfigurationProvider <IDummyInterface>(); configProvider.For(a => a.GetProgramCards(Param.IsAny <string>(), Param.IsAny <DateTime>())).CacheFor(10); var proxyContext = ProxyRequest <IDummyInterface> .FromExpression(a => a.GetProgramCards("", DateTime.Now)); var val = Enumerable.Empty <object>(); var cachePolicy = configProvider.GetPolicy(proxyContext.Method, proxyContext.Parameters); Assert.IsNotNull(cachePolicy, "Config provider didn't return a cache policy"); Assert.IsTrue(cachePolicy.CacheDuration == 10, "Cache provider returned an unexpected cache policy"); cache.StoreItem(proxyContext, cachePolicy, val); var returnedValue = cache.GetItem(proxyContext, cachePolicy); Assert.AreEqual(val, returnedValue.Object); }
public void TestGetItemFromEmpty() { var memcachedMock = new Mock <IMemcachedClient>(); var enyimProvider = new EnyimMemcachedProvider <IAwesomeInterface>(memcachedMock.Object); var cachePolicy = new CachePolicy() { CacheDuration = 10 }; var proxyContext = ProxyRequest <IAwesomeInterface> .FromExpression(a => a.ParameterlessMethod()); var hashKey = proxyContext.CreateHash(); var result = enyimProvider.GetItem(proxyContext, cachePolicy); Assert.IsTrue(result.State == CachedObjectState.None, "Provider did not return an object with state none"); Assert.IsNull(result.Object, "Provider did not return on object field"); Assert.IsNull(result.ThrownException, "Provider did not return null in exception field"); object val; memcachedMock.Verify(a => a.TryGet(hashKey, out val)); }
public void TestReturnsStaleOutsidePeriod_AbsoluteExpiery() { ICacheProvider <IDummyInterface> cache = new DictionaryCache <IDummyInterface>(); var configProvider = new BasicConfigurationProvider <IDummyInterface>(); configProvider.For(a => a.GetProgramCards(Param.IsAny <string>(), Param.IsAny <DateTime>())).CacheFor(2).ExpireAfter(3); var proxyContext = ProxyRequest <IDummyInterface> .FromExpression(a => a.GetProgramCards("", DateTime.Now)); var val = Enumerable.Empty <object>(); var cachePolicy = configProvider.GetPolicy(proxyContext.Method, proxyContext.Parameters); Assert.IsNotNull(cachePolicy, "Config provider didn't return a cache policy"); Assert.IsTrue(cachePolicy.CacheDuration == 2, "Cache provider returned an unexpected cache policy"); cache.StoreItem(proxyContext, cachePolicy, val); Thread.Sleep(3000 + 100); var returnedValue = cache.GetItem(proxyContext, cachePolicy); Assert.AreEqual(CachedObjectState.None, returnedValue.State); }
public static bool IsMatch <T, TResult>(this IConfiguredMethod <T> method, Expression <Func <T, TResult> > expression) where T : class { var request = ProxyRequest <T> .FromExpression(expression); return(method.IsMatch(request.Method, request.Parameters)); }
private static bool IsMatch <T, TResult>(IConfiguredMethod <T> configuredMethod, Expression <Func <T, TResult> > expression) where T : class { var proxyContext = ProxyRequest <T> .FromExpression(expression); return(configuredMethod.IsMatch(proxyContext.Method, proxyContext.Parameters)); }
private string GetHash <TResult>(Expression <Func <IAwesomeInterface, TResult> > func) { var req = ProxyRequest <IAwesomeInterface> .FromExpression(func); return(req.CreateHash()); }