You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/04/19 19:31:52 UTC

[3/3] incubator-geode git commit: Fix some code eats exceptions. Add better Flaky comments.

Fix some code eats exceptions. Add better Flaky comments.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/166320ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/166320ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/166320ef

Branch: refs/heads/feature/GEODE-1233
Commit: 166320ef9c9acd4df2df934326fe60a84ce993d2
Parents: aa0fc76
Author: Kirk Lund <kl...@apache.org>
Authored: Tue Apr 19 10:31:09 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Tue Apr 19 10:31:09 2016 -0700

----------------------------------------------------------------------
 .../SessionReplicationIntegrationJUnitTest.java | 13 ++--
 .../com/gemstone/gemfire/TXExpiryJUnitTest.java |  6 +-
 .../gemfire/cache/ConnectionPoolDUnitTest.java  |  2 +-
 .../pooling/ConnectionManagerJUnitTest.java     |  2 +-
 .../management/MemoryThresholdsDUnitTest.java   |  3 +-
 .../MemoryThresholdsOffHeapDUnitTest.java       |  9 ++-
 .../management/ResourceManagerDUnitTest.java    |  6 +-
 .../dunit/QueryDataInconsistencyDUnitTest.java  |  4 +-
 .../QueryUsingFunctionContextDUnitTest.java     | 11 ++-
 .../query/dunit/QueryUsingPoolDUnitTest.java    |  2 +-
 .../cache/query/dunit/RemoteQueryDUnitTest.java |  3 +
 .../QueryREUpdateInProgressJUnitTest.java       |  2 +-
 ...pdateWithInplaceObjectModFalseDUnitTest.java |  9 ++-
 ...itializeIndexEntryDestroyQueryDUnitTest.java |  8 +-
 .../partitioned/PRQueryCacheCloseDUnitTest.java |  2 +-
 .../gemfire/cache30/Bug44418JUnitTest.java      |  5 +-
 .../gemfire/cache30/CacheLogRollDUnitTest.java  | 13 +++-
 .../cache30/ClientMembershipDUnitTest.java      |  2 +-
 ...tributedAckPersistentRegionCCEDUnitTest.java | 80 +++++++++-----------
 .../DistributedAckRegionCCEDUnitTest.java       | 11 +--
 .../cache30/DistributedAckRegionDUnitTest.java  |  2 -
 .../DistributedNoAckRegionCCEDUnitTest.java     | 10 +--
 .../gemfire/cache30/MultiVMRegionTestCase.java  | 16 ++--
 .../cache30/PartitionedRegionDUnitTest.java     |  6 +-
 .../cache30/RegionReliabilityTestCase.java      |  4 +
 .../gemfire/cache30/RegionTestCase.java         |  2 +-
 .../gemfire/cache30/TXDistributedDUnitTest.java |  5 +-
 .../gemfire/distributed/LocatorDUnitTest.java   |  8 +-
 .../LocatorLauncherRemoteJUnitTest.java         |  8 +-
 .../ServerLauncherRemoteJUnitTest.java          | 11 +--
 .../internal/LocatorLoadSnapshotJUnitTest.java  |  2 +
 .../GemFireDeadlockDetectorDUnitTest.java       | 12 ++-
 ...hreadPoolExecutorWithKeepAliveJUnitTest.java |  4 +-
 .../cache/FixedPRSinglehopDUnitTest.java        |  2 +-
 .../internal/cache/GIIDeltaDUnitTest.java       | 10 +--
 .../cache/NetSearchMessagingDUnitTest.java      |  4 +-
 .../gemfire/internal/cache/OplogJUnitTest.java  | 13 ++--
 .../PartitionedRegionCreationDUnitTest.java     | 15 ++--
 ...rtitionedRegionDelayedRecoveryDUnitTest.java |  6 +-
 .../PartitionedRegionSingleHopDUnitTest.java    |  3 +-
 .../internal/cache/SingleHopStatsDUnitTest.java |  9 ++-
 ...ributedRegionFunctionExecutionDUnitTest.java | 11 ++-
 ...onFunctionExecutionNoSingleHopDUnitTest.java |  7 +-
 .../PRFunctionExecutionTimeOutDUnitTest.java    | 15 ++--
 .../internal/cache/ha/Bug48571DUnitTest.java    |  6 +-
 ...tentColocatedPartitionedRegionDUnitTest.java | 11 +--
 .../PersistentPartitionedRegionDUnitTest.java   |  9 ++-
 ...tentPartitionedRegionOldConfigDUnitTest.java |  6 +-
 .../fixed/FixedPartitioningDUnitTest.java       | 12 +--
 .../DestroyEntryPropagationDUnitTest.java       |  4 +-
 .../sockets/HAStartupAndFailoverDUnitTest.java  | 19 ++---
 .../sockets/UpdatePropagationDUnitTest.java     | 17 ++---
 .../asyncqueue/AsyncEventListenerDUnitTest.java |  2 +-
 .../management/DLockManagementDUnitTest.java    | 22 +++---
 ...ersalMembershipListenerAdapterDUnitTest.java |  2 +-
 .../cli/commands/CliCommandTestBase.java        | 14 +---
 ...eateAlterDestroyRegionCommandsDUnitTest.java |  2 +-
 .../commands/DiskStoreCommandsDUnitTest.java    |  2 +-
 .../commands/GemfireDataCommandsDUnitTest.java  |  2 +-
 .../cli/commands/IndexCommandsDUnitTest.java    |  2 +-
 .../ListAndDescribeRegionDUnitTest.java         |  2 +-
 .../MiscellaneousCommandsDUnitTest.java         |  2 +-
 ...laneousCommandsExportLogsPart3DUnitTest.java |  2 +
 .../cli/commands/ShellCommandsDUnitTest.java    |  2 +-
 .../SharedConfigurationUsingDirDUnitTest.java   |  2 +-
 .../GemcachedDevelopmentJUnitTest.java          |  2 +-
 .../pdx/DistributedSystemIdDUnitTest.java       | 13 ++--
 .../gemfire/redis/RedisDistDUnitTest.java       |  4 +-
 .../security/ClientAuthenticationDUnitTest.java |  2 +-
 .../security/P2PAuthenticationDUnitTest.java    |  4 +-
 .../cache/query/cq/dunit/CqPerfDUnitTest.java   |  3 +-
 .../cq/dunit/CqPerfUsingPoolDUnitTest.java      |  4 +-
 .../cache/query/cq/dunit/CqQueryDUnitTest.java  |  2 +-
 .../cq/dunit/CqQueryUsingPoolDUnitTest.java     | 22 ++----
 .../query/cq/dunit/PrCqUsingPoolDUnitTest.java  | 15 ++--
 .../query/dunit/QueryMonitorDUnitTest.java      |  8 +-
 .../sockets/DurableClientSimpleDUnitTest.java   |  4 +-
 .../cli/commands/ClientCommandsDUnitTest.java   |  6 +-
 .../security/ClientAuthzObjectModDUnitTest.java |  2 +-
 .../ClientPostAuthorizationDUnitTest.java       |  2 +-
 .../LuceneIndexRecoveryHAJUnitTest.java         |  6 +-
 .../cache/CacheXml70GatewayDUnitTest.java       |  3 +-
 .../cache/wan/CacheClientNotifierDUnitTest.java |  2 +-
 .../gemfire/internal/cache/wan/WANTestBase.java | 11 +--
 ...allelGatewaySenderOperation_1_DUnitTest.java |  5 +-
 .../ConcurrentWANPropogation_2_DUnitTest.java   |  2 +-
 .../cache/wan/misc/WANSSLDUnitTest.java         |  2 +-
 .../cache/wan/misc/WanValidationsDUnitTest.java |  2 +-
 .../ParallelWANPropogationOffHeapDUnitTest.java |  3 +-
 ...arallelGatewaySenderOperationsDUnitTest.java |  4 +-
 ...ersistenceEnabledGatewaySenderDUnitTest.java |  5 +-
 .../ParallelWANPropagationDUnitTest.java        |  2 +-
 .../wan/parallel/ParallelWANStatsDUnitTest.java |  1 +
 ...rialGatewaySenderEventListenerDUnitTest.java |  8 +-
 .../SerialWANPropagationLoopBackDUnitTest.java  |  3 +-
 .../serial/SerialWANPropogationDUnitTest.java   |  2 +-
 ...NPropogation_PartitionedRegionDUnitTest.java |  5 +-
 97 files changed, 325 insertions(+), 354 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
----------------------------------------------------------------------
diff --git a/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java b/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
index ddb7405..004f9fe 100644
--- a/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
+++ b/extensions/geode-modules-session/src/test/java/com/gemstone/gemfire/modules/session/internal/filter/SessionReplicationIntegrationJUnitTest.java
@@ -14,7 +14,6 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-
 package com.gemstone.gemfire.modules.session.internal.filter;
 
 import java.io.File;
@@ -75,7 +74,7 @@ public class SessionReplicationIntegrationJUnitTest {
 
   static {
     // Create a per-user scratch directory
-    tmpdir = new File(System.getProperty("java.io.tmpdir"),
+    tmpdir = new File(System.getProperty("java.io.tmpdir"), // TODO: use junit rule TemporaryFolder
         "gemfire_modules-" + System.getProperty("user.name"));
     tmpdir.mkdirs();
     tmpdir.deleteOnExit();
@@ -356,8 +355,8 @@ public class SessionReplicationIntegrationJUnitTest {
 
   /**
    * Test setting an attribute to null deletes it
-   */
-  @Category(FlakyTest.class) // GEODE-1015
+  */
+  @Category(FlakyTest.class) // GEODE-1015: uses Jetty HttpTester, uses static vars with class loader isolation, TODO: rewrite test with JUnit 4 rules including TemporaryFolder
   @Test
   public void testSetAttributeNullDeletesIt() throws Exception {
     Callback c_1 = new Callback() {
@@ -487,7 +486,7 @@ public class SessionReplicationIntegrationJUnitTest {
    * Test that invalidating a session destroys it as well as the backend
    * object.
    */
-  @Category(FlakyTest.class) // GEODE-1015
+  @Category(FlakyTest.class) // GEODE-1015: uses Jetty HttpTester, uses static vars with class loader isolation, TODO: rewrite test with JUnit 4 rules including TemporaryFolder
   @Test
   public void testInvalidateSession1() throws Exception {
     Callback c_1 = new Callback() {
@@ -578,7 +577,7 @@ public class SessionReplicationIntegrationJUnitTest {
   /**
    * Test that invalidating a session throws an exception on subsequent access.
    */
-  @Category(FlakyTest.class) // GEODE-1015
+  @Category(FlakyTest.class) // GEODE-1015: uses Jetty HttpTester, uses static vars with class loader isolation, TODO: rewrite test with JUnit 4 rules including TemporaryFolder
   @Test
   public void testInvalidateSession3() throws Exception {
     Callback c_1 = new Callback() {
@@ -1210,7 +1209,7 @@ public class SessionReplicationIntegrationJUnitTest {
   /**
    * Test that request forward dispatching works
    */
-  @Category(FlakyTest.class) // GEODE-1015
+  @Category(FlakyTest.class) // GEODE-1015: uses Jetty HttpTester, uses static vars with class loader isolation, TODO: rewrite test with JUnit 4 rules including TemporaryFolder
   @Test
   public void testDispatchingForward1() throws Exception {
     Callback c_1 = new Callback() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
index 5e371f4..30dacd1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/TXExpiryJUnitTest.java
@@ -51,6 +51,7 @@ import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.cache.LocalRegion;
 import com.gemstone.gemfire.internal.cache.TXManagerImpl;
 import com.gemstone.gemfire.internal.cache.TXStateProxy;
+import com.gemstone.gemfire.test.dunit.Assert;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
@@ -60,7 +61,6 @@ import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
  * Tests transaction expiration functionality
  *
  * @since 4.0
- *
  */
 @Category(IntegrationTest.class)
 public class TXExpiryJUnitTest {
@@ -327,7 +327,7 @@ public class TXExpiryJUnitTest {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-845: time sensitive, expiration
+  @Category(FlakyTest.class) // GEODE-845: time sensitive, expiration, eats exceptions (1 fixed), waitForCriterion, 3 second timeout
   @Test
   public void testRegionIdleExpiration() throws CacheException {
     Region<String, String> exprReg = createRegion("TXRegionIdle");
@@ -394,7 +394,7 @@ public class TXExpiryJUnitTest {
         ExpiryTask.suspendExpiration();
         this.txMgr.commit();
       } catch (CommitConflictException error) {
-        fail("Expiration should not cause commit to fail");
+        Assert.fail("Expiration should not cause commit to fail", error);
       }
       assertEquals("value", exprReg.getEntry("key0").getValue());
       waitForRegionExpiration(lr, useTTL);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/ConnectionPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/ConnectionPoolDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/ConnectionPoolDUnitTest.java
index 839e0b0..bbc2839 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/ConnectionPoolDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/ConnectionPoolDUnitTest.java
@@ -1188,7 +1188,7 @@ public class ConnectionPoolDUnitTest extends CacheTestCase {
    * Make sure cnx lifetime expiration working on thread local cnxs.
    * @author darrel
    */
-  @Category(FlakyTest.class) // GEODE-1197: BindException
+  @Category(FlakyTest.class) // GEODE-1197: random ports, BindException, FixMethodOrder, expiration, time sensitive, waitForCriterion, async actions
   public void test009LifetimeExpireOnTL() throws CacheException {
     basicTestLifetimeExpire(true);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerJUnitTest.java
index 4b8d898..6360d59 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/client/internal/pooling/ConnectionManagerJUnitTest.java
@@ -228,7 +228,7 @@ public class ConnectionManagerJUnitTest {
 //    
 //  }
 
-  @Category(FlakyTest.class) // GEODE-923: time sensitive
+  @Category(FlakyTest.class) // GEODE-923: time sensitive, expiration, thread sleeps, wait loop
   @Test
   public void testIdleExpiration() throws InterruptedException, AllConnectionsInUseException, NoAvailableServersException {
     final long nanoToMillis = 1000000;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsDUnitTest.java
index 61d1e3b..c6e0568 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsDUnitTest.java
@@ -400,6 +400,7 @@ public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
    * 
    * @throws Exception
    */
+  @Category(FlakyTest.class) // GEODE-427: random ports, time sensitive, waitForCriterions
   public void testEventDelivery() throws Exception {
     final Host host = Host.getHost(0);
     final VM server1 = host.getVM(0);
@@ -568,7 +569,7 @@ public class MemoryThresholdsDUnitTest extends ClientServerTestCase {
     prRemotePutRejection(true, false, true);
   }
 
-  @Category(FlakyTest.class) // GEODE-987
+  @Category(FlakyTest.class) // GEODE-987: random ports, failed to throw expected ResourceException, overly complex expected exception handling, memory and GC sensitive, expiration, waitForCriterion
   public void testPR_RemotePutRejectionWithTx() throws Exception {
     prRemotePutRejection(false, false, true);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
index feefb6d..be6b266 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/MemoryThresholdsOffHeapDUnitTest.java
@@ -26,6 +26,8 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.AttributesMutator;
 import com.gemstone.gemfire.cache.CacheException;
@@ -82,6 +84,7 @@ import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Tests the Off-Heap Memory thresholds of {@link ResourceManager}
@@ -512,6 +515,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends ClientServerTestCase {
    * to a safe state then test that they are allowed.
    * @throws Exception
    */
+  @Category(FlakyTest.class) // GEODE-438: test pollution, async actions, time sensitive, waitForCriterion, TODO: consider disconnect DS in setup
   public void testDRLoadRejection() throws Exception {
     final Host host = Host.getHost(0);
     final VM replicate1 = host.getVM(1);
@@ -725,6 +729,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends ClientServerTestCase {
     prRemotePutRejection(false, true, false);
   }
 
+  @Category(FlakyTest.class) // GEODE-596: BindException, random ports
   public void testPR_RemotePutRejectionCacheClose() throws Exception {
     prRemotePutRejection(true, false, false);
   }
@@ -741,6 +746,7 @@ public class MemoryThresholdsOffHeapDUnitTest extends ClientServerTestCase {
     prRemotePutRejection(true, false, true);
   }
 
+  @Category(FlakyTest.class) // GEODE-500: random ports, time sensitive, memory sensitive and GC dependent, waitForCriterions
   public void testPR_RemotePutRejectionWithTx() throws Exception {
     prRemotePutRejection(false, false, true);
   }
@@ -916,13 +922,14 @@ public class MemoryThresholdsOffHeapDUnitTest extends ClientServerTestCase {
    * if the VM with the bucket is in a critical state.
    * @throws Exception
    */
+  @Category(FlakyTest.class) // GEODE-551: waitForCriterion, memory sensitive
   public void testPRLoadRejection() throws Exception {
     final Host host = Host.getHost(0);
     final VM accessor = host.getVM(1);
     final VM ds1 = host.getVM(2);
     final String rName = getUniqueName();
 
-    // Make sure the desired VMs will have a fresh DS.
+    // Make sure the desired VMs will have a fresh DS. TODO: convert these from AsyncInvocation to invoke
     AsyncInvocation d0 = accessor.invokeAsync(() -> DistributedTestCase.disconnectFromDS());
     AsyncInvocation d1 = ds1.invokeAsync(() -> DistributedTestCase.disconnectFromDS());
     d0.join();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/management/ResourceManagerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/ResourceManagerDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/ResourceManagerDUnitTest.java
index e749d9e..9f57fc0 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/management/ResourceManagerDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/management/ResourceManagerDUnitTest.java
@@ -74,7 +74,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
  * 
  * TODO: javadoc this test properly and cleanup the helper methods to be
  * more flexible and understandable
- *  
  */
 public class ResourceManagerDUnitTest extends CacheTestCase {
   private static final Logger logger = LogService.getLogger();
@@ -971,7 +970,7 @@ public class ResourceManagerDUnitTest extends CacheTestCase {
       });
   }
 
-  @Category(FlakyTest.class) // GEODE-755
+  @Category(FlakyTest.class) // GEODE-755: thread unsafe test hook (bucketReadHook), remove bucket fails, possible product bug in rebalancing
   public void testRemoveDuringGet() {
     doOpDuringBucketRemove(new OpDuringBucketRemove() {
         public void runit(PartitionedRegion pr, Object key, Object value) {
@@ -980,6 +979,7 @@ public class ResourceManagerDUnitTest extends CacheTestCase {
       });
   }
 
+  @Category(FlakyTest.class) // GEODE-673: thread unsafe test hook (bucketReadHook), remove bucket fails, possible product bug in rebalancing
   public void testRemoveDuringContainsKey() {
     doOpDuringBucketRemove(new OpDuringBucketRemove() {
         public void runit(PartitionedRegion pr, Object key, Object value) {
@@ -1138,7 +1138,7 @@ public class ResourceManagerDUnitTest extends CacheTestCase {
    * Creates a chain of three colocated PRs and then calls removeBucket
    * to make sure that all colocated buckets are removed together.
    */
-  @Category(FlakyTest.class) // GEODE-928
+  @Category(FlakyTest.class) // GEODE-928: RemoveBucketMessage failure?
   public void testRemoveColocatedBuckets() {
     final String[] regionPath = new String[] {
         getUniqueName() + "-PR-0", 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryDataInconsistencyDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryDataInconsistencyDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryDataInconsistencyDUnitTest.java
index 3861c2a..c5f5140 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryDataInconsistencyDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryDataInconsistencyDUnitTest.java
@@ -56,8 +56,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 /**
  * This tests the data inconsistency during update on an index and querying the
  * same UNLOCKED index.
- * 
- * 
  */
 public class QueryDataInconsistencyDUnitTest extends CacheTestCase {
 
@@ -298,7 +296,7 @@ public class QueryDataInconsistencyDUnitTest extends CacheTestCase {
   }
 
   @Category(FlakyTest.class) // GEODE-925: time sensitive, async actions, short timeouts
-  public void testRangeIndexWithIndexAndQueryFromCluaseMisMatch() {
+  public void testRangeIndexWithIndexAndQueryFromCluaseMisMatch() { // TODO: fix misspelling
     // Create caches
     Properties props = new Properties();
     server.invoke(() -> PRClientServerTestBase.createCacheInVm( props ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
index c85a6d9..08626de 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingFunctionContextDUnitTest.java
@@ -22,6 +22,8 @@ import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.CacheException;
 import com.gemstone.gemfire.cache.CacheFactory;
@@ -63,13 +65,12 @@ import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 import com.gemstone.gemfire.test.dunit.NetworkUtils;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * This tests the querying using a RegionFunctionContext which provides a filter
  * (routing keys) to run the query on subset of buckets "locally". If query
  * includes buckets
- *
- *
  */
 public class QueryUsingFunctionContextDUnitTest extends CacheTestCase {
 
@@ -434,10 +435,8 @@ public class QueryUsingFunctionContextDUnitTest extends CacheTestCase {
 
   }
 
-  /**
-  *
-  */
- public void testQueriesWithFilterKeysOnPRWithRebalancing() {
+  @Category(FlakyTest.class) // GEODE-575: ignores lots of exceptions, non-thread-safe test hooks
+  public void testQueriesWithFilterKeysOnPRWithRebalancing() {
    IgnoredException.addIgnoredException("QueryInvocationTargetException");
    IgnoredException.addIgnoredException("java.net.SocketException");
    IgnoredException.addIgnoredException("ServerConnectivityException");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingPoolDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingPoolDUnitTest.java
index 7c52246..223e4b4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingPoolDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryUsingPoolDUnitTest.java
@@ -1456,7 +1456,7 @@ public class QueryUsingPoolDUnitTest extends CacheTestCase {
   /**
    * Tests client-server query using parameters (compiled queries).
    */
-  @Category(FlakyTest.class) // GEODE-1146
+  @Category(FlakyTest.class) // GEODE-1146: time senstiive, thread sleeps, uses zero port for servers (good!), async actions, AsyncInvocation orphans
   public void testBindParamsWithMulitipleClients() throws CacheException {
 
     final String name = this.getName();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
index 0853162..6769a0e 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/RemoteQueryDUnitTest.java
@@ -50,9 +50,11 @@ import com.gemstone.gemfire.test.dunit.NetworkUtils;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 import cacheRunner.Portfolio;
 import cacheRunner.Position;
+import org.junit.experimental.categories.Category;
 
 /**
  * Tests remote (client/server) query execution.
@@ -939,6 +941,7 @@ public class RemoteQueryDUnitTest extends CacheTestCase {
    * Tests remote query execution using a BridgeClient as the CacheWriter
    * and CacheLoader.
    */
+  @Category(FlakyTest.class) // GEODE-490: random port
   public void testRemoteBridgeClientQueries() throws CacheException {
 
     final String name = this.getName();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/functional/QueryREUpdateInProgressJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/functional/QueryREUpdateInProgressJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/functional/QueryREUpdateInProgressJUnitTest.java
index 409578b..e7681b5 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/functional/QueryREUpdateInProgressJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/functional/QueryREUpdateInProgressJUnitTest.java
@@ -56,7 +56,7 @@ import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
  *
  *
  */
-@Category({ IntegrationTest.class, FlakyTest.class }) // GEODE-1059
+@Category({ IntegrationTest.class, FlakyTest.class }) // GEODE-1059: uses PRQueryHelper which launches dunit vms in IntegrationTest
 public class QueryREUpdateInProgressJUnitTest {
 
   private static final String exampleRegionName = "exampleRegion2";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest.java
index 8fc8049..8034931 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest.java
@@ -21,6 +21,8 @@ package com.gemstone.gemfire.cache.query.internal.index;
 
 import java.util.Collection;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.CacheException;
 import com.gemstone.gemfire.cache.Region;
@@ -50,6 +52,7 @@ import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.SerializableRunnableIF;
 import com.gemstone.gemfire.test.dunit.ThreadUtils;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * This test is similar to {@link ConcurrentIndexUpdateWithoutWLDUnitTest} except
@@ -58,11 +61,8 @@ import com.gemstone.gemfire.test.dunit.ThreadUtils;
  * 
  * During validation all region operations are paused for a while. Validation
  * happens multiple time during one test run on a fixed time interval.
- * 
- * 
  */
-public class ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest extends
-    DistributedTestCase {
+public class ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest extends DistributedTestCase {
   
   PRQueryDUnitHelper helper = new PRQueryDUnitHelper("ConcurrentIndexUpdateWithoutWLDUnitTest");
   private static String regionName = "Portfolios";
@@ -173,6 +173,7 @@ public class ConcurrentIndexUpdateWithInplaceObjectModFalseDUnitTest extends
     };
   }
 
+  @Category(FlakyTest.class) // GEODE-431: time sensitive, uses PRQueryDUnitHelper whcih eats exceptions, async actions, uses Random
   public void testRangeIndex() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
index c4fb80b..0311f38 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/internal/index/InitializeIndexEntryDestroyQueryDUnitTest.java
@@ -49,8 +49,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
  * Test creates a local region. Creates and removes index in a parallel running thread.
  * Then destroys and puts back entries in separated thread in the same region and runs
  * query parallely and checks for UNDEFINED values in result set of the query.
- *
- *
  */
 public class InitializeIndexEntryDestroyQueryDUnitTest extends CacheTestCase {
 
@@ -210,7 +208,7 @@ public class InitializeIndexEntryDestroyQueryDUnitTest extends CacheTestCase {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1036
+  @Category(FlakyTest.class) // GEODE-1036: uses PRQueryDUnitHelper, time sensitive, async actions, overly long joins (16+ minutes), eats exceptions (fixed 1), thread sleeps
   public void testAsyncIndexInitDuringEntryDestroyAndQueryOnPR() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);
@@ -259,7 +257,7 @@ public class InitializeIndexEntryDestroyQueryDUnitTest extends CacheTestCase {
             index = cache.getQueryService().createIndex("statusIndex", "p.status", "/"+name+" p");
           } catch (Exception e1) {
             e1.printStackTrace();
-            fail("Index creation failed");
+            Assert.fail("Index creation failed", e1);
           }
           assertNotNull(index);
 
@@ -324,7 +322,7 @@ public class InitializeIndexEntryDestroyQueryDUnitTest extends CacheTestCase {
             PRQHelp.getCache().getLogger().fine("Querying the region");
             results = (SelectResults)query.execute();
           } catch (Exception e) {
-            e.printStackTrace();
+            e.printStackTrace(); // TODO: eats exceptions
           }
 
           for (Object obj : results) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
index 29927b6..af53e11 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/partitioned/PRQueryCacheCloseDUnitTest.java
@@ -208,7 +208,7 @@ public class PRQueryCacheCloseDUnitTest extends PartitionedRegionDUnitTestCase {
    * 6. then recreates the PR on the same VM <br>
    * 7. Verfies the size , type , contents of both the resultSets Obtained <br>
    */
-  @Category(FlakyTest.class) // GEODE-1239
+  @Category(FlakyTest.class) // GEODE-1239: uses PRQueryDUnitHelper, uses Random, async actions, time sensitive, complex retry loop, thread unsafe test hook
   public void testPRWithCacheCloseInOneDatastoreWithoutDelay() throws Exception
   {
     LogWriterUtils.getLogWriter()

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/Bug44418JUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/Bug44418JUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/Bug44418JUnitTest.java
index a56282c..a34b9af 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/Bug44418JUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/Bug44418JUnitTest.java
@@ -40,7 +40,6 @@ import com.gemstone.gemfire.internal.cache.LocalRegion;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
-
 /**
  * Test for Bug 44418.
  * 
@@ -48,12 +47,12 @@ import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
  */
 @Category(IntegrationTest.class)
 @SuppressWarnings({ "unchecked", "rawtypes" })
-public class Bug44418JUnitTest {
+public class Bug44418JUnitTest { // TODO: rename this test to non-ticket descriptive name
 
   DistributedSystem ds;
   Cache cache;
 
-  @Category(FlakyTest.class) // GEODE-1139: time sensitive with sleep
+  @Category(FlakyTest.class) // GEODE-1139: time sensitive, thread sleep, expiration
   @Test
   public void testPut() throws Exception {
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheLogRollDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheLogRollDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheLogRollDUnitTest.java
index 3e5994d..3a96728 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheLogRollDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/CacheLogRollDUnitTest.java
@@ -25,9 +25,12 @@ import java.io.IOException;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.distributed.DistributedSystem;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.logging.InternalLogWriter;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Test to make sure cache close is working.
@@ -233,7 +236,8 @@ public class CacheLogRollDUnitTest extends CacheTestCase {
       * This was throwing NPEs until my fix...
       */
   }
- 
+
+  @Category(FlakyTest.class) // GEODE-674: possible disk pollution, file size sensitive
   public void testSimpleStartRestartWithRolling() throws Exception {
     Properties props = new Properties();
     String baseLogName = "restarto";
@@ -292,7 +296,8 @@ public class CacheLogRollDUnitTest extends CacheTestCase {
     }
 
   }
-  
+
+  @Category(FlakyTest.class) // GEODE-677: possible disk pollution, file size sensitive
   public void testStartWithRollingThenRestartWithRolling() throws Exception {
     Properties props = new Properties();
     String baseLogName = "biscuits";
@@ -367,7 +372,8 @@ public class CacheLogRollDUnitTest extends CacheTestCase {
     // Reenable this assertion once this issue (bug 42176) is fixed.
     assertTrue(f1c3.exists());
   }
-  
+
+  @Category(FlakyTest.class) // GEODE-676: possible disk pollution, file size sensitive
   public void testLogFileLayoutAndRolling() throws Exception {
     String baseLogName = "tacos";
       Properties props = new Properties();
@@ -401,6 +407,7 @@ public class CacheLogRollDUnitTest extends CacheTestCase {
       
   }
 
+  @Category(FlakyTest.class) // GEODE-675: possible disk pollution, file size sensitive
   public void testSecurityLogFileLayoutAndRolling() throws Exception {
     String baseLogName = "securitytacos";
       Properties props = new Properties();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
index 30115fa..46e91b0 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/ClientMembershipDUnitTest.java
@@ -744,7 +744,7 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
    * server joins when the client connects to the server. If the server
    * crashes or departs gracefully, the client will detect this as a crash.
    */
-  @Category(FlakyTest.class) // GEODE-1240
+  @Category(FlakyTest.class) // GEODE-1240: eats exceptions, random ports, time sensitive waits
   public void testClientMembershipEventsInClient() throws Exception {
     getSystem();
     IgnoredException.addIgnoredException("IOException");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
index 27f5e36..6050e3d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckPersistentRegionCCEDUnitTest.java
@@ -1,20 +1,20 @@
-/*
- * 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.
- */
-
+/*
+ * 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.
+ */
+
 /**
  * 
  */
@@ -35,26 +35,20 @@ import com.gemstone.gemfire.internal.cache.DistributedRegion;
 import com.gemstone.gemfire.internal.cache.LocalRegion;
 import com.gemstone.gemfire.internal.cache.tier.sockets.Part;
 import com.gemstone.gemfire.internal.cache.versions.VersionTag;
-import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
-import com.gemstone.gemfire.test.dunit.AsyncInvocation;
-import com.gemstone.gemfire.test.dunit.Host;
-import com.gemstone.gemfire.test.dunit.SerializableCallable;
-import com.gemstone.gemfire.test.dunit.SerializableRunnable;
-import com.gemstone.gemfire.test.dunit.VM;
-
+import com.gemstone.gemfire.internal.i18n.LocalizedStrings;
+import com.gemstone.gemfire.test.dunit.AsyncInvocation;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.SerializableCallable;
+import com.gemstone.gemfire.test.dunit.SerializableRunnable;
+import com.gemstone.gemfire.test.dunit.VM;
+
 import java.io.IOException;
 import java.util.Map;
-
+
 import junit.framework.Assert;
 
-/**
- *
- */
 public class DistributedAckPersistentRegionCCEDUnitTest extends DistributedAckRegionCCEDUnitTest {
 
-  /**
-   * @param name
-   */
   public DistributedAckPersistentRegionCCEDUnitTest(String name) {
     super(name);
   }
@@ -70,18 +64,18 @@ public class DistributedAckPersistentRegionCCEDUnitTest extends DistributedAckRe
     return factory.create();
   }
 
-//  public void testClearWithConcurrentEventsAsync() throws Exception {
-//    int end = 100;
-//    for (int i=0; i<end; i++) {
-//      System.out.println("Starting run #" + i);
-//      super.testClearWithConcurrentEventsAsync();
-//      if (i<(end-1)) {
-//        tearDown();
-//        setUp();
-//      }
-//    }
-//  }
-  
+//  public void testClearWithConcurrentEventsAsync() throws Exception {
+//    int end = 100;
+//    for (int i=0; i<end; i++) {
+//      System.out.println("Starting run #" + i);
+//      super.testClearWithConcurrentEventsAsync();
+//      if (i<(end-1)) {
+//        tearDown();
+//        setUp();
+//      }
+//    }
+//  }
+  
   public void testClearOnNonReplicateWithConcurrentEvents() {}
   
   public void testConcurrentEventsOnNonReplicatedRegion() {}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionCCEDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionCCEDUnitTest.java
index f2ec7a6..d642888 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionCCEDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionCCEDUnitTest.java
@@ -72,15 +72,8 @@ import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class DistributedAckRegionCCEDUnitTest extends DistributedAckRegionDUnitTest {
 
-  
-  /**
-   * @param name
-   */
   public DistributedAckRegionCCEDUnitTest(String name) {
     super(name);
   }
@@ -289,12 +282,12 @@ public class DistributedAckRegionCCEDUnitTest extends DistributedAckRegionDUnitT
     versionTestConcurrentEvents();
   }
   
-  @Category(FlakyTest.class) // GEODE-720: async actions, thread sleeps
+  @Category(FlakyTest.class) // GEODE-720: time sensitive, async actions, thread sleeps
   public void testClearWithConcurrentEvents() throws Exception {
     z_versionTestClearWithConcurrentEvents(true);
   }
 
-  @Category(FlakyTest.class) // GEODE-1046: async actions, thread sleeps
+  @Category(FlakyTest.class) // GEODE-599 and GEODE-1046: async actions, thread sleeps -- // GEODE-1046: this may be hitting a product bug!
   public void testClearWithConcurrentEventsAsync() throws Exception {
     versionTestClearWithConcurrentEventsAsync();
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
index 26f0983..865761f 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedAckRegionDUnitTest.java
@@ -39,8 +39,6 @@ import com.gemstone.gemfire.test.dunit.VM;
  */
 public class DistributedAckRegionDUnitTest extends MultiVMRegionTestCase {
 
-
-  
   public DistributedAckRegionDUnitTest(String name) {
     super(name);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
index a89ca24..9e9348b 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedNoAckRegionCCEDUnitTest.java
@@ -44,8 +44,7 @@ import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-public class DistributedNoAckRegionCCEDUnitTest extends
-    DistributedNoAckRegionDUnitTest {
+public class DistributedNoAckRegionCCEDUnitTest extends DistributedNoAckRegionDUnitTest {
   
   static volatile boolean ListenerBlocking;
 
@@ -364,14 +363,11 @@ public class DistributedNoAckRegionCCEDUnitTest extends
    * This tests the concurrency versioning system to ensure that event conflation
    * happens correctly and that the statistic is being updated properly
    */
-  @Category(FlakyTest.class) // GEODE-976: time sensitive with sleep, relies on stat values
+  @Category(FlakyTest.class) // GEODE-976: time sensitive, thread sleeps, relies on stat values
   public void testConcurrentEventsOnEmptyRegion() {
     versionTestConcurrentEventsOnEmptyRegion();
   }
-  
-  
-  
-  
+
   /**
    * This tests the concurrency versioning system to ensure that event conflation
    * happens correctly and that the statistic is being updated properly

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
index 77b75b8..9fa2034 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/MultiVMRegionTestCase.java
@@ -1165,7 +1165,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
   /**
    * Tests that a {@link CacheListener} is invoked in a remote VM.
    */
-  @Category(FlakyTest.class) // GEODE-932: time sensitive, 3 second waitForInvocation calls
+  @Category(FlakyTest.class) // GEODE-153 & GEODE-932: time sensitive, waitForInvocation (waitForCriterion), 3 second timeouts
   public void testRemoteCacheListener() throws InterruptedException {
     assertTrue(getRegionAttributes().getScope().isDistributed());
 
@@ -3842,8 +3842,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
    * Tests that an entry in a distributed region that expires with a distributed
    * destroy causes an event in other VM with isExpiration flag set.
    */
-    public void testEntryTtlDestroyEvent()
-    throws InterruptedException {
+  @Category(FlakyTest.class) // GEODE-583: time sensitive, expiration, waitForCriterion, short timeouts
+  public void testEntryTtlDestroyEvent() throws InterruptedException {
       
       if(getRegionAttributes().getPartitionAttributes() != null)
         return;
@@ -3996,11 +3996,11 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
     }
 
   /**
-     * Tests that an entry in a distributed region expires with a local
-     * destroy after a given time to live.
-     */
-    public void testEntryTtlLocalDestroy()
-    throws InterruptedException {
+   * Tests that an entry in a distributed region expires with a local
+   * destroy after a given time to live.
+   */
+  @Category(FlakyTest.class) // GEODE-671: time sensitive, expiration, retry loop, async actions, waitForCriterion
+  public void testEntryTtlLocalDestroy() throws InterruptedException {
       if(getRegionAttributes().getPartitionAttributes() != null)
         return;
       final boolean mirrored = getRegionAttributes().getDataPolicy().withReplication();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/PartitionedRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/PartitionedRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/PartitionedRegionDUnitTest.java
index 1599271..e46a223 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/PartitionedRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/PartitionedRegionDUnitTest.java
@@ -22,6 +22,8 @@ import java.util.Iterator;
 import java.util.Random;
 import java.util.Set;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.Cache;
@@ -46,6 +48,7 @@ import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * This class tests the functionality of a cache {@link Region region}
@@ -309,6 +312,7 @@ public class PartitionedRegionDUnitTest extends MultiVMRegionTestCase {
   /**
    * test with multiple vms and a decent spread of keys
    */
+  @Category(FlakyTest.class) // GEODE-555: retry loops, use of Random
   public void testExtendedKeysValues() {
     final String regionName = getUniqueName();
     final int numEntries = 20000;
@@ -354,7 +358,7 @@ public class PartitionedRegionDUnitTest extends MultiVMRegionTestCase {
               assertTrue("should have been end of keys iteration", !keysIt.hasNext());
               assertTrue("should have been end of entries iteration", !entriesIt.hasNext());
             }
-            catch (Exception ex) {
+            catch (Exception ex) { // TODO: remove all of this and just disconnect DS in tear down
               try {
                 getRootRegion().getSubregion(regionName).destroyRegion();
               }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionReliabilityTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionReliabilityTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionReliabilityTestCase.java
index 1da697f..30bf72c 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionReliabilityTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionReliabilityTestCase.java
@@ -25,6 +25,8 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.locks.Lock;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.AttributesMutator;
 import com.gemstone.gemfire.cache.CacheException;
@@ -71,6 +73,7 @@ import com.gemstone.gemfire.test.dunit.SerializableRunnableIF;
 import com.gemstone.gemfire.test.dunit.ThreadUtils;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Tests region reliability defined by MembershipAttributes.
@@ -953,6 +956,7 @@ public abstract class RegionReliabilityTestCase extends ReliabilityTestCase {
   /**
    * Tests affect of FULL_ACCESS on local entry expiration actions.
    */
+  @Category(FlakyTest.class) // GEODE-447: time sensitive, expiration, waitForMemberTimeout is unimplemented
   public void testFullAccessWithLocalEntryExpiration() throws Exception {
     final String name = this.getUniqueName();
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
index 71c10ba..e2e270c 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/RegionTestCase.java
@@ -3507,7 +3507,7 @@ public abstract class RegionTestCase extends CacheTestCase {
    * Tests that an entry in a region that remains idle for a
    * given amount of time is destroyed.
    */
-  @Category(FlakyTest.class) // GEODE-706: time sensitive, expiration
+  @Category(FlakyTest.class) // GEODE-706: time sensitive, expiration, waitForDestroy, EXPIRY_MS_PROPERTY, short timeout
   public void testEntryIdleDestroy() throws Exception {
 
     final String name = this.getUniqueName();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
index a1d6aca..3af5447 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/TXDistributedDUnitTest.java
@@ -29,8 +29,6 @@
 
 package com.gemstone.gemfire.cache30;
 
-
-//import com.gemstone.gemfire.*;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.HashSet;
@@ -41,6 +39,7 @@ import java.util.concurrent.CountDownLatch;
 import junit.framework.AssertionFailedError;
 
 import org.junit.Ignore;
+import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.SystemFailure;
 import com.gemstone.gemfire.cache.AttributesFactory;
@@ -89,6 +88,7 @@ import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 public class TXDistributedDUnitTest extends CacheTestCase {
   public TXDistributedDUnitTest(String name) {
@@ -530,6 +530,7 @@ public class TXDistributedDUnitTest extends CacheTestCase {
     return p;
   }
 
+  @Category(FlakyTest.class) // GEODE-635: eats and logs exceptions, retry loops
   public void testHighAvailabilityFeatures() throws Exception {
     IgnoredException.addIgnoredException("DistributedSystemDisconnectedException");
 //    final CacheTransactionManager txMgr = this.getCache().getCacheTransactionManager();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
index 74b56ec..3b5f23f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorDUnitTest.java
@@ -1440,7 +1440,7 @@ public class LocatorDUnitTest extends DistributedTestCase {
    * end up only have 1 master.
    * GEODE-870
    */
-  @Category(FlakyTest.class) // GEODE-1150: random ports
+  @Category(FlakyTest.class) // GEODE-1150: random ports, disk pollution, waitForCriterion, time sensitive, eats exceptions (fixed several)
   public void testMultipleLocatorsRestartingAtSameTime() throws Exception {
     disconnectAllFromDS();
     Host host = Host.getHost(0);
@@ -1499,7 +1499,7 @@ public class LocatorDUnitTest extends DistributedTestCase {
               return system.getDM().getViewMembers().size() == 6;
             } catch (Exception e) {
               e.printStackTrace();
-              fail("unexpected exception");
+              com.gemstone.gemfire.test.dunit.Assert.fail("unexpected exception", e);
             }
             return false; // NOTREACHED
           }
@@ -1523,7 +1523,7 @@ public class LocatorDUnitTest extends DistributedTestCase {
               return system.getDM().getAllHostedLocators().size() == 0;
             } catch (Exception e) {
               e.printStackTrace();
-              fail("unexpected exception");
+              com.gemstone.gemfire.test.dunit.Assert.fail("unexpected exception", e);
             }
             return false; // NOTREACHED
           }
@@ -1551,7 +1551,7 @@ public class LocatorDUnitTest extends DistributedTestCase {
               return system.getDM().getAllHostedLocators().size() == 2;
             } catch (Exception e) {
               e.printStackTrace();
-              fail("unexpected exception");
+              com.gemstone.gemfire.test.dunit.Assert.fail("unexpected exception", e);
             }
             return false; // NOTREACHED
           }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
index e9ac834..63c7c74 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
@@ -147,7 +147,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   }
   */
 
-  @Category(FlakyTest.class) // GEODE-473: BindException
+  @Category(FlakyTest.class) // GEODE-473: random ports, BindException, forks JVM, uses ErrorCollector
   @Test
   public void testStartCreatesPidFile() throws Throwable {
     // build and start the locator
@@ -204,7 +204,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-530: BindException
+  @Category(FlakyTest.class) // GEODE-530: BindException, random ports
   @Test
   public void testStartDeletesStaleControlFiles() throws Throwable {
     // create existing control files
@@ -697,7 +697,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-569: BindException
+  @Category(FlakyTest.class) // GEODE-569: BindException, random ports
   @Test
   public void testStatusUsingWorkingDirectory() throws Throwable {
     final List<String> jvmArguments = getJvmArguments();
@@ -897,7 +897,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-847: BindException
+  @Category(FlakyTest.class) // GEODE-847: random ports, BindException, forks JVM, uses ErrorCollector
   @Test
   public void testStopUsingWorkingDirectory() throws Throwable {
     final List<String> jvmArguments = getJvmArguments();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
index 42f5f50..056e6ce 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
@@ -337,7 +337,8 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe
       this.errorCollector.addError(e);
     }
   }
-  
+
+  @Category(FlakyTest.class) // GEODE-721: random ports (setup overriding default port), TemporaryFolder
   @Test
   public void testStartOverwritesStalePidFile() throws Throwable {
     // create existing pid file
@@ -520,7 +521,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe
     this.errorCollector.checkThat(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET), is(equalTo(false)));
   }
 
-  @Category(FlakyTest.class) // GEODE-764: random port (see setup), BindException in forked process
+  @Category(FlakyTest.class) // GEODE-764: random ports, BindException, forks JVM, uses ErrorCollector
   @Test
   public void testStartUsingForceOverwritesExistingPidFile() throws Throwable {
     // create existing pid file
@@ -828,7 +829,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1135: random ports and missing BindException
+  @Category(FlakyTest.class) // GEODE-1135: random ports, BindException, fork JVM
   @Test
   public void testStartWithDefaultPortInUseFails() throws Throwable {
     String expectedString = "java.net.BindException";
@@ -994,11 +995,11 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe
   } // testStartWithExistingPidFileFails
   */
 
-  @Category(FlakyTest.class) // GEODE-957: BindException
+  @Category(FlakyTest.class) // GEODE-957: random ports, BindException, fork JVM
   @Test
   public void testStatusUsingPid() throws Throwable {
     final List<String> jvmArguments = getJvmArguments();
-    
+
     final List<String> command = new ArrayList<String>();
     command.add(new File(new File(System.getProperty("java.home"), "bin"), "java").getCanonicalPath());
     for (String jvmArgument : jvmArguments) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
index 710550b..34ac767 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java
@@ -31,6 +31,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.cache.server.ServerLoad;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 /**
@@ -263,6 +264,7 @@ public class LocatorLoadSnapshotJUnitTest {
    * three servers.
    * @throws InterruptedException
    */
+  @Category(FlakyTest.class) // GEODE-613: lots of threads, async action, IntegrationTest-not-UnitTest, thread joins, time sensitive
   @Test
   public void testConcurrentBalancing() throws InterruptedException {
     int NUM_THREADS = 50;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
index 7ab452b..8977172 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/deadlock/GemFireDeadlockDetectorDUnitTest.java
@@ -24,6 +24,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.CacheFactory;
 import com.gemstone.gemfire.cache.execute.Function;
 import com.gemstone.gemfire.cache.execute.FunctionContext;
@@ -42,16 +44,12 @@ import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class GemFireDeadlockDetectorDUnitTest extends CacheTestCase {
   
   private static final Set<Thread> stuckThreads = Collections.synchronizedSet(new HashSet<Thread>());
-  
-  
-  
+
   @Override
   public final void preTearDownCacheTestCase() throws Exception {
     disconnectAllFromDS();
@@ -97,7 +95,7 @@ public class GemFireDeadlockDetectorDUnitTest extends CacheTestCase {
   
   private static final Lock lock = new ReentrantLock();
   
-  
+  @Category(FlakyTest.class) // GEODE-516 & GEODE-576: async actions, thread sleeps, time sensitive
   public void testDistributedDeadlockWithFunction() throws Throwable {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/ScheduledThreadPoolExecutorWithKeepAliveJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/ScheduledThreadPoolExecutorWithKeepAliveJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/ScheduledThreadPoolExecutorWithKeepAliveJUnitTest.java
index 5208536..8cddfa6 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/ScheduledThreadPoolExecutorWithKeepAliveJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/ScheduledThreadPoolExecutorWithKeepAliveJUnitTest.java
@@ -85,7 +85,7 @@ public class ScheduledThreadPoolExecutorWithKeepAliveJUnitTest {
     assertEquals(2, ex.getLargestPoolSize());
   }
 
-  @Category(FlakyTest.class) // GEODE-1138: time sensitive with sleeps
+  @Category(FlakyTest.class) // GEODE-1138: time sensitive, thread sleeps, expiration
   @Test
   public void testConcurrentExecutionAndExpiration() throws InterruptedException, ExecutionException {
     ex = new ScheduledThreadPoolExecutorWithKeepAlive(
@@ -177,7 +177,7 @@ public class ScheduledThreadPoolExecutorWithKeepAliveJUnitTest {
         TimeUnit.SECONDS.toNanos(10) <= end - start + SLOP); 
   }
 
-  @Category(FlakyTest.class) // GEODE-710: async actions, thread sleeps
+  @Category(FlakyTest.class) // GEODE-710: time sensitive, async actions, 5 second thread sleeps
   @Test
   public void testRepeatedExecution() throws InterruptedException {
     ex = new ScheduledThreadPoolExecutorWithKeepAlive(

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/FixedPRSinglehopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/FixedPRSinglehopDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/FixedPRSinglehopDUnitTest.java
index eb5ddf7..61ea97a 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/FixedPRSinglehopDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/FixedPRSinglehopDUnitTest.java
@@ -197,7 +197,7 @@ public class FixedPRSinglehopDUnitTest extends CacheTestCase {
   // Put data, get data and make the metadata stable.
   // Now verify that metadata has all 8 buckets info.
   // Now update and ensure the fetch service is never called.
-  @Category(FlakyTest.class) // GEODE-1176
+  @Category(FlakyTest.class) // GEODE-1176: random ports, time sensitive, waitForCriterion
   public void test_MetadataContents() {
     
     final Host host = Host.getHost(0);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GIIDeltaDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GIIDeltaDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GIIDeltaDUnitTest.java
index be7cff3..feac209 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GIIDeltaDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/GIIDeltaDUnitTest.java
@@ -76,10 +76,6 @@ import java.util.concurrent.TimeUnit;
 
 import org.junit.experimental.categories.Category;
 
-
-/**
- *
- */
 public class GIIDeltaDUnitTest extends CacheTestCase {
 
   VM P; // GII provider
@@ -1199,6 +1195,7 @@ public class GIIDeltaDUnitTest extends CacheTestCase {
    * In this test, GII thread will get the GIILock before tombstone GC, so tombstone GC should 
    * wait for all GIIs to finish
    */
+  @Category(FlakyTest.class) // GEODE-633: SLOW_DISTRIBUTION_MS, non-thread safe test hook, async actions, time sensitive, waitForCriterion, thread joins, forceGC
   public void testTombstoneGCInMiddleOfGII() throws Throwable {
     prepareForEachTest();
     final DiskStoreID memberP = getMemberID(P);
@@ -1542,7 +1539,7 @@ public class GIIDeltaDUnitTest extends CacheTestCase {
    * R off line, then run P7. Restart R. It will trigger deltaGII to chunk entry P7(key1).
    * After that, do clear(). Make sure R should not contain key1 after GII.     
    */
-  @Category(FlakyTest.class) // GEODE-1068: time sensitive
+  @Category(FlakyTest.class) // GEODE-1068: time sensitive, SLOW_DISTRIBUTION_MS, waitForCriterion, possible thread unsafe test hooks, async actions, depends on stats
   public void testClearAfterChunkEntries() throws Throwable {
     prepareForEachTest();
     final DiskStoreID memberP = getMemberID(P);
@@ -1728,6 +1725,7 @@ public class GIIDeltaDUnitTest extends CacheTestCase {
    * Before GII, P's RVV is P7,R6(3-6), R's RVV is P6,R6, RVVGC are both P4,R0
    * By changing MAX_UNFINISHED_OPERATIONS to be 1, 2. It should be fullGII then deltaGII.    
    */
+  @Category(FlakyTest.class) // GEODE-686: time sensitive, SLOW_DISTRIBUTION_MS, forceGC
   public void testFullGIITriggeredByTooManyUnfinishedOps() throws Throwable {
     prepareForEachTest();
     final DiskStoreID memberP = getMemberID(P);
@@ -1898,7 +1896,7 @@ public class GIIDeltaDUnitTest extends CacheTestCase {
    * at the end. 
    * @throws Throwable
    */
-  @Category(FlakyTest.class) // GEODE-1137: orphaned AsyncInvocations, time sensitive
+  @Category(FlakyTest.class) // GEODE-1137: orphaned AsyncInvocations, time sensitive, GC, waitForCriterion, thread unsafe test hooks/observers, expiration
   public void testTombstoneGCDuringFullGII() throws Throwable {
     prepareForEachTest();
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/NetSearchMessagingDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/NetSearchMessagingDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/NetSearchMessagingDUnitTest.java
index b2c852a..e0b8b2f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/NetSearchMessagingDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/NetSearchMessagingDUnitTest.java
@@ -16,8 +16,6 @@
  */
 package com.gemstone.gemfire.internal.cache;
 
-import java.util.Properties;
-
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.cache.Cache;
@@ -109,7 +107,7 @@ public class NetSearchMessagingDUnitTest extends CacheTestCase {
     
   }
 
-  @Category(FlakyTest.class) // GEODE-1155
+  @Category(FlakyTest.class) // GEODE-1155: time sensitive, waitForCriterion
   public void testNetSearchNormals() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OplogJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OplogJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OplogJUnitTest.java
index ad7b3a5..f4f652e 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OplogJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/OplogJUnitTest.java
@@ -60,16 +60,15 @@ import com.gemstone.gemfire.internal.cache.Oplog.OPLOG_TYPE;
 import com.gemstone.gemfire.test.dunit.ThreadUtils;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 import com.jayway.awaitility.Awaitility;
 
 /**
  * Testing Oplog API's
- *
  */
 @Category(IntegrationTest.class)
-public class OplogJUnitTest extends DiskRegionTestingBase
-{
+public class OplogJUnitTest extends DiskRegionTestingBase {
   boolean proceed = false;
 
   private final DiskRegionProperties diskProps = new DiskRegionProperties();
@@ -3420,9 +3419,9 @@ public class OplogJUnitTest extends DiskRegionTestingBase
    * Tests reduction in size of disk stats 
    * when the oplog is rolled.
    */
+  @Category(FlakyTest.class) // GEODE-527: jvm sizing sensitive, non-thread-safe test hooks, time sensitive
   @Test
-  public void testStatsSizeReductionOnRolling() throws Exception 
-  {
+  public void testStatsSizeReductionOnRolling() throws Exception {
     final int MAX_OPLOG_SIZE = 500*2;
     diskProps.setMaxOplogSize(MAX_OPLOG_SIZE);
     diskProps.setPersistBackup(true);
@@ -3446,6 +3445,8 @@ public class OplogJUnitTest extends DiskRegionTestingBase
     final int tombstone_key1 = DiskOfflineCompactionJUnitTest.getSize4TombstoneWithKey(extra_byte_num_per_entry, "key1");
     final int tombstone_key2 = DiskOfflineCompactionJUnitTest.getSize4TombstoneWithKey(extra_byte_num_per_entry, "key2");
 
+    // TODO: move static methods from DiskOfflineCompactionJUnitTest to shared util class
+
     CacheObserver old = CacheObserverHolder
           .setInstance(new CacheObserverAdapter() {
               private long before = -1;
@@ -3553,7 +3554,7 @@ public class OplogJUnitTest extends DiskRegionTestingBase
    * Tests stats verification with rolling enabled
    */
 //   @Test
-//  public void testSizeStatsAfterRecreationWithRollingEnabled() throws Exception 
+//  public void testSizeStatsAfterRecreationWithRollingEnabled() throws Exception
 //   {
 //     final int MAX_OPLOG_SIZE = 500;
 //     diskProps.setMaxOplogSize(MAX_OPLOG_SIZE);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionCreationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionCreationDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionCreationDUnitTest.java
index d36b4f6..e8ce840 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionCreationDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionCreationDUnitTest.java
@@ -16,11 +16,6 @@
  */
 package com.gemstone.gemfire.internal.cache;
 
-/**
- * This test is to test and validate the partitioned region creation in multiple
- * vm scenario. This will verify the functionality under distributed scenario.
- */
-
 import java.util.Properties;
 
 import org.junit.experimental.categories.Category;
@@ -46,10 +41,12 @@ import com.gemstone.gemfire.test.dunit.ThreadUtils;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
+/**
+ * This test is to test and validate the partitioned region creation in multiple
+ * vm scenario. This will verify the functionality under distributed scenario.
+ */
 @SuppressWarnings("serial")
-public class PartitionedRegionCreationDUnitTest extends
-    PartitionedRegionDUnitTestCase
-{
+public class PartitionedRegionCreationDUnitTest extends PartitionedRegionDUnitTestCase {
   /**
    * constructor
    * 
@@ -422,7 +419,7 @@ public class PartitionedRegionCreationDUnitTest extends
    * 
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1104: Time Sensitive
+  @Category(FlakyTest.class) // GEODE-1104: time sensitive, async actions
   public void testPartitionRegionInitialization() throws Throwable
   {
     final String name = getUniqueName();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDelayedRecoveryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDelayedRecoveryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDelayedRecoveryDUnitTest.java
index 519d181..6a2512f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDelayedRecoveryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionDelayedRecoveryDUnitTest.java
@@ -126,7 +126,7 @@ public class PartitionedRegionDelayedRecoveryDUnitTest extends CacheTestCase {
     vm2.invoke(checkNoBucket);
   }
 
-  @Category(FlakyTest.class) // GEODE-860: time sensitive
+  @Category(FlakyTest.class) // GEODE-860: time sensitive, thread unsafe test hook, CountDownLatch, 1 minute timeout, waitForBucketRecovery loops eating InterruptedException
   public void testDelay() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);
@@ -192,7 +192,7 @@ public class PartitionedRegionDelayedRecoveryDUnitTest extends CacheTestCase {
     assertTrue("Did not wait at least 5 seconds to create the bucket. Elapsed=" + elapsed, elapsed >= 5000);
   }
 
-  @Category(FlakyTest.class) // GEODE-757: time sensitive -- fails because event occurs 2 millis too soon
+  @Category(FlakyTest.class) // GEODE-757: time sensitive, fails because event occurs 2 millis too soon, waitForBucketRecovery wait loop eats InterruptedException, thread unsafe test hook
   public void testStartupDelay() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);
@@ -281,7 +281,7 @@ public class PartitionedRegionDelayedRecoveryDUnitTest extends CacheTestCase {
           } else {
             try {
               Thread.sleep(100);
-            } catch (InterruptedException e) {
+            } catch (InterruptedException e) { // TODO: don't catch InterruptedException -- let test fail!
               e.printStackTrace();
             }
           }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
index 1feddd2..bdd8654 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
@@ -339,6 +339,7 @@ public class PartitionedRegionSingleHopDUnitTest extends CacheTestCase {
   // Put data, get data and make the metadata stable.
   // Now verify that metadata has all 8 buckets info.
   // Now update and ensure the fetch service is never called.
+  @Category(FlakyTest.class) // GEODE-493: random ports, waitForCriterions
   public void test_MetadataContents() {
     Integer port0 = (Integer)member0.invoke(() -> PartitionedRegionSingleHopDUnitTest.createServer( 1, 4 ));
     Integer port1 = (Integer)member1.invoke(() -> PartitionedRegionSingleHopDUnitTest.createServer( 1, 4 ));
@@ -682,7 +683,7 @@ public class PartitionedRegionSingleHopDUnitTest extends CacheTestCase {
     assertFalse(cms.isRefreshMetadataTestOnly());
   }
 
-  @Category(FlakyTest.class) // GEODE-853: random ports, pause sleeps, time sensitive
+  @Category(FlakyTest.class) // GEODE-853: random ports, pause sleeps, time sensitive, 5 second thread sleeps
   public void testServerLocationRemovalThroughPing() {
     Integer port0 = (Integer)member0.invoke(() -> PartitionedRegionSingleHopDUnitTest.createServer( 3, 4 ));
     Integer port1 = (Integer)member1.invoke(() -> PartitionedRegionSingleHopDUnitTest.createServer( 3, 4 ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/SingleHopStatsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/SingleHopStatsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/SingleHopStatsDUnitTest.java
index c702d9f..307f18f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/SingleHopStatsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/SingleHopStatsDUnitTest.java
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.util.Map;
 import java.util.Properties;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.CacheFactory;
@@ -50,10 +52,10 @@ import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-public class SingleHopStatsDUnitTest extends CacheTestCase{
+public class SingleHopStatsDUnitTest extends CacheTestCase {
 
-  
   private static final String Region_Name = "42010";
 
   private VM member0 = null;
@@ -144,7 +146,8 @@ public class SingleHopStatsDUnitTest extends CacheTestCase{
     }
   }
 
-  public void testClientStatsPR(){
+  @Category(FlakyTest.class) // GEODE-364: random ports, time sensitive, waitForCriterions, magic numbers (113, 226)
+  public void testClientStatsPR() {
     VM server1 = member0;
     VM server2 = member1;
     VM server3 = member2;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
index 8205765..fef088f 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/DistributedRegionFunctionExecutionDUnitTest.java
@@ -26,6 +26,8 @@ import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.CacheFactory;
@@ -64,9 +66,9 @@ import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-public class DistributedRegionFunctionExecutionDUnitTest extends
-    DistributedTestCase {
+public class DistributedRegionFunctionExecutionDUnitTest extends DistributedTestCase {
 
   VM replicate1 = null;
 
@@ -455,7 +457,8 @@ public class DistributedRegionFunctionExecutionDUnitTest extends
 
     executeFunction_SendException();
   }
-  
+
+  @Category(FlakyTest.class) // GEODE-632: random ports, eats exceptions
   public void testDistributedRegionFunctionExecutionOnDataPolicyEmpty_ClientServer_NoLastResult() {
     VM empty1 = replicate3;
     VM empty2 = normal;
@@ -990,7 +993,7 @@ public class DistributedRegionFunctionExecutionDUnitTest extends
           .getResult();
       fail("FunctionException expected : Function did not send last result");
     }
-    catch (Exception ex) {
+    catch (Exception ex) { // TODO: this is too broad -- catch just the expected exception
       assertTrue(ex.getMessage().contains("did not send last result"));
     }
   }