You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/08/23 20:00:53 UTC

[geode] branch develop updated: GEODE-5460: Fixing a race condition in TestFunctionsDUNitTest

This is an automated email from the ASF dual-hosted git repository.

upthewaterspout pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new c7ca13d  GEODE-5460: Fixing a race condition in TestFunctionsDUNitTest
c7ca13d is described below

commit c7ca13d677056b033e55891134e300dc239cc2d9
Author: mhansonp <mh...@pivotal.io>
AuthorDate: Thu Aug 23 13:00:47 2018 -0700

    GEODE-5460: Fixing a race condition in TestFunctionsDUNitTest
    
    Changing TestFunctionsDUnitTest to use a latch rather than a sleep.
---
 .../internal/pulse/TestFunctionsDUnitTest.java     |  96 +++----
 .../internal/cache/functions/TestFunction.java     | 286 +++++++++------------
 2 files changed, 174 insertions(+), 208 deletions(-)

diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/pulse/TestFunctionsDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/pulse/TestFunctionsDUnitTest.java
index 716c422..48f1e2f 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/pulse/TestFunctionsDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/pulse/TestFunctionsDUnitTest.java
@@ -17,26 +17,51 @@ package org.apache.geode.management.internal.pulse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.awaitility.Awaitility;
 import org.junit.Test;
 
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.execute.Execution;
 import org.apache.geode.cache.execute.Function;
+import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.internal.cache.functions.TestFunction;
 import org.apache.geode.management.DistributedSystemMXBean;
 import org.apache.geode.management.ManagementService;
 import org.apache.geode.management.ManagementTestBase;
-import org.apache.geode.test.dunit.LogWriterUtils;
 import org.apache.geode.test.dunit.SerializableRunnable;
 import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.Wait;
-import org.apache.geode.test.dunit.WaitCriterion;
 
 /**
  * This is for testing running functions
  */
 
+
+class SimpleWaitFunction<T> implements Function<T> {
+  private static CountDownLatch countDownLatch;
+
+  public static void setLatch() {
+    countDownLatch = new CountDownLatch(1);
+  }
+
+  public static void clearLatch() {
+    countDownLatch.countDown();
+  }
+
+  @Override
+  public void execute(FunctionContext<T> context) {
+    try {
+      countDownLatch.await();
+    } catch (InterruptedException e) {
+      e.printStackTrace();
+    }
+  }
+
+}
+
+
 public class TestFunctionsDUnitTest extends ManagementTestBase {
 
   private static final long serialVersionUID = 1L;
@@ -45,64 +70,49 @@ public class TestFunctionsDUnitTest extends ManagementTestBase {
     super();
   }
 
-  public static Integer getNumOfRunningFunction() {
-
-    final WaitCriterion waitCriteria = new WaitCriterion() {
-      @Override
-      public boolean done() {
-        final ManagementService service = getManagementService();
-        final DistributedSystemMXBean bean = service.getDistributedSystemMXBean();
-        if (bean != null) {
-          if (bean.getNumRunningFunctions() > 0) {
-            return true;
-          } else {
-            return false;
-          }
-        }
-        return false;
-      }
+  private static Integer getNumOfRunningFunction() {
 
-      @Override
-      public String description() {
-        return "wait for getNumOfRunningFunction to complete and get results";
-      }
-    };
+    Awaitility.waitAtMost(1, TimeUnit.MINUTES)
+        .pollInterval(500, TimeUnit.MILLISECONDS).until(() -> {
+          final ManagementService service = getManagementService();
+          final DistributedSystemMXBean bean = service.getDistributedSystemMXBean();
+          if (bean != null) {
+            return bean.getNumRunningFunctions() > 0;
+          }
+          return false;
+        });
 
-    Wait.waitForCriterion(waitCriteria, 2 * 60 * 1000, 3000, true);
     final DistributedSystemMXBean bean = getManagementService().getDistributedSystemMXBean();
     assertNotNull(bean);
-    return Integer.valueOf(bean.getNumRunningFunctions());
+
+    return bean.getNumRunningFunctions();
   }
 
   @Test
-  public void testNumOfRunningFunctions() throws Exception {
+  public void testNumOfRunningFunctions() {
     initManagement(false);
     VM client = managedNodeList.get(2);
     client.invokeAsync(new SerializableRunnable() {
       public void run() {
         Cache cache = getCache();
-        Function function =
-            new TestFunction(true, TestFunction.TEST_FUNCTION_RUNNING_FOR_LONG_TIME);
+        SimpleWaitFunction<Boolean> simpleWaitFunction = new SimpleWaitFunction();
+        simpleWaitFunction.setLatch();
         Execution execution =
             FunctionService.onMember(cache.getDistributedSystem().getDistributedMember());
-        for (int i = 0; i < 100; i++) {
-          execution.execute(function);
-        }
+        execution.setArguments(Boolean.TRUE).execute(simpleWaitFunction);
       }
     });
-    Integer numOfRunningFunctions =
-        (Integer) managingNode.invoke(() -> TestFunctionsDUnitTest.getNumOfRunningFunction());
-    LogWriterUtils.getLogWriter()
-        .info("TestNumOfFunctions numOfRunningFunctions= " + numOfRunningFunctions);
-    assertTrue(numOfRunningFunctions > 0 ? true : false);
-  }
 
-  public void verifyStatistics() {
-
-  }
+    Integer numOfRunningFunctions =
+        managingNode.invoke(TestFunctionsDUnitTest::getNumOfRunningFunction);
 
-  public void invokeOperations() {
+    assertTrue(numOfRunningFunctions > 0);
 
+    client.invoke(new SerializableRunnable() {
+      public void run() {
+        SimpleWaitFunction.clearLatch();
+      }
+    });
   }
 
 }
diff --git a/geode-dunit/src/main/java/org/apache/geode/internal/cache/functions/TestFunction.java b/geode-dunit/src/main/java/org/apache/geode/internal/cache/functions/TestFunction.java
index 01a96cd..88ed5e9 100755
--- a/geode-dunit/src/main/java/org/apache/geode/internal/cache/functions/TestFunction.java
+++ b/geode-dunit/src/main/java/org/apache/geode/internal/cache/functions/TestFunction.java
@@ -17,7 +17,6 @@ package org.apache.geode.internal.cache.functions;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -27,6 +26,8 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.CancellationException;
 
+import org.apache.logging.log4j.Logger;
+
 import org.apache.geode.DataSerializable;
 import org.apache.geode.DataSerializer;
 import org.apache.geode.LogWriter;
@@ -34,7 +35,6 @@ import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.Region;
 import org.apache.geode.cache.control.RebalanceFactory;
 import org.apache.geode.cache.control.RebalanceOperation;
-import org.apache.geode.cache.control.RebalanceResults;
 import org.apache.geode.cache.control.ResourceManager;
 import org.apache.geode.cache.execute.Function;
 import org.apache.geode.cache.execute.FunctionContext;
@@ -53,8 +53,7 @@ import org.apache.geode.internal.cache.execute.InternalFunctionInvocationTargetE
 import org.apache.geode.internal.cache.execute.MyFunctionExecutionException;
 import org.apache.geode.internal.cache.execute.RegionFunctionContextImpl;
 import org.apache.geode.internal.cache.xmlcache.Declarable2;
-import org.apache.geode.test.dunit.Wait;
-import org.apache.geode.test.dunit.WaitCriterion;
+import org.apache.geode.internal.logging.LogService;
 
 public class TestFunction<T> implements Function<T>, Declarable2, DataSerializable {
   public static final String TEST_FUNCTION10 = "TestFunction10";
@@ -99,6 +98,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
   private static final String HAVE_RESULTS = "haveResults";
   private final Properties props;
   private static final String NOACKTEST = "NoAckTest";
+
   private static int retryCount = 0;
   private static int retryCountForExecuteFunctionReexecuteException = 0;
   private static int firstExecutionCount = 0;
@@ -194,19 +194,19 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
   }
 
 
-  public void executeFunctionRunningForLongTime(FunctionContext context) {
-    DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
-    LogWriter logger = ds.getLogWriter();
+  private void executeFunctionRunningForLongTime(FunctionContext context) {
+    Logger logger = LogService.getLogger();
+
     try {
       Thread.sleep(2000);
     } catch (InterruptedException e) {
       logger.info("Exception in executeFunctionRunningForLongTime");
     }
-    context.getResultSender().lastResult("Ran executeFunctionRunningForLongTime for 10000000");
 
+    context.getResultSender().lastResult("Ran executeFunctionRunningForLongTime for 10000000");
   }
 
-  public void executeFunctionBucketFilter(FunctionContext context) {
+  private void executeFunctionBucketFilter(FunctionContext context) {
     // int bucketIDAsFilter = ((Integer)context.getArguments()).intValue();
     // check if the node contains the bucket passed as filter
     RegionFunctionContextImpl rfc = (RegionFunctionContextImpl) context;
@@ -226,7 +226,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
   }
 
 
-  public void executeFunctionReturningArgs(FunctionContext context) {
+  private void executeFunctionReturningArgs(FunctionContext context) {
     DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
     LogWriter logger = ds.getLogWriter();
     logger.info("Executing executeFunctionReturningArgs in TestFunction on Member : "
@@ -240,11 +240,9 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     } else {
       context.getResultSender().lastResult(Boolean.FALSE);
     }
-
-
   }
 
-  public void execute1(FunctionContext context) {
+  private void execute1(FunctionContext context) {
     DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
     LogWriter logger = ds.getLogWriter();
     logger.info("Executing execute1 in TestFunction on Member : " + ds.getDistributedMember()
@@ -254,18 +252,17 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
     if (context.getArguments() instanceof Boolean) {
       // context.getResultSender().sendResult();
-      context.getResultSender().lastResult((Serializable) context.getArguments());
+      context.getResultSender().lastResult(context.getArguments());
     } else if (context.getArguments() instanceof String) {
       /*
        * String key = (String)context.getArguments(); return key;
        */
 
-      context.getResultSender().lastResult((Serializable) context.getArguments());
+      context.getResultSender().lastResult(context.getArguments());
     } else if (context.getArguments() instanceof Set) {
       Set origKeys = (Set) context.getArguments();
       ArrayList vals = new ArrayList();
-      for (Iterator i = origKeys.iterator(); i.hasNext();) {
-        Object val = i.next();
+      for (Object val : origKeys) {
         if (val != null) {
           vals.add(val);
         }
@@ -278,7 +275,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void execute2(FunctionContext context) {
+  private void execute2(FunctionContext context) {
     if (context instanceof RegionFunctionContext) {
       RegionFunctionContext rfContext = (RegionFunctionContext) context;
       rfContext.getDataSet().getCache().getLogger()
@@ -286,11 +283,11 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       if (rfContext.getArguments() instanceof Boolean) {
         /* return rfContext.getArguments(); */
         if (hasResult()) {
-          rfContext.getResultSender().lastResult((Serializable) rfContext.getArguments());
+          rfContext.getResultSender().lastResult(rfContext.getArguments());
         } else {
           rfContext.getDataSet().getCache().getLogger()
               .info("Executing function :  TestFunction2.execute " + rfContext);
-          while (true && !rfContext.getDataSet().isDestroyed()) {
+          while (!rfContext.getDataSet().isDestroyed()) {
             rfContext.getDataSet().getCache().getLogger().info("For Bug43513 ");
             try {
               Thread.sleep(100);
@@ -316,9 +313,9 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
            * return (Serializable)PartitionRegionHelper.getLocalDataForContext(rfContext).get(key);
            */
           rfContext.getResultSender().lastResult(
-              (Serializable) PartitionRegionHelper.getLocalDataForContext(rfContext).get(key));
+              PartitionRegionHelper.getLocalDataForContext(rfContext).get(key));
         } else {
-          rfContext.getResultSender().lastResult((Serializable) rfContext.getDataSet().get(key));
+          rfContext.getResultSender().lastResult(rfContext.getDataSet().get(key));
         }
         /* return (Serializable)rfContext.getDataSet().get(key); */
       } else if (rfContext.getArguments() instanceof Set) {
@@ -334,8 +331,8 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         /* return vals; */
       } else if (rfContext.getArguments() instanceof HashMap) {
         HashMap putData = (HashMap) rfContext.getArguments();
-        for (Iterator i = putData.entrySet().iterator(); i.hasNext();) {
-          Map.Entry me = (Map.Entry) i.next();
+        for (Object o : putData.entrySet()) {
+          Map.Entry me = (Map.Entry) o;
           rfContext.getDataSet().put(me.getKey(), me.getValue());
         }
         rfContext.getResultSender().lastResult(Boolean.TRUE);
@@ -363,7 +360,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
 
   }
 
-  public void execute3(FunctionContext context) {
+  private void execute3(FunctionContext context) {
 
     if (context instanceof RegionFunctionContext) {
       RegionFunctionContext prContext = (RegionFunctionContext) context;
@@ -372,8 +369,8 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       if (prContext.getArguments() instanceof Set) {
         Set origKeys = (Set) prContext.getArguments();
         ArrayList vals = new ArrayList();
-        for (Iterator i = origKeys.iterator(); i.hasNext();) {
-          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(i.next());
+        for (Object origKey : origKeys) {
+          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(origKey);
           if (val != null) {
             vals.add(val);
           }
@@ -383,29 +380,23 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       } else if (prContext.getFilter() != null) {
         Set origKeys = prContext.getFilter();
         ArrayList vals = new ArrayList();
-        for (Iterator i = origKeys.iterator(); i.hasNext();) {
-          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(i.next());
+        for (Object origKey : origKeys) {
+          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(origKey);
           if (val != null) {
             vals.add(val);
           }
         }
-        /* return vals; */
-        // prContext.getResultSender().sendResult(vals);
         prContext.getResultSender().lastResult(vals);
       } else {
-        /* return Boolean.FALSE; */
-        // prContext.getResultSender().sendResult(Boolean.FALSE);
         prContext.getResultSender().lastResult(Boolean.FALSE);
       }
     } else {
-      /* return Boolean.FALSE; */
-      // context.getResultSender().sendResult(Boolean.FALSE);
+
       context.getResultSender().lastResult(Boolean.FALSE);
     }
-
   }
 
-  public void execute4(FunctionContext context) {
+  private void execute4(FunctionContext context) {
 
     if (context instanceof RegionFunctionContext) {
       RegionFunctionContext prContext = (RegionFunctionContext) context;
@@ -414,51 +405,43 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       if (prContext.getArguments() instanceof Boolean) {
         /* return prContext.getArguments(); */
         if (hasResult())
-          prContext.getResultSender().lastResult((Serializable) prContext.getArguments());
+          prContext.getResultSender().lastResult(prContext.getArguments());
       } else if (prContext.getArguments() instanceof String) {
         String key = (String) prContext.getArguments();
         /* return (Serializable)PartitionRegionHelper.getLocalDataForContext(prContext).get(key); */
         prContext.getResultSender().lastResult(
-            (Serializable) PartitionRegionHelper.getLocalDataForContext(prContext).get(key));
+            PartitionRegionHelper.getLocalDataForContext(prContext).get(key));
       } else if (prContext.getArguments() instanceof Set) {
         Set origKeys = (Set) prContext.getArguments();
         ArrayList vals = new ArrayList();
-        for (Iterator i = origKeys.iterator(); i.hasNext();) {
-          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(i.next());
+        for (Object origKey : origKeys) {
+          Object val = PartitionRegionHelper.getLocalDataForContext(prContext).get(origKey);
           if (val != null) {
             vals.add(val);
           }
         }
-        /* return vals; */
-        // prContext.getResultSender().sendResult(vals);
         if (hasResult())
           prContext.getResultSender().lastResult(vals);
       } else if (prContext.getArguments() instanceof HashMap) {
         HashMap putData = (HashMap) prContext.getArguments();
-        for (Iterator i = putData.entrySet().iterator(); i.hasNext();) {
-          Map.Entry me = (Map.Entry) i.next();
+        for (Object o : putData.entrySet()) {
+          Map.Entry me = (Map.Entry) o;
           prContext.getDataSet().put(me.getKey(), me.getValue());
         }
-        /* return Boolean.TRUE; */
-        // prContext.getResultSender().sendResult(Boolean.TRUE);
         if (hasResult())
           prContext.getResultSender().lastResult(Boolean.TRUE);
       } else {
-        /* return Boolean.FALSE; */
-        // prContext.getResultSender().sendResult(Boolean.FALSE);
         if (hasResult())
           prContext.getResultSender().lastResult(Boolean.FALSE);
       }
     } else {
-      /* return Boolean.FALSE; */
-      // context.getResultSender().sendResult(Boolean.FALSE);
       if (hasResult())
         context.getResultSender().lastResult(Boolean.FALSE);
     }
 
   }
 
-  public void execute5(FunctionContext context) {
+  private void execute5(FunctionContext context) {
     DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
     LogWriter logger = ds.getLogWriter();
     logger.info("Executing executeException in TestFunction on Member : "
@@ -474,7 +457,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
 
 
 
-  public void executeMemberFunction(FunctionContext context) {
+  private void executeMemberFunction(FunctionContext context) {
     if (this.hasResult()) {
       if (context.getArguments() instanceof String) {
         String args = (String) context.getArguments();
@@ -493,7 +476,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void execute8(FunctionContext context) {
+  private void execute8(FunctionContext context) {
     if (context instanceof RegionFunctionContext) {
       RegionFunctionContext rfContext = (RegionFunctionContext) context;
       rfContext.getDataSet().getCache().getLogger()
@@ -502,29 +485,23 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       if (rfContext.getArguments() instanceof Boolean) {
         /* return rfContext.getArguments(); */
         // rfContext.getResultSender().sendResult(rfContext.getArguments());
-        rfContext.getResultSender().lastResult((Serializable) rfContext.getArguments());
+        rfContext.getResultSender().lastResult(rfContext.getArguments());
       } else if (rfContext.getArguments() instanceof String) {
         String op = (String) rfContext.getArguments();
         if (op.equals("DELETE")) {
           Region r = rfContext.getDataSet();
           Set s = rfContext.getFilter();
           if (s == null) {
-            /* return Boolean.FALSE; */
-            // rfContext.getResultSender().sendResult(Boolean.FALSE);
             rfContext.getResultSender().lastResult(Boolean.FALSE);
           }
-          Iterator itr = s.iterator();
-          while (itr.hasNext()) {
-            r.destroy(itr.next());
+          for (Object value : s) {
+            r.destroy(value);
           }
-          /* return Boolean.TRUE; */
-          // rfContext.getResultSender().sendResult(Boolean.TRUE);
           rfContext.getResultSender().lastResult(Boolean.TRUE);
         } else if (op.equals("GET")) {
           Region r = rfContext.getDataSet();
           Set s = rfContext.getFilter();
           if (s == null) {
-            /* return Boolean.FALSE; */
             rfContext.getResultSender().lastResult(Boolean.FALSE);
           }
           Iterator itr = s.iterator();
@@ -532,28 +509,24 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
           while (itr.hasNext()) {
             vals.add(r.get(itr.next()));
           }
-          /* return vals; */
           rfContext.getResultSender().lastResult(vals);
         }
-        /* return Boolean.FALSE; */
         rfContext.getResultSender().lastResult(Boolean.FALSE);
       } else {
-        /* return Boolean.FALSE; */
         rfContext.getResultSender().lastResult(Boolean.FALSE);
       }
     } else {
-      /* return Boolean.FALSE; */
       context.getResultSender().lastResult(Boolean.FALSE);
     }
   }
 
-  public void execute9(FunctionContext context) {
+  private void execute9(FunctionContext context) {
     if (context instanceof RegionFunctionContext) {
       RegionFunctionContext rfContext = (RegionFunctionContext) context;
       rfContext.getDataSet().getCache().getLogger()
           .info("Executing function :  TestFunction9.execute " + rfContext);
       if (rfContext.getArguments() instanceof Boolean) {
-        rfContext.getResultSender().lastResult((Serializable) rfContext.getArguments());
+        rfContext.getResultSender().lastResult(rfContext.getArguments());
       } else if (rfContext.getArguments() instanceof String) {
         String key = (String) rfContext.getArguments();
         if (key.equals("TestingTimeOut")) { // for test
@@ -571,14 +544,14 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
           RegionFunctionContext prContext = (RegionFunctionContext) context;
           if (PartitionRegionHelper.isPartitionedRegion(prContext.getDataSet())) {
             rfContext.getResultSender().lastResult(
-                (Serializable) PartitionRegionHelper.getLocalDataForContext(prContext).get(key));
+                PartitionRegionHelper.getLocalDataForContext(prContext).get(key));
           }
         }
       } else if (rfContext.getArguments() instanceof Set) {
         Set origKeys = (Set) rfContext.getArguments();
         ArrayList vals = new ArrayList();
         for (Iterator i = origKeys.iterator(); i.hasNext();) {
-          Object val = null;
+          Object val;
           if (context instanceof RegionFunctionContext) {
             RegionFunctionContext prContext = (RegionFunctionContext) context;
             val = PartitionRegionHelper.getLocalDataForContext(prContext).get(i.next());
@@ -587,9 +560,9 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
           }
 
           if (i.hasNext())
-            rfContext.getResultSender().sendResult((Serializable) val);
+            rfContext.getResultSender().sendResult(val);
           else
-            rfContext.getResultSender().lastResult((Serializable) val);
+            rfContext.getResultSender().lastResult(val);
 
           if (val != null) {
             vals.add(val);
@@ -597,16 +570,14 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         }
       } else if (rfContext.getArguments() instanceof HashMap) {
         HashMap putData = (HashMap) rfContext.getArguments();
-        for (Iterator i = putData.entrySet().iterator(); i.hasNext();) {
-          Map.Entry me = (Map.Entry) i.next();
+        for (Object o : putData.entrySet()) {
+          Map.Entry me = (Map.Entry) o;
           rfContext.getDataSet().put(me.getKey(), me.getValue());
         }
         rfContext.getResultSender().lastResult(Boolean.TRUE);
       } else {
         rfContext.getResultSender().lastResult(Boolean.TRUE);
       }
-    } else {
-
     }
     context.getResultSender().lastResult("ABCD");
   }
@@ -626,8 +597,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     } else if (context.getArguments() instanceof Set) {
       Set origKeys = (Set) context.getArguments();
       ArrayList vals = new ArrayList();
-      for (Iterator i = origKeys.iterator(); i.hasNext();) {
-        Object val = i.next();
+      for (Object val : origKeys) {
         if (val != null) {
           vals.add(val);
         }
@@ -671,7 +641,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     } else if (context.getArguments() instanceof Set) {
       Set args = (Set) context.getArguments();
       for (int i = 0; i < args.size(); i++) {
-        context.getResultSender().sendResult(new Integer(i));
+        context.getResultSender().sendResult(i);
       }
       context.getResultSender().sendException(
           new MyFunctionExecutionException("I have been thrown from TestFunction with set"));
@@ -692,9 +662,9 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       throw new MyFunctionExecutionException("I have been thrown from TestFunction");
     } else if (rfContext.getArguments() instanceof Set) {
       Set origKeys = (Set) rfContext.getArguments();
-      for (Iterator i = origKeys.iterator(); i.hasNext();) {
+      for (Object origKey : origKeys) {
         Region r = PartitionRegionHelper.getLocalDataForContext(rfContext);
-        Object key = i.next();
+        Object key = origKey;
         Object val = r.get(key);
         if (val != null) {
           throw new MyFunctionExecutionException("I have been thrown from TestFunction");
@@ -715,7 +685,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     if (retryCountForExecuteFunctionReexecuteException >= 5) {
       logger.fine("Tried Function Execution 5 times. Now Returning after 5 attempts");
       context.getResultSender()
-          .lastResult(new Integer(retryCountForExecuteFunctionReexecuteException));
+          .lastResult(retryCountForExecuteFunctionReexecuteException);
       retryCountForExecuteFunctionReexecuteException = 0;
       return;
     }
@@ -734,7 +704,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
           .info("Executing function :  TestFunctionexecuteResultSender.execute " + rfContext);
       if (rfContext.getArguments() instanceof Boolean) {
         if (this.hasResult()) {
-          resultSender.lastResult((Serializable) rfContext.getArguments());
+          resultSender.lastResult(rfContext.getArguments());
         }
       } else if (rfContext.getArguments() instanceof Set) {
         Set origKeys = (Set) rfContext.getArguments();
@@ -744,10 +714,10 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         for (; i < (size - 1); i++) {
           Object val = PartitionRegionHelper.getLocalDataForContext(rfContext).get(objectArray[i]);
           if (val != null) {
-            resultSender.sendResult((Serializable) val);
+            resultSender.sendResult(val);
           }
         }
-        resultSender.lastResult((Serializable) objectArray[i]);
+        resultSender.lastResult(objectArray[i]);
       } else {
         resultSender.lastResult(Boolean.FALSE);
       }
@@ -756,28 +726,20 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void executeSocketTimeOut(FunctionContext context) {
-    WaitCriterion wc = new WaitCriterion() {
-      String excuse;
-
-      public boolean done() {
-        return false;
-      }
-
-      public String description() {
-        return excuse;
-      }
-    };
-    Wait.waitForCriterion(wc, 15000, 1000, false);
+  private void executeSocketTimeOut(FunctionContext context) {
+    try {
+      Thread.sleep(15000);
+    } catch (InterruptedException e) {
+      e.printStackTrace();
+    }
     if (context.getArguments() instanceof Boolean) {
-      context.getResultSender().lastResult((Serializable) context.getArguments());
+      context.getResultSender().lastResult(context.getArguments());
     } else if (context.getArguments() instanceof String) {
-      context.getResultSender().lastResult((Serializable) context.getArguments());
+      context.getResultSender().lastResult(context.getArguments());
     } else if (context.getArguments() instanceof Set) {
       Set origKeys = (Set) context.getArguments();
       ArrayList vals = new ArrayList();
-      for (Iterator i = origKeys.iterator(); i.hasNext();) {
-        Object val = i.next();
+      for (Object val : origKeys) {
         if (val != null) {
           vals.add(val);
         }
@@ -790,13 +752,13 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void executeTimeOut(FunctionContext context) {
+  private void executeTimeOut(FunctionContext context) {
 
     try {
       synchronized (this) {
         this.wait(2000);
       }
-    } catch (InterruptedException e) {
+    } catch (InterruptedException ignored) {
 
     }
     if (context instanceof RegionFunctionContext) {
@@ -805,7 +767,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
           .info("Executing function :  TestFunction.execute " + rfContext);
       if (rfContext.getArguments() instanceof Boolean) {
         /* return rfContext.getArguments(); */
-        rfContext.getResultSender().lastResult((Serializable) rfContext.getArguments());
+        rfContext.getResultSender().lastResult(rfContext.getArguments());
       } else if (rfContext.getArguments() instanceof String) {
         String key = (String) rfContext.getArguments();
         if (key.equals("TestingTimeOut")) { // for test
@@ -832,16 +794,16 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
            * return (Serializable)PartitionRegionHelper.getLocalDataForContext(rfContext).get(key);
            */
           rfContext.getResultSender().lastResult(
-              (Serializable) PartitionRegionHelper.getLocalDataForContext(rfContext).get(key));
+              PartitionRegionHelper.getLocalDataForContext(rfContext).get(key));
         } else {
-          rfContext.getResultSender().lastResult((Serializable) rfContext.getDataSet().get(key));
+          rfContext.getResultSender().lastResult(rfContext.getDataSet().get(key));
         }
         /* return (Serializable)rfContext.getDataSet().get(key); */
       } else if (rfContext.getArguments() instanceof Set) {
         Set origKeys = (Set) rfContext.getArguments();
         ArrayList vals = new ArrayList();
-        for (Iterator i = origKeys.iterator(); i.hasNext();) {
-          Object val = PartitionRegionHelper.getLocalDataForContext(rfContext).get(i.next());
+        for (Object origKey : origKeys) {
+          Object val = PartitionRegionHelper.getLocalDataForContext(rfContext).get(origKey);
           if (val != null) {
             vals.add(val);
           }
@@ -850,8 +812,8 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         /* return vals; */
       } else if (rfContext.getArguments() instanceof HashMap) {
         HashMap putData = (HashMap) rfContext.getArguments();
-        for (Iterator i = putData.entrySet().iterator(); i.hasNext();) {
-          Map.Entry me = (Map.Entry) i.next();
+        for (Object o : putData.entrySet()) {
+          Map.Entry me = (Map.Entry) o;
           rfContext.getDataSet().put(me.getKey(), me.getValue());
         }
         rfContext.getResultSender().lastResult(Boolean.TRUE);
@@ -864,26 +826,21 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
 
   }
 
-  public void executeHA(FunctionContext context) {
+  private void executeHA(FunctionContext context) {
     RegionFunctionContext rcontext = (RegionFunctionContext) context;
     Region region = rcontext.getDataSet();
     region.getCache().getLogger().fine("executeHA#execute( " + rcontext + " )");
-    WaitCriterion wc = new WaitCriterion() {
-      String excuse;
 
-      public boolean done() {
-        return false;
-      }
+    try {
+      Thread.sleep(10);
+    } catch (InterruptedException e) {
+      e.printStackTrace();
+    }
 
-      public String description() {
-        return excuse;
-      }
-    };
-    Wait.waitForCriterion(wc, 10000, 500, false);
-    rcontext.getResultSender().lastResult((Serializable) rcontext.getArguments());
+    rcontext.getResultSender().lastResult(rcontext.getArguments());
   }
 
-  public void executeHAAndNonHAOnServer(FunctionContext context) {
+  private void executeHAAndNonHAOnServer(FunctionContext context) {
     List<CacheServer> servers = CacheFactory.getAnyInstance().getCacheServers();
     ArrayList<String> args = (ArrayList<String>) context.getArguments();
     Region r = CacheFactory.getAnyInstance().getRegion(args.get(0));
@@ -892,34 +849,38 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     Integer numTimesSentResult = (Integer) r.get("sentresult");
 
     if (context.isPossibleDuplicate()) {
-      if (testName.equals("serverExecutionHATwoServerDown")) {
-        if ((Integer) r.get("stopped") == 2) {
+      switch (testName) {
+        case "serverExecutionHATwoServerDown":
+          if ((Integer) r.get("stopped") == 2) {
+            if (numTimesSentResult == null) {
+              r.put("sentresult", 1);
+            } else {
+              r.put("sentresult", ++numTimesSentResult);
+            }
+            context.getResultSender().lastResult(args.get(0));
+          } else {
+            r.put("stopped", ++numTimesStopped);
+            for (CacheServer s : servers) {
+              if (((CacheServerImpl) s).getSystem().getDistributedMember()
+                  .equals(((GemFireCacheImpl) CacheFactory.getAnyInstance()).getMyId())) {
+                s.stop();
+                DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
+                ds.disconnect();
+              }
+            }
+          }
+          break;
+        case "serverExecutionHAOneServerDown":
           if (numTimesSentResult == null) {
             r.put("sentresult", 1);
           } else {
             r.put("sentresult", ++numTimesSentResult);
           }
           context.getResultSender().lastResult(args.get(0));
-        } else {
-          r.put("stopped", ++numTimesStopped);
-          for (CacheServer s : servers) {
-            if (((CacheServerImpl) s).getSystem().getDistributedMember()
-                .equals(((GemFireCacheImpl) CacheFactory.getAnyInstance()).getMyId())) {
-              s.stop();
-              DistributedSystem ds = InternalDistributedSystem.getAnyInstance();
-              ds.disconnect();
-            }
-          }
-        }
-      } else if (testName.equals("serverExecutionHAOneServerDown")) {
-        if (numTimesSentResult == null) {
-          r.put("sentresult", 1);
-        } else {
-          r.put("sentresult", ++numTimesSentResult);
-        }
-        context.getResultSender().lastResult(args.get(0));
-      } else {
-        context.getResultSender().lastResult(args.get(0));
+          break;
+        default:
+          context.getResultSender().lastResult(args.get(0));
+          break;
       }
     } else {
       if (numTimesStopped == null) {
@@ -940,7 +901,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void executeHAAndNonHAOnRegion(FunctionContext context) {
+  private void executeHAAndNonHAOnRegion(FunctionContext context) {
     List<CacheServer> servers = CacheFactory.getAnyInstance().getCacheServers();
     ArrayList<String> args = (ArrayList<String>) context.getArguments();
 
@@ -1015,8 +976,8 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         + ds.getDistributedMember() + "with Context : " + context);
     if (retryCount >= 5) {
       logger.fine("Tried Function Execution 5 times. Now Returning after 5 attempts");
-      context.getResultSender().sendResult(new Integer(firstExecutionCount));
-      context.getResultSender().lastResult(new Integer(retryCount));
+      context.getResultSender().sendResult(firstExecutionCount);
+      context.getResultSender().lastResult(retryCount);
       firstExecutionCount = 0;
       retryCount = 0;
       return;
@@ -1028,11 +989,11 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     }
   }
 
-  public void executeWithNoLastResult(FunctionContext context) {
+  private void executeWithNoLastResult(FunctionContext context) {
     // add expected exception
     InternalDistributedSystem.getConnectedInstance().getLogWriter()
         .info("<ExpectedException action=add>did not send last result" + "</ExpectedException>");
-    context.getResultSender().sendResult((Serializable) context.getArguments());
+    context.getResultSender().sendResult(context.getArguments());
   }
 
   private void executeWithLastResult(FunctionContext context) {
@@ -1043,13 +1004,11 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
     RebalanceFactory factory = resMan.createRebalanceFactory();
     RebalanceOperation rebalanceOp = factory.start();
     try {
-      RebalanceResults rebalanceResults = rebalanceOp.getResults();
-    } catch (CancellationException e) {
-      e.printStackTrace();
-    } catch (InterruptedException e) {
+      rebalanceOp.getResults();
+    } catch (CancellationException | InterruptedException e) {
       e.printStackTrace();
     }
-    context.getResultSender().lastResult((Serializable) context.getArguments());
+    context.getResultSender().lastResult(context.getArguments());
   }
 
   /**
@@ -1071,15 +1030,12 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
       return false;
     }
     TestFunction function = (TestFunction) obj;
-    if (!this.props.equals(function.getConfig())) {
-      return false;
-    }
-    return true;
+    return this.props.equals(function.getConfig());
   }
 
   @Override
   public boolean hasResult() {
-    return Boolean.valueOf(this.props.getProperty(HAVE_RESULTS)).booleanValue();
+    return Boolean.valueOf(this.props.getProperty(HAVE_RESULTS));
   }
 
   /*
@@ -1110,7 +1066,7 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
         || getId().equals(TEST_FUNCTION_NONHA_NOP) || getId().equals(TEST_FUNCTION_NONHA)) {
       return false;
     }
-    return Boolean.valueOf(this.props.getProperty(HAVE_RESULTS)).booleanValue();
+    return Boolean.valueOf(this.props.getProperty(HAVE_RESULTS));
   }
 
   @Override
@@ -1122,8 +1078,8 @@ public class TestFunction<T> implements Function<T>, Declarable2, DataSerializab
   public void fromData(DataInput in) throws IOException, ClassNotFoundException {
     Map map = DataSerializer.readHashMap(in);
     if (map != null) {
-      for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-        Map.Entry entry = (Map.Entry) it.next();
+      for (Object o : map.entrySet()) {
+        Map.Entry entry = (Map.Entry) o;
         props.put(entry.getKey(), entry.getValue());
       }
     }