clicache/integration-test/ThinClientFunctionExecutionTestsN.cs (1,353 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.Collections.Generic; using System.Collections; using System.Threading; using System.Linq; namespace Apache.Geode.Client.UnitTests { using NUnit.Framework; using Apache.Geode.DUnitFramework; using Apache.Geode.Client; using Region = Apache.Geode.Client.IRegion<Object, Object>; public class MyResultCollector<TResult> : Client.IResultCollector<TResult> { #region Private members private bool m_resultReady = false; ICollection<TResult> m_results = null; private int m_addResultCount = 0; private int m_getResultCount = 0; private int m_endResultCount = 0; #endregion public int GetAddResultCount() { return m_addResultCount; } public int GetGetResultCount() { return m_getResultCount; } public int GetEndResultCount() { return m_endResultCount; } public MyResultCollector() { m_results = new List<TResult>(); } public void AddResult(TResult result) { Util.Log(" in MyResultCollector " + result + " : " + result.GetType()); m_addResultCount++; m_results.Add(result); } public ICollection<TResult> GetResult() { return GetResult(TimeSpan.FromSeconds(50)); } public ICollection<TResult> GetResult(TimeSpan timeout) { m_getResultCount++; lock (this) { if (!m_resultReady) { if (timeout > TimeSpan.Zero) { if (!Monitor.Wait(this, timeout)) { throw new FunctionExecutionException("Timeout waiting for result."); } } else { throw new FunctionExecutionException("Results not ready."); } } } return m_results; } public void EndResults() { m_endResultCount++; lock (this) { m_resultReady = true; Monitor.Pulse(this); } } public void ClearResults(/*bool unused*/) { m_results.Clear(); m_addResultCount = 0; m_getResultCount = 0; m_endResultCount = 0; m_resultReady = false; } } [TestFixture] [Category("group3")] [Category("unicast_only")] [Category("generics")] public class ThinClientFunctionExecutionTests : ThinClientRegionSteps { #region Private members private UnitProcess m_client1; private UnitProcess m_client2; private static string[] FunctionExecutionRegionNames = { "partition_region", "partition_region1" }; private static string poolName = "__TEST_POOL1__"; private static string serverGroup = "ServerGroup1"; private static string QERegionName = "partition_region"; private static string getFuncName = "MultiGetFunction"; private static string getFuncIName = "MultiGetFunctionI"; private static string OnServerHAExceptionFunction = "OnServerHAExceptionFunction"; private static string OnServerHAShutdownFunction = "OnServerHAShutdownFunction"; private static string RegionOperationsHAFunction = "RegionOperationsHAFunction"; private static string RegionOperationsHAFunctionPrSHOP = "RegionOperationsHAFunctionPrSHOP"; private static string exFuncNameSendException = "executeFunction_SendException"; private static string FEOnRegionPrSHOP = "FEOnRegionPrSHOP"; private static string FEOnRegionPrSHOP_OptimizeForWrite = "FEOnRegionPrSHOP_OptimizeForWrite"; private static string putFuncName = "MultiPutFunction"; private static string putFuncIName = "MultiPutFunctionI"; #endregion protected override ClientBase[] GetClients() { m_client1 = new UnitProcess(); m_client2 = new UnitProcess(); return new ClientBase[] { m_client1, m_client2 }; } [TearDown] public override void EndTest() { try { m_client1.Call(CacheHelper.Close); m_client2.Call(CacheHelper.Close); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } finally { CacheHelper.StopJavaServers(); CacheHelper.StopJavaLocators(); } base.EndTest(); } public void InitClient() { CacheHelper.Init(); } public void createRegionAndAttachPool(string regionName, string poolName) { CacheHelper.CreateTCRegion_Pool<object, object>(regionName, true, true, null, null, poolName, false, serverGroup); } public void createPool(string name, string locators, string serverGroup, int redundancy, bool subscription, bool prSingleHop, bool threadLocal = false) { CacheHelper.CreatePool<object, object>(name, locators, serverGroup, redundancy, subscription, prSingleHop, threadLocal); } //public void StepOne(string endpoints) //{ // CacheHelper.CreateTCRegion(QERegionName, true, true, // null, endpoints, true); // Region region = CacheHelper.GetVerifyRegion(QERegionName); // for (int i = 0; i < 34; i++) // { // region["KEY--" + i] = "VALUE--" + i; // } // string[] routingObj = new string[17]; // int j = 0; // for (int i = 0; i < 34; i++) // { // if (i % 2 == 0) continue; // routingObj[j] = "KEY--" + i; // j++; // } // Util.Log("routingObj count= {0}.", routingObj.Length); // bool args = true; // Boolean getResult = true; // //test data dependant function execution // // test get function with result // Execution<object> exc = FunctionService<object>.OnRegion<object, object> (region); // IResultCollector<object> rc = exc.WithArgs<bool>(args).WithFilter<string>(routingObj).Execute( //getFuncName, getResult); // ICollection<object> executeFunctionResult = rc.GetResult(); // List<object> resultList = new List<object>(); // //resultList.Clear(); // foreach (List<object> item in executeFunctionResult) // { // foreach (object item2 in item) // { // resultList.Add(item2); // } // } // Util.Log("on region: result count= {0}.", resultList.Count); // Assert.IsTrue(resultList.Count == 17, "result count check failed"); // for (int i = 0; i < resultList.Count; i++) // { // Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); // } // // Bring down the region // region.GetLocalView().DestroyRegion(); //} public void PoolStepOne(string locators) { IRegion<object, object> region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 230; i++) { region["KEY--" + i] = "VALUE--" + i; } Object[] routingObj = new Object[17]; int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj[j] = "KEY--" + i; j++; } Util.Log("routingObj count= {0}.", routingObj.Length); object args = true; //test data dependant function execution // test get function with result Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); Client.IResultCollector<object> rc = exc.WithArgs<object>(args).WithFilter<object>(routingObj).Execute(getFuncName); ICollection<object> executeFunctionResult = rc.GetResult(); List<object> resultList = new List<object>(); //resultList.Clear(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 34, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); } //---------------------Test for function execution with sendException------------------------// for (int i = 1; i <= 230; i++) { region["execKey-" + i] = i; } Util.Log("Put on region complete for execKeys"); List<Object> arrList = new List<Object>(20); for (int i = 100; i < 120; i++) { arrList.Add("execKey-" + i); } Object[] filter = new Object[20]; j = 0; for (int i = 100; i < 120; i++) { filter[j] = "execKey-" + i; j++; } Util.Log("filter count= {0}.", filter.Length); args = true; exc = Client.FunctionService<object>.OnRegion<object, object>(region); rc = exc.WithArgs<object>(args).WithFilter<object>(filter).Execute(exFuncNameSendException); executeFunctionResult = rc.GetResult(); Assert.IsTrue(executeFunctionResult.Count == 1, "executeFunctionResult count check failed"); foreach (UserFunctionExecutionException item in executeFunctionResult) { Util.Log("Item returned for bool arguement is {0} ", item.Message); } Util.Log("Executing exFuncNameSendException on region for execKeys for bool arguement done."); rc = exc.WithArgs<object>(arrList).WithFilter<object>(filter).Execute(exFuncNameSendException); executeFunctionResult = rc.GetResult(); Util.Log("exFuncNameSendException for arrList result->size() = {0} ", executeFunctionResult.Count); Assert.IsTrue(executeFunctionResult.Count == arrList.Count + 1, "region get: resultList count is not as arrList count + exception"); foreach (object item in executeFunctionResult) { Util.Log("Items returned for arrList arguement is {0} ", item); } Util.Log("Executing exFuncNameSendException on region for execKeys for arrList arguement done."); MyResultCollector<object> myRC1 = new MyResultCollector<object>(); rc = exc.WithArgs<object>(args).WithCollector(myRC1).Execute(exFuncNameSendException); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC1.GetAddResultCount()); Util.Log("get result count= {0}.", myRC1.GetGetResultCount()); Util.Log("end result count= {0}.", myRC1.GetEndResultCount()); Assert.IsTrue(myRC1.GetAddResultCount() == 1, "add result count check failed"); Assert.IsTrue(myRC1.GetGetResultCount() == 1, "get result count check failed"); Assert.IsTrue(myRC1.GetEndResultCount() == 1, "end result count check failed"); Util.Log("on Region with collector: result count= {0}.", executeFunctionResult.Count); Assert.IsTrue(executeFunctionResult.Count == 1, "result count check failed"); foreach (object item in executeFunctionResult) { Util.Log("on Region with collector: get:result {0}", (item as UserFunctionExecutionException).Message); } //---------------------Test for function execution with sendException Done-----------------------// Pool/*<object, object>*/ pl = CacheHelper.DCache.GetPoolManager().Find(poolName); //test date independant fucntion execution on one server // test get function with result exc = Client.FunctionService<object>.OnServer(pl); ArrayList args1 = new ArrayList(); for (int i = 0; i < routingObj.Length; i++) { Util.Log("routingObj[{0}]={1}.", i, (string)routingObj[i]); args1.Add(routingObj[i]); } rc = exc.WithArgs<ArrayList>(args1).Execute(getFuncIName); executeFunctionResult = rc.GetResult(); resultList.Clear(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on one server: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 17, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on one server: get:result[{0}]={1}.", i, (string)resultList[i]); } //test data independant fucntion execution on all servers // test get function with result exc = Client.FunctionService<object>.OnServers(pl); rc = exc.WithArgs<ArrayList>(args1).Execute(getFuncIName); executeFunctionResult = rc.GetResult(); resultList.Clear(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on all servers: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 34, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on all servers: get:result[{0}]={1}.", i, (string)resultList[i]); } //TODO::enable it once the StringArray conversion is fixed. //test withCollector MyResultCollector<object> myRC = new MyResultCollector<object>(); rc = exc.WithArgs<ArrayList>(args1).WithCollector(myRC).Execute(getFuncIName); //executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC.GetAddResultCount()); Util.Log("get result count= {0}.", myRC.GetGetResultCount()); Util.Log("end result count= {0}.", myRC.GetEndResultCount()); Util.Log("on all servers with collector: result count= {0}.", executeFunctionResult.Count); Assert.IsTrue(myRC.GetResult().Count == 2, "result count check failed"); IList res = (IList)myRC.GetResult(); foreach (object o in res) { IList resList = (IList)o; Util.Log("results " + resList.Count); Assert.AreEqual(17, resList.Count); } MyResultCollector<object> myRC2 = new MyResultCollector<object>(); rc = exc.WithArgs<object>(args).WithCollector(myRC2).Execute(exFuncNameSendException); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC2.GetAddResultCount()); Util.Log("get result count= {0}.", myRC2.GetGetResultCount()); Util.Log("end result count= {0}.", myRC2.GetEndResultCount()); Assert.IsTrue(myRC2.GetAddResultCount() == 2, "add result count check failed"); Assert.IsTrue(myRC2.GetGetResultCount() == 1, "get result count check failed"); Assert.IsTrue(myRC2.GetEndResultCount() == 1, "end result count check failed"); Util.Log("on Region with collector: result count= {0}.", executeFunctionResult.Count); Assert.IsTrue(executeFunctionResult.Count == 2, "result count check failed"); foreach (object item in executeFunctionResult) { Util.Log("on Region with collector: get:result {0}", (item as UserFunctionExecutionException).Message); } } public void genericFEResultIntTest(string locators) { IRegion<int, int> region = CacheHelper.GetVerifyRegion<int, int>(QERegionName); Pool pl = CacheHelper.DCache.GetPoolManager().Find(poolName); for (int n = 0; n < 34; n++) { region[n] = n; } ICollection<int> routingObj = new List<int>(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj.Add(i); j++; } Console.WriteLine("routingObj count= {0}.", routingObj.Count); int args1 = 0; MyResultCollector<int> myRC = new MyResultCollector<int>(); Apache.Geode.Client.Execution<int> exc = Client.FunctionService<int>.OnServers/*OnRegion<string, string>*/(pl/*region*/); Client.IResultCollector<int> rc = exc.WithArgs<int>(args1).WithCollector(myRC).Execute("SingleStrGetFunction"); Util.Log("add result count= {0}.", myRC.GetAddResultCount()); Util.Log("get result count= {0}.", myRC.GetGetResultCount()); Util.Log("end result count= {0}.", myRC.GetEndResultCount()); Assert.IsTrue(myRC.GetResult().Count == 2, "result count check failed"); ICollection<int> res = myRC.GetResult(); Assert.AreEqual(2, res.Count); foreach (int o in res) { Util.Log("results " + o); } } public void genericFEResultStringTest(string locators) { IRegion<string, string> region = CacheHelper.GetVerifyRegion<string, string>(QERegionName); Pool pl = CacheHelper.DCache.GetPoolManager().Find(poolName); for (int n = 0; n < 34; n++) { region["KEY--" + n] = "VALUE--" + n; } ICollection<string> routingObj = new List<string>(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj.Add("KEY--" + i); j++; } Console.WriteLine("routingObj count= {0}.", routingObj.Count); ArrayList args1 = new ArrayList(); int count = 0; foreach (string str in routingObj) { Util.Log("string at index {0} = {1}.", count, str); args1.Add(str); count++; } MyResultCollector<string> myRC = new MyResultCollector<string>(); Apache.Geode.Client.Execution<string> exc = Client.FunctionService<string>.OnServers/*OnRegion<string, string>*/(pl/*region*/); Client.IResultCollector<string> rc = exc.WithArgs<ArrayList>(args1).WithCollector(myRC).Execute("SingleStrGetFunction"); Util.Log("add result count= {0}.", myRC.GetAddResultCount()); Util.Log("get result count= {0}.", myRC.GetGetResultCount()); Util.Log("end result count= {0}.", myRC.GetEndResultCount()); Assert.IsTrue(myRC.GetResult().Count == 2, "result count check failed"); ICollection<string> res = myRC.GetResult(); Assert.AreEqual(2, res.Count); foreach (string o in res) { Util.Log("results " + o); } } public void genericFEResultDCStringTest(string locators) { IRegion<string, string> region = CacheHelper.GetVerifyRegion<string, string>(QERegionName); Pool pl = CacheHelper.DCache.GetPoolManager().Find(poolName); for (int n = 0; n < 34; n++) { region["KEY--" + n] = "VALUE--" + n; } ICollection<string> routingObj = new List<string>(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj.Add("KEY--" + i); j++; } Console.WriteLine("routingObj count= {0}.", routingObj.Count); ArrayList args1 = new ArrayList(); int count = 0; foreach (string str in routingObj) { Util.Log("string at index {0} = {1}.", count, str); args1.Add(str); count++; } Apache.Geode.Client.Execution<string> exc = Client.FunctionService<string>.OnServers/*OnRegion<string, string>*/(pl/*region*/); Client.IResultCollector<string> rc = exc.WithArgs<ArrayList>(args1).Execute("SingleStrGetFunction"); Assert.IsTrue(rc.GetResult().Count == 2, "result count check failed"); ICollection<string> res = rc.GetResult(); Assert.AreEqual(2, res.Count); foreach (string o in res) { Util.Log("results " + o); } } public void genericFEResultDCPdxTest(string locators) { CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxTypes1.CreateDeserializable); CacheHelper.DCache.TypeRegistry.RegisterPdxType(PdxTests.PdxTypes8.CreateDeserializable); IRegion<string, IPdxSerializable> region = CacheHelper.GetVerifyRegion<string, IPdxSerializable>(QERegionName); Pool pl = CacheHelper.DCache.GetPoolManager().Find(poolName); for (int n = 0; n < 34; n++) { region["KEY--pdx" + n] = new PdxTests.PdxTypes8(); } ICollection<string> routingObj = new List<string>(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj.Add("KEY--pdx" + i); j++; } Console.WriteLine("routingObj count= {0}.", routingObj.Count); ArrayList args1 = new ArrayList(); int count = 0; foreach (string str in routingObj) { Util.Log("string at index {0} = {1}.", count, str); args1.Add(str); count++; } Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnServers/*OnRegion<string, string>*/(pl/*region*/); Client.IResultCollector<object> rc = exc.WithArgs<ArrayList>(args1).Execute("PdxFunctionTest"); Assert.IsTrue(rc.GetResult().Count == 2, "result count check failed"); ICollection<object> res = rc.GetResult(); Assert.AreEqual(2, res.Count); foreach (ICollection o in res) { Util.Log("results " + o); Assert.IsTrue(o.Count == 1); foreach (IPdxSerializable ip in o) { Assert.IsNotNull(ip); } } } public void HAStepOne() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 226; i++) { region["KEY--" + i] = "VALUE--" + i; } object[] routingObj = new object[17]; int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj[j] = "KEY--" + i; j++; } Util.Log("routingObj count= {0}.", routingObj.Length); bool args = true; //test data dependant function execution // test get function with result Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); Client.IResultCollector<object> rc = exc.WithArgs<bool>(args).WithFilter<object>(routingObj).Execute(getFuncName); ICollection<object> executeFunctionResult = rc.GetResult(); List<object> resultList = new List<object>(); //resultList.Clear(); Util.Log("executeFunctionResult Length = {0}", executeFunctionResult.Count); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 34, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); } // Bring down the region region.GetLocalView().DestroyRegion(); } public void OnRegionHA() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 230; i++) { region[i] = "VALUE--" + i; } Object[] routingObj = new Object[17]; ArrayList args1 = new ArrayList(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj[j] = i; j++; } Util.Log("routingObj count= {0}.", routingObj.Length); for (int i = 0; i < routingObj.Length; i++) { Util.Log("routingObj[{0}]={1}.", i, (int)routingObj[i]); args1.Add(routingObj[i]); } //test data independant function execution with result OnRegion Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); Assert.IsTrue(exc != null, "onRegion Returned NULL"); Client.IResultCollector<object> rc = exc.WithArgs<ArrayList>(args1).Execute(RegionOperationsHAFunctionPrSHOP, TimeSpan.FromSeconds(15)); ICollection<object> executeFunctionResult = rc.GetResult(); List<Object> resultList = new List<Object>(); Console.WriteLine("executeFunctionResult.Length = {0}", executeFunctionResult.Count); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 17, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); Assert.IsTrue((string)resultList[i] != null, "onRegion Returned NULL"); } } public void OnRegionHAStepOne() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 226; i++) { region["KEY--" + i] = "VALUE--" + i; } Object[] routingObj = new Object[17]; ArrayList args1 = new ArrayList(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj[j] = "KEY--" + i; j++; } Util.Log("routingObj count= {0}.", routingObj.Length); for (int i = 0; i < routingObj.Length; i++) { Console.WriteLine("routingObj[{0}]={1}.", i, (string)routingObj[i]); args1.Add(routingObj[i]); } //test data independant function execution with result onServer Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); Assert.IsTrue(exc != null, "onRegion Returned NULL"); Client.IResultCollector<object> rc = exc.WithArgs<ArrayList>(args1).Execute(RegionOperationsHAFunction, TimeSpan.FromSeconds(15)); ICollection<object> executeFunctionResult = rc.GetResult(); List<Object> resultList = new List<Object>(); Console.WriteLine("executeFunctionResult.Length = {0}", executeFunctionResult.Count); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 17, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); Assert.IsTrue((string)resultList[i] != null, "onServer Returned NULL"); } ///////////////OnRegion with Single filter Key //////////////// Object[] filter = new Object[1]; filter[0] = "KEY--" + 10; rc = exc.WithArgs<ArrayList>(args1).WithFilter<Object>(filter).Execute(RegionOperationsHAFunction, TimeSpan.FromSeconds(15)); executeFunctionResult = rc.GetResult(); resultList = new List<Object>(); Console.WriteLine("executeFunctionResult.Length = {0}", executeFunctionResult.Count); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 17, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); Assert.IsTrue((string)resultList[i] != null, "onServer Returned NULL"); } ///////////////OnRegion with Single filter Key Done//////////////// } public void OnRegionPrSHOPSingleFilterKey() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 230; i++) { region[i] = "VALUE--" + i; } Util.Log("Put on region complete "); ///////////////////// OnRegion with single filter key ///////////////////////////// Object[] filter = new Object[1]; for (int i = 0; i < 230; i++) { filter[0] = i; Util.Log("filter count= {0}.", filter.Length); Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); IResultCollector<object> rc = exc.WithFilter<object>(filter).Execute(FEOnRegionPrSHOP); ICollection<object> executeFunctionResult = rc.GetResult(); Util.Log("OnRegionPrSHOPSingleFilterKey for filter executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(1, executeFunctionResult.Count, "executeFunctionResult count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:FEOnRegionPrSHOP:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP item not true"); } Util.Log("FEOnRegionPrSHOP done"); rc = exc.WithFilter<object>(filter).Execute(FEOnRegionPrSHOP_OptimizeForWrite); executeFunctionResult = rc.GetResult(); Util.Log("OnRegionPrSHOPSingleFilterKey for FEOnRegionPrSHOP_OptimizeForWrite executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(1, executeFunctionResult.Count, "executeFunctionResult.Count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:FEOnRegionPrSHOP_OptimizeForWrite:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP_OptimizeForWrite item not true"); } Util.Log("FEOnRegionPrSHOP_OptimizeForWrite done"); } ///////////////////// OnRegion with single filter key done///////////////////////////// } public void FEOnRegionTx() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); CacheTransactionManager csTx = CacheHelper.CSTXManager; csTx.Begin(); Util.Log("Transaction begun."); for (int i = 0; i < 230; i++) { region["KEY--" + i] = "VALUE--" + i; } Util.Log("Put on region complete "); int j = 0; Object[] filter = new Object[20]; for (int i = 0; i < 20; i++) { filter[j] = "KEY--" + i; j++; } Util.Log("filter count= {0}.", filter.Length); Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); IResultCollector<object> rc = exc.WithFilter<object>(filter).Execute(putFuncName); Util.Log("Executing ExecuteFunctionOnRegion on region for execKeys for arrList arguement done."); csTx.Commit(); Util.Log("Transaction commited"); for (int i = 0; i < filter.Length; i++) { String str = (String)filter[i]; String val = (String)region[str]; Util.Log("Filter Key = {0}, get Value = {1} ", str, val); if (!str.Equals(val)) Assert.Fail("Value after function execution and transaction is incorrect"); } } public void ExecuteFEOnRegionMultiFilterKeyStepOne() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int k = 0; k < 210; k++) { int j = 0; Object[] filter = new Object[20]; for (int i = k; i < k + 20; i++) { filter[j] = i; j++; } Util.Log("filter count= {0}.", filter.Length); object args = true; Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); IResultCollector<object> rc = exc.WithFilter<object>(filter).Execute(getFuncName); ICollection<object> executeFunctionResult = rc.GetResult(); Util.Log("ExecuteFEOnRegionMultiFilterKeyStepOne for filter executeFunctionResult.Count = {0} ", executeFunctionResult.Count); List<object> resultList = new List<object>(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.AreEqual(40, resultList.Count, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:= {0}.", resultList[i]); } Util.Log("Executing ExecuteFEOnRegionMultiFilterKeyStepOne on region for execKeys for arrList arguement done."); MyResultCollector<object> myRC1 = new MyResultCollector<object>(); rc = exc.WithFilter<object>(filter).WithCollector(myRC1).Execute(getFuncName); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC1.GetAddResultCount()); Util.Log("get result count= {0}.", myRC1.GetGetResultCount()); Util.Log("end result count= {0}.", myRC1.GetEndResultCount()); Assert.AreEqual(4, myRC1.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, myRC1.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, myRC1.GetEndResultCount(), "end result count check failed"); Util.Log("on Region with collector: result count= {0}.", executeFunctionResult.Count); resultList.Clear(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count with custom ResultCollector = {0}.", resultList.Count); Assert.AreEqual(40, resultList.Count, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:= {0}.", resultList[i]); } } } public void ExecuteFEOnRegionMultiFilterKeyStepTwo() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 230; i++) { region[i] = "VALUE--" + i; } Util.Log("Put on region complete "); for (int k = 0; k < 210; k++) { int j = 0; Object[] filter = new Object[20]; for (int i = k; i < k + 20; i++) { filter[j] = i; j++; } Util.Log("filter count= {0}.", filter.Length); object args = true; Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); IResultCollector<object> rc = exc.WithFilter<object>(filter).Execute(getFuncName); ICollection<object> executeFunctionResult = rc.GetResult(); Util.Log("ExecuteFEOnRegionMultiFilterKeyStepTwo for filter executeFunctionResult.Count = {0} ", executeFunctionResult.Count); List<object> resultList = new List<object>(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.AreEqual(40, resultList.Count, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:= {0}.", resultList[i]); } Util.Log("Executing ExecuteFEOnRegionMultiFilterKeyStepTwo on region for execKeys for arrList arguement done."); MyResultCollector<object> myRC1 = new MyResultCollector<object>(); rc = exc.WithFilter<object>(filter).WithCollector(myRC1).Execute(getFuncName); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC1.GetAddResultCount()); Util.Log("get result count= {0}.", myRC1.GetGetResultCount()); Util.Log("end result count= {0}.", myRC1.GetEndResultCount()); Assert.AreEqual(4, myRC1.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, myRC1.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, myRC1.GetEndResultCount(), "end result count check failed"); Util.Log("on Region with collector: result count= {0}.", executeFunctionResult.Count); resultList.Clear(); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count with custom ResultCollector = {0}.", resultList.Count); Assert.AreEqual(40, resultList.Count, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:= {0}.", resultList[i]); } } } public void OnRegionMultiFilterKeyPrSHOP() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); region.GetSubscriptionService().RegisterAllKeys(); for (int i = 0; i < 230; i++) { region[i] = "VALUE--" + i; } Util.Log("Put on region complete "); for (int k = 0; k < 210; k++) { Object[] filter = new Object[20]; int j = 0; for (int i = k; i < k + 20; i++) { filter[j] = i; j++; } Util.Log("filter count= {0}.", filter.Length); object args = true; Execution<object> exc = Client.FunctionService<object>.OnRegion<object, object>(region); IResultCollector<object> rc = exc.WithFilter<object>(filter).Execute(FEOnRegionPrSHOP); ICollection<object> executeFunctionResult = rc.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for filter executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(2, executeFunctionResult.Count, "executeFunctionResult count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:OnRegionMultiFilterKeyPrSHOP:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP item not true"); } Util.Log("OnRegionMultiFilterKeyPrSHOP done"); rc = exc.WithFilter<object>(filter).Execute(FEOnRegionPrSHOP_OptimizeForWrite); executeFunctionResult = rc.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for FEOnRegionPrSHOP_OptimizeForWrite executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(3, executeFunctionResult.Count, "executeFunctionResult.Count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:FEOnRegionPrSHOP_OptimizeForWrite:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP_OptimizeForWrite item not true"); } Util.Log("FEOnRegionPrSHOP_OptimizeForWrite done"); MyResultCollector<object> myRC1 = new MyResultCollector<object>(); rc = exc.WithFilter<object>(filter).WithCollector(myRC1).Execute(FEOnRegionPrSHOP); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC1.GetAddResultCount()); Util.Log("get result count= {0}.", myRC1.GetGetResultCount()); Util.Log("end result count= {0}.", myRC1.GetEndResultCount()); Assert.AreEqual(2, myRC1.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, myRC1.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, myRC1.GetEndResultCount(), "end result count check failed"); executeFunctionResult = rc.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for filter executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(2, executeFunctionResult.Count, "executeFunctionResult count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:FEOnRegionPrSHOP:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP item not true"); } Util.Log("FEOnRegionPrSHOP with ResultCollector done"); MyResultCollector<object> myRC2 = new MyResultCollector<object>(); rc = exc.WithFilter<object>(filter).WithCollector(myRC2).Execute(FEOnRegionPrSHOP_OptimizeForWrite); executeFunctionResult = rc.GetResult(); Util.Log("add result count= {0}.", myRC2.GetAddResultCount()); Util.Log("get result count= {0}.", myRC2.GetGetResultCount()); Util.Log("end result count= {0}.", myRC2.GetEndResultCount()); Assert.AreEqual(3, myRC2.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, myRC2.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, myRC2.GetEndResultCount(), "end result count check failed"); executeFunctionResult = rc.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for FEOnRegionPrSHOP_OptimizeForWrite executeFunctionResult.Count = {0} ", executeFunctionResult.Count); Assert.AreEqual(3, executeFunctionResult.Count, "executeFunctionResult.Count check failed"); foreach (Boolean item in executeFunctionResult) { Util.Log("on region:FEOnRegionPrSHOP_OptimizeForWrite:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP_OptimizeForWrite item not true"); } Util.Log("FEOnRegionPrSHOP_OptimizeForWrite with ResultCollector done"); } Execution<object> exe = Client.FunctionService<object>.OnRegion<object, object>(region); //w/o filter IResultCollector<object> collector = exe.Execute(FEOnRegionPrSHOP); ICollection<Object> FunctionResult = collector.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for filter FunctionResult.Count = {0} ", FunctionResult.Count); Assert.AreEqual(2, FunctionResult.Count, "FunctionResult count check failed"); foreach (Boolean item in FunctionResult) { Util.Log("on region:FEOnRegionPrSHOP:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP item not true"); } collector.ClearResults(); Util.Log("FEOnRegionPrSHOP without filter done"); // w/o filter MyResultCollector<object> rC = new MyResultCollector<object>(); IResultCollector<Object> Rcollector = exe.WithCollector(rC).Execute(FEOnRegionPrSHOP); FunctionResult = Rcollector.GetResult(); Util.Log("add result count= {0}.", rC.GetAddResultCount()); Util.Log("get result count= {0}.", rC.GetGetResultCount()); Util.Log("end result count= {0}.", rC.GetEndResultCount()); Assert.AreEqual(2, rC.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, rC.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, rC.GetEndResultCount(), "end result count check failed"); FunctionResult = Rcollector.GetResult(); Util.Log("OnRegionMultiFilterKeyPrSHOP for filter FunctionResult.Count = {0} ", FunctionResult.Count); Assert.AreEqual(2, FunctionResult.Count, "executeFunctionResult count check failed"); foreach (Boolean item in FunctionResult) { Util.Log("on region:FEOnRegionPrSHOP:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP item not true"); } Util.Log("FEOnRegionPrSHOP with ResultCollector without filter done"); //w/o filter collector.ClearResults(); collector = exe.Execute(FEOnRegionPrSHOP_OptimizeForWrite); Util.Log("OnRegionMultiFilterKeyPrSHOP for FEOnRegionPrSHOP_OptimizeForWrite executeFunctionResult.Count = {0} ", collector.GetResult().Count); Assert.AreEqual(3, collector.GetResult().Count, "executeFunctionResult.Count check failed"); foreach (Boolean item in collector.GetResult()) { Util.Log("on region:FEOnRegionPrSHOP_OptimizeForWrite:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP_OptimizeForWrite item not true"); } Util.Log("FEOnRegionPrSHOP_OptimizeForWrite done w/o filter"); //w/o filter MyResultCollector<object> rC2 = new MyResultCollector<object>(); Rcollector = exe.WithCollector(rC2).Execute(FEOnRegionPrSHOP_OptimizeForWrite); FunctionResult = Rcollector.GetResult(); Util.Log("add result count= {0}.", rC2.GetAddResultCount()); Util.Log("get result count= {0}.", rC2.GetGetResultCount()); Util.Log("end result count= {0}.", rC2.GetEndResultCount()); Assert.AreEqual(3, rC2.GetAddResultCount(), "add result count check failed"); Assert.AreEqual(1, rC2.GetGetResultCount(), "get result count check failed"); Assert.AreEqual(1, rC2.GetEndResultCount(), "end result count check failed"); Util.Log("OnRegionMultiFilterKeyPrSHOP for FEOnRegionPrSHOP_OptimizeForWrite FunctionResult.Count = {0} ", FunctionResult.Count); Assert.AreEqual(3, FunctionResult.Count, "executeFunctionResult.Count check failed"); foreach (Boolean item in FunctionResult) { Util.Log("on region:FEOnRegionPrSHOP_OptimizeForWrite:= {0}.", item); Assert.AreEqual(true, item, "FEOnRegionPrSHOP_OptimizeForWrite item not true"); } Util.Log("FEOnRegionPrSHOP_OptimizeForWrite with ResultCollector w/o filter done"); for (int i = 0; i < 500; i++) { region["KEY--" + i] = "VALUE--" + i; } Util.Log("Put on region complete "); Object[] fil = new Object[500]; int x = 0; for (int i = 0; i < 500; i++) { fil[x] = "KEY--" + i; x++; } Util.Log("filter count= {0}.", fil.Length); // Fire N Forget with filter keys exe = Client.FunctionService<object>.OnRegion<object, object>(region); exe.WithFilter<object>(fil).Execute(putFuncName); Util.Log("Executing ExecuteFunctionOnRegion on region for execKeys for arrList arguement done."); Thread.Sleep(4000); //wait for results to be updated for (int i = 0; i < fil.Length; i++) { String str = (String)fil[i]; String val = (String)region[str]; Util.Log("Filter Key = {0}, get Value = {1} ", str, val); if (!str.Equals(val)) Assert.Fail("Value after function execution is incorrect"); } // Fire N Forget without filter keys ArrayList args1 = new ArrayList(); for (int i = 10; i < 200; i++) { args1.Add("KEY--" + i); } exe = Client.FunctionService<object>.OnRegion<object, object>(region); exe.WithArgs<ArrayList>(args1).Execute(putFuncIName); Util.Log("Executing ExecuteFunctionOnRegion on region for execKeys for arrList arguement done."); Thread.Sleep(4000); ////wait for results to be updated for (int i = 0; i < args1.Count; i++) { String str = (String)args1[i]; String val = (String)region[str]; Util.Log("Arg Key = {0}, get Value = {1} ", str, val); if (!str.Equals(val)) Assert.Fail("Value after function execution is incorrect"); } } public void OnServerHAStepOne() { Region region = CacheHelper.GetVerifyRegion<object, object>(QERegionName); for (int i = 0; i < 34; i++) { region["KEY--" + i] = "VALUE--" + i; } object[] routingObj = new object[17]; ArrayList args1 = new ArrayList(); int j = 0; for (int i = 0; i < 34; i++) { if (i % 2 == 0) continue; routingObj[j] = "KEY--" + i; j++; } Util.Log("routingObj count= {0}.", routingObj.Length); for (int i = 0; i < routingObj.Length; i++) { Console.WriteLine("routingObj[{0}]={1}.", i, (string)routingObj[i]); args1.Add(routingObj[i]); } //test data independant function execution with result onServer Pool/*<TKey, TValue>*/ pool = CacheHelper.DCache.GetPoolManager().Find(poolName); Apache.Geode.Client.Execution<object> exc = Client.FunctionService<object>.OnServer(pool); Assert.IsTrue(exc != null, "onServer Returned NULL"); Client.IResultCollector<object> rc = exc.WithArgs<ArrayList>(args1).Execute(OnServerHAExceptionFunction, TimeSpan.FromSeconds(15)); ICollection<object> executeFunctionResult = rc.GetResult(); List<object> resultList = new List<object>(); Console.WriteLine("executeFunctionResult.Length = {0}", executeFunctionResult.Count); foreach (List<object> item in executeFunctionResult) { foreach (object item2 in item) { resultList.Add(item2); } } Util.Log("on region: result count= {0}.", resultList.Count); Assert.IsTrue(resultList.Count == 17, "result count check failed"); for (int i = 0; i < resultList.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList[i]); Assert.IsTrue(((string)resultList[i]) != null, "onServer Returned NULL"); } rc = exc.WithArgs<ArrayList>(args1).Execute(OnServerHAShutdownFunction, TimeSpan.FromSeconds(15)); ICollection<object> executeFunctionResult1 = rc.GetResult(); List<object> resultList1 = new List<object>(); foreach (List<object> item in executeFunctionResult1) { foreach (object item2 in item) { resultList1.Add(item2); } } Util.Log("on region: result count= {0}.", resultList1.Count); Console.WriteLine("resultList1.Count = {0}", resultList1.Count); Assert.IsTrue(resultList1.Count == 17, "result count check failed"); for (int i = 0; i < resultList1.Count; i++) { Util.Log("on region:get:result[{0}]={1}.", i, (string)resultList1[i]); Assert.IsTrue(((string)resultList1[i]) != null, "onServer Returned NULL"); } // Bring down the region //region.LocalDestroyRegion(); } void runOnServerHAExecuteFunction() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, true, /*threadLocal*/true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(OnServerHAStepOne); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runFEOnRegionPrSHOPSingleFilterKey() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, true, true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(OnRegionPrSHOPSingleFilterKey); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runOnRegionHAExecuteFunction() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, /*singleHop*/false, /*threadLocal*/false); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(OnRegionHAStepOne); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runOnRegionHAExecuteFunctionPrSHOP() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, /*singleHop*/true, /*threadLocal*/true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(OnRegionHA); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runExecuteFunctionOnRegionMultiFilterKey(bool singleHop) { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, singleHop, /*threadLocal*/false); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(ExecuteFEOnRegionMultiFilterKeyStepOne); m_client1.Call(ExecuteFEOnRegionMultiFilterKeyStepTwo); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runFEOnRegionTx(bool singleHop) { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, singleHop, /*threadLocal*/true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(FEOnRegionTx); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } void runFEOnRegionPrSHOPMultiFilterKey(bool singleHop) { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, singleHop, /*threadLocal*/true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); Util.Log("Client 1 (pool locator) regions created"); m_client1.Call(OnRegionMultiFilterKeyPrSHOP); m_client1.Call(Close); Util.Log("Client 1 closed"); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); CacheHelper.ClearEndpoints(); CacheHelper.ClearLocators(); } [Test] public void PoolExecuteFunctionTest() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 0, true, /*singleHop*/false, /*threadLocal*/false); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); m_client1.Call(PoolStepOne, CacheHelper.Locators); m_client1.Call(genericFEResultIntTest, CacheHelper.Locators); m_client1.Call(genericFEResultStringTest, CacheHelper.Locators); m_client1.Call(genericFEResultDCStringTest, CacheHelper.Locators); m_client1.Call(genericFEResultDCPdxTest, CacheHelper.Locators); Util.Log("PoolStepOne complete."); m_client1.Call(Close); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); } [Test] public void PoolExecuteFunctionTestPrSHOP() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 0, true, /*singleHop*/true, /*threadLocal*/true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); m_client1.Call(PoolStepOne, CacheHelper.Locators); m_client1.Call(genericFEResultIntTest, CacheHelper.Locators); m_client1.Call(genericFEResultStringTest, CacheHelper.Locators); m_client1.Call(genericFEResultDCStringTest, CacheHelper.Locators); m_client1.Call(genericFEResultDCPdxTest, CacheHelper.Locators); Util.Log("PoolStepOne complete."); m_client1.Call(Close); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); } [Test] public void HAExecuteFunctionTest() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, /*singleHop*/false, /*threadLocal*/false); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); m_client1.Call(HAStepOne); Util.Log("HAStepOne complete."); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); } [Test] public void HAExecuteFunctionTestPrSHOP() { CacheHelper.SetupJavaServers(true, "func_cacheserver1_pool.xml", "func_cacheserver2_pool.xml", "func_cacheserver3_pool.xml"); CacheHelper.StartJavaLocator(1, "GFELOC"); Util.Log("Locator 1 started."); CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1); Util.Log("Cacheserver 1 started."); CacheHelper.StartJavaServerWithLocators(2, "GFECS2", 1); Util.Log("Cacheserver 2 started."); CacheHelper.StartJavaServerWithLocators(3, "GFECS3", 1); Util.Log("Cacheserver 3 started."); m_client1.Call(createPool, poolName, CacheHelper.Locators, serverGroup, 1, true, /*singleHop*/true, true); m_client1.Call(createRegionAndAttachPool, QERegionName, poolName); m_client1.Call(HAStepOne); Util.Log("HAStepOne complete."); CacheHelper.StopJavaServer(1); Util.Log("Cacheserver 1 stopped."); CacheHelper.StopJavaServer(2); Util.Log("Cacheserver 2 stopped."); CacheHelper.StopJavaServer(3); Util.Log("Cacheserver 3 stopped."); CacheHelper.StopJavaLocator(1); Util.Log("Locator 1 stopped."); } [Test] public void OnServerHAExecuteFunctionTest() { runOnServerHAExecuteFunction(); } [Test] public void OnRegionHAExecuteFunctionTest() { runOnRegionHAExecuteFunction(); } [Test] public void TestFEOnRegionPrSHOPSingleFilterKey() { runFEOnRegionPrSHOPSingleFilterKey(); } [Test] public void OnRegionHAExecuteFunctionTestPrSHOP() { runOnRegionHAExecuteFunctionPrSHOP(); } [Test] public void ExecuteFunctionOnRegionMultiFilterKey() { runExecuteFunctionOnRegionMultiFilterKey(false); } [Test] public void ExecuteFunctionOnRegionMultiFilterKeySingleHop() { runExecuteFunctionOnRegionMultiFilterKey(true); } [Test] public void TestFEOnRegionPrSHOPMultiFilterKey() { runFEOnRegionPrSHOPMultiFilterKey(true); } [Test] public void TestFEOnRegionTransaction() { runFEOnRegionTx(false); } [Test] public void TestFEOnRegionTransactionSingleHop() { runFEOnRegionTx(true); } } }