public void OnRegionMultiFilterKeyPrSHOP()

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");
      }
    }