in clicache/integration-test/ThinClientFunctionExecutionTestsN.cs [1032:1233]
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");
}
}