blob: 00f5469d236d71fdf58f8eb66aa6749440bb2d4b [file] [log] [blame]
/*
* 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);
}
}
}