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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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());
        }