clicache/integration-test/DurableListenerN.cs (122 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Threading; using System.Collections.Generic; namespace Apache.Geode.Client.UnitTests { using NUnit.Framework; using Apache.Geode.DUnitFramework; using Apache.Geode.Client; //using Com.Vmware.Cache; //using Region = Com.Vmware.Cache.IRegion<object, object>; class DurableListener<TKey, TVal> : ICacheListener<TKey, TVal> { #region Private members private int m_ops = 0; private Dictionary<object, object> m_map = new Dictionary<object, object>(); #endregion #region Public accessors public int Ops { get { return m_ops; } } #endregion public static DurableListener<TKey, TVal> Create() { Util.Log(" DurableListener Created"); return new DurableListener<TKey, TVal>(); } private void check(EntryEvent<TKey, TVal> ev) { m_ops++; //CacheableString key = ev.Key as CacheableString; //ICacheableKey<TKey> key = ev.Key; //TVal value = ev.NewValue; object key = (object)ev.Key; object value = (object)ev.NewValue; //object key = (object)ev.Key; //object value = (object)ev.NewValue; //CacheableInt32 value = ev.NewValue as CacheableInt32; //object value = (object)ev.NewValue; //object key1 = key.Value; //int value1 = (int)value; //if (m_map.ContainsKey(key)) //{ // //CacheableInt32 old = m_map[key] as CacheableInt32; // //TVal old =(TVal) m_map[(TKey)key]; // object old = m_map[key]; // Assert.AreEqual(value, old /*old + 1*/, "Duplicate or older value received"); //} Util.Log("key={0} and Value={1}", key, value); Util.Log("key={0} and Value={1}", key.GetType(), value.GetType()); m_map[key] = value; } // this method for the ThinClientDurableTests public void validate(int keys, int durable, int nondurable) { string msg1 = string.Format("Expected {0} keys but got {1}", keys, m_map.Count); Assert.AreEqual(keys, m_map.Count, msg1); int total = keys * (durable + nondurable) / 2; string msg2 = string.Format("Expected {0} events but got {1}", total, m_ops); Assert.AreEqual(total, m_ops, msg2); foreach (KeyValuePair<object, object> item in m_map) { string key = (string)item.Key; int checkvalue = (int)item.Value; int finalvalue = durable; if (key.StartsWith("Key")) { finalvalue = nondurable; } string msg3 = string.Format("Expected final value for key {0} to be {1} but was {2}", key, finalvalue, checkvalue); Assert.AreEqual(finalvalue, checkvalue, msg3); } } // this method for the ThinClientDurableTests public void validate(int keys, int total) { string msg1 = string.Format("Expected {0} keys but got {1}", keys, m_map.Count); Assert.AreEqual(keys, m_map.Count, msg1); string msg2 = string.Format("Expected {0} events but got {1}", total, m_ops); Assert.AreEqual(total, m_ops, msg2); int finalvalue = total/keys; foreach (KeyValuePair<object, object> item in m_map) { string key = (string)item.Key; int checkvalue = (int)item.Value; string msg3 = string.Format("Expected final value for key {0} to be {1} but was {2}", key, finalvalue, checkvalue); Assert.AreEqual(finalvalue, checkvalue, msg3); } } //Used for DurableAndNonDurableBasic public void validateBasic(int keyCount, int eventCount, int durableValue, int nonDurableValue) { string msg1 = string.Format("Expected {0} keys but got {1}", keyCount, m_map.Count); Assert.AreEqual(keyCount, m_map.Count, msg1); string msg2 = string.Format("Expected {0} events but got {1}", eventCount, m_ops); Assert.AreEqual(eventCount, m_ops, msg2); foreach (KeyValuePair<object, object> item in m_map) { string key = (string)item.Key; int checkvalue = (int)item.Value; int finalvalue; if (key.StartsWith("D-") || key.StartsWith("LD-")) { // durable key finalvalue = durableValue; } else { finalvalue = nonDurableValue; } string msg3 = string.Format("Expected final value for key {0} to be {1} but was {2}", key, finalvalue, checkvalue); Assert.AreEqual(finalvalue, checkvalue, msg3); } } #region ICacheListener Members public virtual void AfterCreate(EntryEvent<TKey, TVal> ev) { Util.Log("Called AfterCreate()"); check(ev); } public virtual void AfterUpdate(EntryEvent<TKey, TVal> ev) { Util.Log("Called AfterUpdate()"); check(ev); } public virtual void AfterDestroy(EntryEvent<TKey, TVal> ev) { //Increment only count Util.Log("Called AfterDestroy()"); m_ops++; } public virtual void AfterInvalidate(EntryEvent<TKey, TVal> ev) { } public virtual void AfterRegionDestroy(RegionEvent<TKey, TVal> ev) { } public virtual void AfterRegionClear(RegionEvent<TKey, TVal> ev) { } public virtual void AfterRegionInvalidate(RegionEvent<TKey, TVal> ev) { } public virtual void AfterRegionLive(RegionEvent<TKey, TVal> ev) { Util.Log("DurableListener: Received AfterRegionLive event of region: {0}", ev.Region.Name); } public virtual void Close(IRegion<TKey, TVal> region) { } public void AfterRegionDisconnected(IRegion<TKey, TVal> region) { } #endregion } }