コード例 #1
0
        public void TestCacheTriggerListener()
        {
            INamedCache cache = CacheFactory.GetCache(CacheName);

            cache.Clear();

            FilterTrigger ftRollback = new FilterTrigger(NeverFilter.Instance, FilterTrigger.ActionCode.Rollback);
            FilterTrigger ftIgnore   = new FilterTrigger(NeverFilter.Instance, FilterTrigger.ActionCode.Ignore);
            FilterTrigger ftRemove   = new FilterTrigger(NeverFilter.Instance, FilterTrigger.ActionCode.Remove);

            IDictionary dict = new Hashtable();

            for (int i = 0; i < 10; i++)
            {
                dict.Add(GetKeyObject("key" + i), "value" + i);
            }
            cache.InsertAll(dict);

            CacheTriggerListener listener = new CacheTriggerListener(ftIgnore);

            cache.AddCacheListener(listener);
            Assert.AreEqual(cache[GetKeyObject("key1")], "value1");
            cache[GetKeyObject("key1")] = "newvalue";
            Assert.AreEqual(cache[GetKeyObject("key1")], "value1");
            cache.RemoveCacheListener(listener);

            listener = new CacheTriggerListener(ftRemove);
            cache.AddCacheListener(listener);
            Assert.IsTrue(cache.Contains(GetKeyObject("key1")));
            cache[GetKeyObject("key1")] = "newvalue";
            Assert.IsFalse(cache.Contains(GetKeyObject("key1")));
            cache.RemoveCacheListener(listener);

            listener = new CacheTriggerListener(ftRollback);
            cache.AddCacheListener(listener);
            Assert.AreEqual(cache[GetKeyObject("key3")], "value3");
            Exception e = null;

            try
            {
                cache[GetKeyObject("key3")] = "newvalue";
            }
            catch (Exception ex)
            {
                e = ex;
            }
            Assert.IsNotNull(e);
            Assert.AreEqual(cache[GetKeyObject("key3")], "value3");
            cache.RemoveCacheListener(listener);

            CacheFactory.Shutdown();
        }
コード例 #2
0
        public virtual void TestNamedCacheLock()
        {
            INamedCache cache = CacheFactory.GetCache(CacheName);
            string      key   = "testNamedCacheInterfaceMethodsKey";
            string      value = "testNamedCacheInterfaceMethodsValue";

            object[] keys   = { GetKeyObject("key1"), GetKeyObject("key2"), GetKeyObject("key3") };
            string[] values = { "value1", "value2", "value3" };

            cache.Clear();
            Assert.IsTrue(cache.Count == 0);

            cache.Add(GetKeyObject(key), value);
            Assert.AreEqual(cache.Count, 1);
            Assert.AreEqual(cache[GetKeyObject(key)], value);
            Assert.IsTrue(cache.Contains(GetKeyObject(key)));

            cache.Lock(key);
            Assert.AreEqual(cache[GetKeyObject(key)], value);
            cache.Unlock(key);

            cache.Lock(key);
            Assert.AreEqual(cache[GetKeyObject(key)], value);
            cache.Unlock(key);

            CacheFactory.ReleaseCache(cache);
            CacheFactory.Shutdown();
        }
コード例 #3
0
        public void TestNamedCacheMethods()
        {
            INamedCache cache = CacheFactory.GetCache(CacheName);
            string      key   = "testNamedCacheInterfaceMethodsKey";
            string      value = "testNamedCacheInterfaceMethodsValue";

            object[] keys   = { GetKeyObject("key1"), GetKeyObject("key2"), GetKeyObject("key3") };
            string[] values = { "value1", "value2", "value3" };

            cache.Clear();
            Assert.IsTrue(cache.Count == 0);

            cache.Add(GetKeyObject(key), value);
            Assert.AreEqual(cache.Count, 1);
            Assert.AreEqual(cache[GetKeyObject(key)], value);
            Assert.IsTrue(cache.Contains(GetKeyObject(key)));

            object old = cache.Insert(keys[0], values[0]);

            Assert.IsNull(old);
            Assert.AreEqual(cache[keys[0]], values[0]);

            IDictionary h = new Hashtable();

            h.Add(keys[0], values[0]);
            h.Add(keys[1], values[1]);
            h.Add(keys[2], values[2]);

            cache.InsertAll(h);

            IList       list = new ArrayList(keys);
            IDictionary map  = cache.GetAll(list);

            Assert.AreEqual(map.Count, list.Count);
            Assert.AreEqual(cache[keys[1]], map[keys[1]]);

            cache.Remove(GetKeyObject(key));
            Assert.IsNull(cache[GetKeyObject(key)]);

            Binary bin = new Binary(new byte[] { 1, 2, 3 });

            cache.Insert(GetKeyObject("key4"), bin);
            object o = cache[GetKeyObject("key4")];

            Assert.IsNotNull(o);
            Assert.IsInstanceOf(typeof(Binary), o);
            Assert.AreEqual(bin.Length, ((Binary)o).Length);

            CacheFactory.ReleaseCache(cache);
            CacheFactory.Shutdown();
        }
コード例 #4
0
        public void TestPutIfAbsent()
        {
            INamedCache cache = CacheFactory.GetCache(CacheName);

            cache.Clear();

            Hashtable ht = new Hashtable();

            ht.Add("key4", 0);
            ht.Add("key3", -10);
            ht.Add("key2", 45);
            ht.Add("key1", 398);
            cache.InsertAll(ht);

            object result = cache.InsertIfAbsent("key1", 400);

            Assert.AreEqual(398, result);

            result = cache.InsertIfAbsent("key5", 400);
            Assert.AreEqual(null, result);
            Assert.IsTrue(cache.Contains("key5"));
        }
コード例 #5
0
        public virtual void TestLoadBalancer()
        {
            // test that the two remote services connect to a different
            // proxy service
            var service1 = (ICacheService)CacheFactory
                           .GetService("ExtendTcpCacheService");
            var service2 = (ICacheService)CacheFactory
                           .GetService("ExtendTcpCacheService2");
            INamedCache cache1 = service1.EnsureCache("local-test");
            INamedCache cache2 = service2.EnsureCache("local-test");

            cache1.Clear();
            cache2.Clear();
            Object key = "key";

            cache1[key] = "value";

            Assert.IsFalse(cache2.Contains(key),
                           "connected to the same proxy service");

            CacheFactory.Shutdown();
        }