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(); }
public void TestListeners() { INamedCache namedCache = CacheFactory.GetCache(CacheName); Hashtable ht = new Hashtable(); ht.Add(GetKeyObject("Key1"), 435); ht.Add(GetKeyObject("Key2"), 253); ht.Add(GetKeyObject("Key3"), 3); ht.Add(GetKeyObject("Key4"), 200); ht.Add(GetKeyObject("Key5"), 333); namedCache.InsertAll(ht); IFilter greaterThan300 = new GreaterFilter(IdentityExtractor.Instance, 300); IFilter listenerFilter = new CacheEventFilter(new GreaterFilter(IdentityExtractor.Instance, 350)); ContinuousQueryCache queryCache = new ContinuousQueryCache(namedCache, greaterThan300); Listener listener = new SyncListener(); // listener queryCache.AddCacheListener(listener); listener.CacheEvent = null; queryCache.Insert(GetKeyObject("Key7"), 400); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Inserted, listener.CacheEvent.EventType); listener.CacheEvent = null; queryCache.Insert(GetKeyObject("Key7"), 350); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Updated, listener.CacheEvent.EventType); listener.CacheEvent = null; queryCache.Remove(GetKeyObject("Key5")); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Deleted, listener.CacheEvent.EventType); queryCache.RemoveCacheListener(listener); // listener, key, lite namedCache.Clear(); namedCache.InsertAll(ht); queryCache.AddCacheListener(listener, GetKeyObject("Key5"), false); listener.CacheEvent = null; queryCache.Insert(GetKeyObject("Key6"), 400); Assert.IsNull(listener.CacheEvent); queryCache.Insert(GetKeyObject("Key5"), 400); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Updated, listener.CacheEvent.EventType); listener.CacheEvent = null; queryCache.Remove(GetKeyObject("Key1")); Assert.IsNull(listener.CacheEvent); queryCache.Remove(GetKeyObject("Key5")); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Deleted, listener.CacheEvent.EventType); queryCache.RemoveCacheListener(listener, GetKeyObject("Key5")); // listener, filter, lite namedCache.Clear(); namedCache.InsertAll(ht); queryCache.AddCacheListener(listener, listenerFilter, false); listener.CacheEvent = null; queryCache.Insert(GetKeyObject("Key6"), 320); Assert.IsNull(listener.CacheEvent); queryCache.Insert(GetKeyObject("Key5"), 350); Assert.IsNull(listener.CacheEvent); queryCache.Insert(GetKeyObject("Key6"), 400); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Updated, listener.CacheEvent.EventType); listener.CacheEvent = null; queryCache.Insert(GetKeyObject("Key7"), 340); Assert.IsNull(listener.CacheEvent); queryCache.Remove(GetKeyObject("Key7")); Assert.IsNull(listener.CacheEvent); queryCache.Remove(GetKeyObject("Key6")); Assert.IsNotNull(listener.CacheEvent); Assert.AreEqual(CacheEventType.Deleted, listener.CacheEvent.EventType); queryCache.RemoveCacheListener(listener, listenerFilter); // non-sync listener, filter, heavy // COH-2529: Filter-based cache events are reevaluated on the client unncessarily listener = new Listener(); listenerFilter = new CacheEventFilter(new EqualsFilter("getZip", "02144")); namedCache.Clear(); namedCache.AddCacheListener(listener, listenerFilter, false); listener.CacheEvent = null; namedCache[GetKeyObject("Jason")] = new Address("3 TBR #8", "Somerville", "MA", "02144"); listener.waitForEvent(5000); Assert.IsNotNull(listener.CacheEvent); Assert.IsNotNull(listener.CacheEvent.NewValue); Assert.AreEqual(CacheEventType.Inserted, listener.CacheEvent.EventType); listener.CacheEvent = null; listener.waitForEvent(5000); namedCache[GetKeyObject("Oracle")] = new Address("8 NEEP", "Burlington", "MA", "01803"); Assert.IsNull(listener.CacheEvent); namedCache.RemoveCacheListener(listener, listenerFilter); CacheFactory.Shutdown(); }
public void TestListeners() { IConfigurableCacheFactory ccf = CacheFactory.ConfigurableCacheFactory; IXmlDocument config = XmlHelper.LoadXml("assembly://Coherence.Tests/Tangosol.Resources/s4hc-local-cache-config.xml"); ccf.Config = config; INamedCache cache = CacheFactory.GetCache("local-default"); cache.Clear(); SyncListener listen = new SyncListener(); cache.AddCacheListener(listen, "test", false); Assert.IsNull(listen.CacheEvent); cache.Insert("t", "a"); Assert.IsNull(listen.CacheEvent); cache.Insert("tes", "b"); Assert.IsNull(listen.CacheEvent); cache.Insert("test", "c"); Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Inserted); listen.CacheEvent = null; Assert.IsNull(listen.CacheEvent); cache["test"] = "d"; Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Updated); listen.CacheEvent = null; Assert.IsNull(listen.CacheEvent); cache.Remove("test"); Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Deleted); cache.RemoveCacheListener(listen, "test"); CacheEventFilter likeFilter = new CacheEventFilter( new LikeFilter(IdentityExtractor.Instance, "%ic", '\\', false)); cache.AddCacheListener(listen, likeFilter, false); listen.CacheEvent = null; Assert.IsNull(listen.CacheEvent); cache.Insert("key1", "Ratko"); Assert.IsNull(listen.CacheEvent); cache.Insert("key2", "PerIc"); Assert.IsNull(listen.CacheEvent); cache.Insert("key3", "RatkoviC"); Assert.IsNull(listen.CacheEvent); cache.Insert("key4", "Perovic"); Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Inserted); cache.RemoveCacheListener(listen); cache.Clear(); cache.AddCacheListener(listen); listen.CacheEvent = null; Assert.IsNull(listen.CacheEvent); cache.Insert("key1", "Ratko"); Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Inserted); cache.Insert("key1", "Ratko NEW"); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Updated); cache.Insert("key2", "Pera"); Assert.IsNotNull(listen.CacheEvent); Assert.AreEqual(listen.CacheEvent.EventType, CacheEventType.Inserted); cache.RemoveCacheListener(listen); CacheFactory.Shutdown(); }
/// <summary> /// Stop observing changes to the contacts /// </summary> /// <param name="cache">target cache</param> public virtual void Remove(INamedCache cache) { cache.RemoveCacheListener(m_listener); Console.WriteLine("------ContactChangeListener removed------"); Console.WriteLine("------ObserverExample completed------"); }