clicache/integration-test/TallyWriterN.cs (178 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; namespace Apache.Geode.Client.UnitTests { using Apache.Geode.DUnitFramework; using Apache.Geode.Client; class TallyWriter<TKey, TVal> : CacheWriterAdapter<TKey, TVal> { #region Private members private int m_creates = 0; private int m_updates = 0; private int m_invalidates = 0; private int m_destroys = 0; private Object m_callbackArg = null; private int m_clears = 0; private Object m_lastKey = null; private Object m_lastValue = null; private bool isWriterFailed = false; private bool isWriterInvoke = false; private bool isCallbackCalled = false; #endregion #region Public accessors public int Creates { get { return m_creates; } } public int Clears { get { return m_clears; } } public int Updates { get { return m_updates; } } public int Invalidates { get { return m_invalidates; } } public int Destroys { get { return m_destroys; } } public Object LastKey { get { return m_lastKey; } } public Object CallbackArgument { get { return m_callbackArg; } } public Object LastValue { get { return m_lastValue; } } public void SetWriterFailed( ) { isWriterFailed = true; } public void SetCallBackArg( object callbackArg ) { m_callbackArg = callbackArg; } public void ResetWriterInvokation() { isWriterInvoke = false; isCallbackCalled = false; } public bool IsWriterInvoked { get { return isWriterInvoke; } } public bool IsCallBackArgCalled { get { return isCallbackCalled; } } #endregion public int ExpectCreates(int expected) { int tries = 0; while ((m_creates < expected) && (tries < 200)) { Thread.Sleep(100); tries++; } return m_creates; } public int ExpectUpdates(int expected) { int tries = 0; while ((m_updates < expected) && (tries < 200)) { Thread.Sleep(100); tries++; } return m_updates; } public void ShowTallies() { Util.Log("TallyWriter state: (updates = {0}, creates = {1}, invalidates = {2}, destroys = {3})", Updates, Creates, Invalidates, Destroys); } public void CheckcallbackArg<TKey1, TVal1>(EntryEvent<TKey1, TVal1> ev) { Util.Log("TallyWriterN: Checking callback arg for EntryEvent " + "key:{0} oldval: {1} newval:{2} cbArg:{3} for region:{4} and remoteOrigin:{5}", ev.Key, ev.NewValue, ev.OldValue, ev.CallbackArgument, ev.Region.Name, ev.RemoteOrigin); if(!isWriterInvoke) isWriterInvoke = true; /* if (m_callbackArg != null) { ISerializable callbkArg1 = ev.CallbackArgument as ISerializable; ISerializable callbkArg2 = m_callbackArg as ISerializable; if (callbkArg1 != null && callbkArg1.Equals(callbkArg2)) { isCallbackCalled = true; } string callbkArg3 = ev.CallbackArgument as string; string callbkArg4 = m_callbackArg as string; if (callbkArg3 != null && callbkArg3.Equals(callbkArg4)) { isCallbackCalled = true; } } * */ if (m_callbackArg != null && m_callbackArg.Equals(ev.CallbackArgument)) { isCallbackCalled = true; } } public static TallyWriter<TKey, TVal> Create() { return new TallyWriter<TKey, TVal>(); } #region ICacheWriter Members public override bool BeforeCreate(EntryEvent<TKey, TVal> ev) { m_creates++; Util.Log("TallyWriter::BeforeCreate"); CheckcallbackArg(ev); return !isWriterFailed; } public override bool BeforeDestroy(EntryEvent<TKey, TVal> ev) { m_destroys++; Util.Log("TallyWriter::BeforeDestroy"); CheckcallbackArg(ev); return !isWriterFailed; } public override bool BeforeRegionClear(RegionEvent<TKey, TVal> ev) { m_clears++; Util.Log("TallyWriter::BeforeRegionClear"); return true; } public override bool BeforeUpdate(EntryEvent<TKey, TVal> ev) { m_updates++; Util.Log("TallyWriter::BeforeUpdate"); CheckcallbackArg(ev); return !isWriterFailed; } #endregion } }