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:50 UTC

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

Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-1233 aa0fc76c3 -> 166320ef9


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPropagationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPropagationDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPropagationDUnitTest.java
index a1c820b..816a3e8 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPropagationDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPropagationDUnitTest.java
@@ -687,7 +687,7 @@ public class ParallelWANPropagationDUnitTest extends WANTestBase {
         getTestMethodName() + "_PR", 1000 ));
   }
 
-  @Category(FlakyTest.class) // GEODE-1180
+  @Category(FlakyTest.class) // GEODE-1008 and GEODE-1180: random ports, async actions, thread sleeps, time sensitive, waitForCriterion
   public void testPartitionedParallelPropagationHA() throws Exception {
     IgnoredException.addIgnoredException("Broken pipe");
     IgnoredException.addIgnoredException("Connection reset");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANStatsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANStatsDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANStatsDUnitTest.java
index b876521..ad9db0d 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANStatsDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANStatsDUnitTest.java
@@ -257,6 +257,7 @@ public class ParallelWANStatsDUnitTest extends WANTestBase{
    * 
    * @throws Exception
    */
+  @Category(FlakyTest.class) // GEODE-977: random ports, time sensitive, waitForCriterion
   public void  testParallePropagationWithRemoteRegionDestroy() throws Exception {
     addIgnoredException("RegionDestroyedException");
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialGatewaySenderEventListenerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialGatewaySenderEventListenerDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialGatewaySenderEventListenerDUnitTest.java
index 5d76161..ef98214 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialGatewaySenderEventListenerDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialGatewaySenderEventListenerDUnitTest.java
@@ -34,9 +34,6 @@ import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class SerialGatewaySenderEventListenerDUnitTest extends WANTestBase {
 
   private static final long serialVersionUID = 1L;
@@ -153,7 +150,7 @@ public class SerialGatewaySenderEventListenerDUnitTest extends WANTestBase {
    * Test validates whether the listener attached receives all the events. 
    * When there are 2 listeners attcahed to the GatewaySender.
    */
-  @Category(FlakyTest.class) // GEODE-1066
+  @Category(FlakyTest.class) // GEODE-1066: random ports, waitForCriterion, time sensitive
   public void testGatewaySender2EventListenerInvocation() {
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));
@@ -197,7 +194,8 @@ public class SerialGatewaySenderEventListenerDUnitTest extends WANTestBase {
         getTestMethodName() + "_RR", 0 ));
     vm3.invoke(() -> WANTestBase.validateRegionSize(
         getTestMethodName() + "_RR", 0 ));
-    
+
+    // TODO: move validateReceivedEventsMapSizeListener2 to a shared util class
     vm4.invoke(() -> SerialGatewaySenderEventListenerDUnitTest.validateReceivedEventsMapSizeListener2("ln", keyValues ));
   }
   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropagationLoopBackDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropagationLoopBackDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropagationLoopBackDUnitTest.java
index a869d18..a20bf09 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropagationLoopBackDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropagationLoopBackDUnitTest.java
@@ -26,7 +26,6 @@ import com.gemstone.gemfire.internal.cache.wan.WANTestBase;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-
 public class SerialWANPropagationLoopBackDUnitTest extends WANTestBase {
   
   private static final long serialVersionUID = 1L;
@@ -124,7 +123,7 @@ public class SerialWANPropagationLoopBackDUnitTest extends WANTestBase {
     assertEquals(1, createList2.size());
   }
   
-  @Category(FlakyTest.class) // GEODE-1148
+  @Category(FlakyTest.class) // GEODE-1148: random ports, eats exceptions (fixed 1), time sensitive, thread sleeps, waitForCriterion
   public void testReplicatedSerialPropagationLoopBack3SitesLoop() throws Exception {
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogationDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogationDUnitTest.java
index 36de8b3..a33a34c 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogationDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogationDUnitTest.java
@@ -959,7 +959,7 @@ public class SerialWANPropogationDUnitTest extends WANTestBase {
     vm6.invoke(() -> WANTestBase.checkMinimumGatewayReceiverStats( 1, 1 ));
   }
 
-  @Category(FlakyTest.class) // GEODE-975 AND GEODE-1032: random ports, 8 second WaitCriterions, async actions
+  @Category(FlakyTest.class) // GEODE-975 AND GEODE-1032: random ports, waitForCriterion, short timeouts, async actions
   public void testReplicatedSerialPropagationWithRemoteReceiverRestartedOnOtherNode() throws Exception {
     Integer lnPort = (Integer) vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer) vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogation_PartitionedRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogation_PartitionedRegionDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogation_PartitionedRegionDUnitTest.java
index 2a24728..cf4bb33 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogation_PartitionedRegionDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/serial/SerialWANPropogation_PartitionedRegionDUnitTest.java
@@ -16,7 +16,6 @@
  */
 package com.gemstone.gemfire.internal.cache.wan.serial;
 
-
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.CancelException;
@@ -353,7 +352,7 @@ public class SerialWANPropogation_PartitionedRegionDUnitTest extends WANTestBase
         getTestMethodName() + "_PR", 1000 ));
   }
 
-  @Category(FlakyTest.class) // GEODE-1147
+  @Category(FlakyTest.class) // GEODE-1147: random ports, time sensitive, waitForCriterion, eats exceptions
   public void testPartitionedSerialPropagationWithParallelThreads() throws Exception {
 
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
@@ -384,7 +383,7 @@ public class SerialWANPropogation_PartitionedRegionDUnitTest extends WANTestBase
         getTestMethodName() + "_PR", null, 1, 100, isOffHeap() ));
     createReceiverInVMs(nyPort, vm2, vm3);
 
-    vm4.invoke(() -> WANTestBase.doMultiThreadedPuts(
+    vm4.invoke(() -> WANTestBase.doMultiThreadedPuts( // TODO: eats exceptions
         getTestMethodName() + "_PR", 1000 ));
 
     vm2.invoke(() -> WANTestBase.validateRegionSize(


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

Posted by kl...@apache.org.
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"));
     }
   }



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

Posted by kl...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.java
index cd54be6..9d96d9e 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.java
@@ -31,6 +31,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.CacheClosedException;
 import com.gemstone.gemfire.cache.Region;
 import com.gemstone.gemfire.cache.execute.Execution;
@@ -54,9 +56,9 @@ import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 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;
 
-public class PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest extends
-    PRClientServerTestBase {
+public class PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest extends PRClientServerTestBase {
   private static final String TEST_FUNCTION7 = TestFunction.TEST_FUNCTION7;
 
   private static final String TEST_FUNCTION2 = TestFunction.TEST_FUNCTION2;
@@ -225,6 +227,7 @@ public class PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest extends
    * this is the case of HA then system should retry the function execution.
    * After 5th attempt function will send Boolean as last result.
    */
+  @Category(FlakyTest.class) // GEODE-600: network sensitive, random ports, configs lots of PoolFactory network attributes
   public void testserverMultiKeyExecution_FunctionInvocationTargetException() {
     createScenario();
     client.invoke(() -> PRClientServerRegionFunctionExecutionNoSingleHopDUnitTest.serverMultiKeyExecution_FunctionInvocationTargetException());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRFunctionExecutionTimeOutDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRFunctionExecutionTimeOutDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRFunctionExecutionTimeOutDUnitTest.java
index 2040196..fa4fd62 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRFunctionExecutionTimeOutDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/PRFunctionExecutionTimeOutDUnitTest.java
@@ -48,8 +48,8 @@ import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-public class PRFunctionExecutionTimeOutDUnitTest extends
-    PartitionedRegionDUnitTestCase {
+public class PRFunctionExecutionTimeOutDUnitTest extends PartitionedRegionDUnitTestCase {
+
   private static final String TEST_FUNCTION_TIMEOUT = TestFunction.TEST_FUNCTION_TIMEOUT;
   private static final String TEST_FUNCTION7 = TestFunction.TEST_FUNCTION7;
   
@@ -669,7 +669,7 @@ public class PRFunctionExecutionTimeOutDUnitTest extends
    * Then test it using timeout and multiple getResult.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1020
+  @Category(FlakyTest.class) // GEODE-1020: suspect string: BucketMovedException, missing fail in expected exception, eats exceptions
   public void testLocalMultiKeyExecution_byName() throws Exception {
     IgnoredException.addIgnoredException("BucketMovedException");
     final String rName = getUniqueName();
@@ -697,11 +697,12 @@ public class PRFunctionExecutionTimeOutDUnitTest extends
         testKeysSet.add(testKey);
         try {
           dataSet.withFilter(testKeysSet).withArgs(Boolean.TRUE).execute(function.getId());
+          // TODO: expected exception pattern requires fail here
         }
         catch (Exception expected) {
           // No data should cause exec to throw
           assertTrue(expected.getMessage().contains(
-              "No target node found for KEY = " + testKey));
+              "No target node found for KEY = " + testKey)); // TODO: eats exception with new AssertionError if it doesn't match
         }
 
         final HashSet testKeys = new HashSet();
@@ -759,7 +760,7 @@ public class PRFunctionExecutionTimeOutDUnitTest extends
         }
         catch (FunctionException fe) {
           assertTrue(fe.getMessage(), fe.getMessage().contains(
-          LocalizedStrings.ExecuteFunction_RESULTS_ALREADY_COLLECTED.toLocalizedString()));
+          LocalizedStrings.ExecuteFunction_RESULTS_ALREADY_COLLECTED.toLocalizedString())); // TODO: eats exception with new AssertionError if fails
         }
         
         ResultCollector rct2 = dataSet.withFilter(testKeys).withArgs(testKeys)
@@ -771,7 +772,7 @@ public class PRFunctionExecutionTimeOutDUnitTest extends
         }
         catch (FunctionException fe) {
           assertTrue(fe.getMessage(), fe.getMessage().contains(
-          LocalizedStrings.ExecuteFunction_RESULTS_NOT_COLLECTED_IN_TIME_PROVIDED.toLocalizedString()));
+          LocalizedStrings.ExecuteFunction_RESULTS_NOT_COLLECTED_IN_TIME_PROVIDED.toLocalizedString())); // TODO: eats exception with new AssertionError if fails
         }
         
         try {
@@ -780,7 +781,7 @@ public class PRFunctionExecutionTimeOutDUnitTest extends
         }
         catch (FunctionException fe) {
           assertTrue(fe.getMessage(), fe.getMessage().contains(
-              LocalizedStrings.ExecuteFunction_RESULTS_ALREADY_COLLECTED.toLocalizedString()));
+              LocalizedStrings.ExecuteFunction_RESULTS_ALREADY_COLLECTED.toLocalizedString())); // TODO: eats exception with new AssertionError if fails
         }
         
         return Boolean.TRUE;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ha/Bug48571DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ha/Bug48571DUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ha/Bug48571DUnitTest.java
index 09ed9a5..a81d9c1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ha/Bug48571DUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/ha/Bug48571DUnitTest.java
@@ -18,6 +18,8 @@ package com.gemstone.gemfire.internal.cache.ha;
 
 import java.util.Properties;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.CacheFactory;
 import com.gemstone.gemfire.cache.EntryEvent;
@@ -45,6 +47,7 @@ import com.gemstone.gemfire.test.dunit.IgnoredException;
 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 Bug48571DUnitTest extends DistributedTestCase {
 
@@ -87,6 +90,7 @@ public class Bug48571DUnitTest extends DistributedTestCase {
     }
   }
 
+  @Category(FlakyTest.class) // GEODE-510: random ports, async actions, AsyncInvocation orphan
   public void testStatsMatchWithSize() throws Exception {
     IgnoredException.addIgnoredException("Unexpected IOException||Connection reset");
     // start a server
@@ -98,7 +102,7 @@ public class Bug48571DUnitTest extends DistributedTestCase {
     // close durable client
     client.invoke(() -> Bug48571DUnitTest.closeClientCache());
     // resume puts on server, add another 100.
-    server.invokeAsync(() -> Bug48571DUnitTest.resumePuts());
+    server.invokeAsync(() -> Bug48571DUnitTest.resumePuts()); // TODO: join or await result
     // start durable client
     client.invoke(() -> Bug48571DUnitTest.createClientCache(client.getHost(), port));
     // wait for full queue dispatch

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
index 02728db..b7919b1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentColocatedPartitionedRegionDUnitTest.java
@@ -56,17 +56,11 @@ import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class PersistentColocatedPartitionedRegionDUnitTest extends PersistentPartitionedRegionTestBase {
 
   private static final int NUM_BUCKETS = 15;
   private static final int MAX_WAIT = 30 * 1000;
 
-  /**
-   * @param name
-   */
   public PersistentColocatedPartitionedRegionDUnitTest(String name) {
     super(name);
   }
@@ -1185,7 +1179,8 @@ public class PersistentColocatedPartitionedRegionDUnitTest extends PersistentPar
     //make sure we didn't get an exception
     async0.getResult(MAX_WAIT);
   }
-  
+
+  @Category(FlakyTest.class) // GEODE-506: time sensitive, async actions with 30 sec max
   public void testRebalanceWithOfflineChildRegion() throws Throwable {
     SerializableRunnable createParentPR = new SerializableRunnable() {
       public void run() {
@@ -1411,7 +1406,7 @@ public class PersistentColocatedPartitionedRegionDUnitTest extends PersistentPar
    * a PR with persistent data.
    * @throws Throwable
    */
-  @Category(FlakyTest.class) // GEODE-900
+  @Category(FlakyTest.class) // GEODE-900: disk dependency, filesystem sensitive
   public void testModifyColocation() throws Throwable {
     //Create PRs where region3 is colocated with region1.
     createColocatedPRs("region1");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
index 65f1314..b8c5ba1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionDUnitTest.java
@@ -443,7 +443,7 @@ public class PersistentPartitionedRegionDUnitTest extends PersistentPartitionedR
     ex.remove();
   }
 
-  @Category(FlakyTest.class) // GEODE-974
+  @Category(FlakyTest.class) // GEODE-974: async actions, time sensitive, 65 second timeouts
   public void testRevokeBeforeStartup() throws Throwable {
     IgnoredException.addIgnoredException("RevokeFailedException");
     Host host = Host.getHost(0);
@@ -1072,11 +1072,12 @@ public class PersistentPartitionedRegionDUnitTest extends PersistentPartitionedR
     
     
   
-  /** Test the with redundancy
+  /**
+   * Test the with redundancy
    * 1, we restore the same buckets when the
    * missing member comes back online.
    */
-  @Category(FlakyTest.class) // GEODE-1047
+  @Category(FlakyTest.class) // GEODE-1047: thread unsafe test hook, CountDownLatch, async behavior
   public void testMissingMemberRedundancy1() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);
@@ -1631,7 +1632,7 @@ public class PersistentPartitionedRegionDUnitTest extends PersistentPartitionedR
    * 5. Member A recovers, and gets stuck waiting for member B.
    * @throws Throwable 
    */
-  @Category(FlakyTest.class) // GEODE-1208
+  @Category(FlakyTest.class) // GEODE-1208: time sensitive, multiple non-thread-safe test hooks, async actions
   public void testBug42226() throws Exception {
     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/partitioned/PersistentPartitionedRegionOldConfigDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionOldConfigDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionOldConfigDUnitTest.java
index 3912b90..c37ac69 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionOldConfigDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/PersistentPartitionedRegionOldConfigDUnitTest.java
@@ -22,11 +22,7 @@ import com.gemstone.gemfire.cache.DataPolicy;
 import com.gemstone.gemfire.cache.PartitionAttributesFactory;
 import com.gemstone.gemfire.cache.RegionAttributes;
 
-/**
- *
- */
-public class PersistentPartitionedRegionOldConfigDUnitTest extends
-    PersistentPartitionedRegionDUnitTest {
+public class PersistentPartitionedRegionOldConfigDUnitTest extends PersistentPartitionedRegionDUnitTest {
 
   public PersistentPartitionedRegionOldConfigDUnitTest(String name) {
     super(name);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
index e64759f..3fcd791 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/partitioned/fixed/FixedPartitioningDUnitTest.java
@@ -19,6 +19,8 @@ package com.gemstone.gemfire.internal.cache.partitioned.fixed;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.DuplicatePrimaryPartitionException;
 import com.gemstone.gemfire.cache.EntryNotFoundException;
 import com.gemstone.gemfire.cache.FixedPartitionAttributes;
@@ -28,14 +30,12 @@ import com.gemstone.gemfire.test.dunit.AsyncInvocation;
 import com.gemstone.gemfire.test.dunit.IgnoredException;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * This Dunit test class have multiple tests to tests different validations of
  * static partitioning
- * 
- * 
  */
-
 public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
 
   public FixedPartitioningDUnitTest(String name) {
@@ -453,7 +453,7 @@ public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
     
   }
 
-  
+  @Category(FlakyTest.class) // GEODE-567: async actions, waitForCriterion, time sensitive, non-thread-safe test hook, eats exceptions (partially fixed)
   public void testBug43283() {
     member1.invoke(() -> FixedPartitioningTestBase.createCacheOnMember());
     member2.invoke(() -> FixedPartitioningTestBase.createCacheOnMember());
@@ -501,7 +501,7 @@ public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
       catch (Exception e) {
         e.printStackTrace();
         if (!(e.getCause() instanceof PartitionNotAvailableException)) {
-          fail("exception thrown is not PartitionNotAvailableException");
+          Assert.fail("exception thrown is not PartitionNotAvailableException", e);
         }
       }
       try {
@@ -511,7 +511,7 @@ public class FixedPartitioningDUnitTest extends FixedPartitioningTestBase {
       }
       catch (InterruptedException e) {
         e.printStackTrace();
-        fail("Unexpected Exception");
+        Assert.fail("Unexpected Exception", e);
       }
     } finally {
       member1.invoke(() -> FixedPartitioningTestBase.resetPRObserverBeforeCalculateStartingBucketId());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DestroyEntryPropagationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DestroyEntryPropagationDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DestroyEntryPropagationDUnitTest.java
index 63d3099..38fcdd3 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DestroyEntryPropagationDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DestroyEntryPropagationDUnitTest.java
@@ -175,7 +175,7 @@ public class DestroyEntryPropagationDUnitTest extends DistributedTestCase {
    * are situation of Interest List fail over
    *
    */
-  @Category(FlakyTest.class) // GEODE-897: time sensitive
+  @Category(FlakyTest.class) // GEODE-897: random port, time sensitive, waitForCriterion, 2 minute timeouts, eats exception (1 fixed)
   public void testVerifyDestroyNotReceivedBySender() {
     final int maxWaitTime = Integer.getInteger(WAIT_PROPERTY, WAIT_DEFAULT).intValue();
     //First create entries on both servers via the two client
@@ -292,7 +292,7 @@ public class DestroyEntryPropagationDUnitTest extends DistributedTestCase {
       }
     }
     catch (Exception ex) {
-      fail("while killing Server  " + ex);
+      Assert.fail("while killing Server", ex);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAStartupAndFailoverDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAStartupAndFailoverDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAStartupAndFailoverDUnitTest.java
index d2e47ea..693ead4 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAStartupAndFailoverDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/HAStartupAndFailoverDUnitTest.java
@@ -53,11 +53,8 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Test to verify Startup. and failover during startup.
- *
- *
  */
-public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
-{
+public class HAStartupAndFailoverDUnitTest extends DistributedTestCase {
   protected static Cache cache = null;
   VM server1 = null;
   VM server2 = null;
@@ -207,9 +204,8 @@ public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
     /**
      * verify that Primary Should Be Null And EPList Should Be Empty When All Servers Are Dead
      */
-    @Category(FlakyTest.class) // GEODE-1045
-    public void testPrimaryShouldBeNullAndEPListShouldBeEmptyWhenAllServersAreDead() throws Exception
-    {
+    @Category(FlakyTest.class) // GEODE-1045: random ports, time senstive, waitForCriterion
+    public void testPrimaryShouldBeNullAndEPListShouldBeEmptyWhenAllServersAreDead() throws Exception {
       createClientCache(this.getName(), NetworkUtils.getServerHostName(server1.getHost()));
       verifyPrimaryShouldNotBeNullAndEPListShouldNotBeEmpty();
       server1.invoke(() -> HAStartupAndFailoverDUnitTest.stopServer());
@@ -218,6 +214,7 @@ public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
       verifyDeadAndLiveServers(3,0);
       verifyPrimaryShouldBeNullAndEPListShouldBeEmpty();
     }
+
     /**
      * Tests failover initialization by cacheClientUpdater Thread
      * on failure in Primary Server
@@ -292,9 +289,8 @@ public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
     /**
      * Tests failover initialization by cache operation Threads on secondary
      */
-    public void testInitiateFailoverByCacheOperationThreads_Secondary() throws Exception
-    {
-
+    @Category(FlakyTest.class) // GEODE-357: random ports, eats exceptions (fixed 1), time sensitive, waitForCriterions
+    public void testInitiateFailoverByCacheOperationThreads_Secondary() throws Exception {
       // create a client with large retry interval for server monitors and no client updater thread
       // so that only cache operation can detect a server failure and should initiate failover
       createClientCacheWithLargeRetryIntervalAndWithoutCallbackConnection(this.getName()
@@ -381,7 +377,7 @@ public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
       bs.stop();
     }
     catch (Exception ex) {
-      fail("while setting stopServer  " + ex);
+      Assert.fail("while setting stopServer", ex);
     }
   }
 
@@ -409,6 +405,7 @@ public class HAStartupAndFailoverDUnitTest extends DistributedTestCase
       try{
         assertNull("Primary endpoint should be null as all server are dead", pool.getPrimaryName());
         assertEquals("Endpoint List should be Empty as all server are dead", 0, pool.getConnectedServerCount());
+        fail("NoSubscriptionServersAvailableException is expected"); // TODO:KIRK: added this line
       } catch (NoSubscriptionServersAvailableException e) {
         // pass
       } catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/UpdatePropagationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/UpdatePropagationDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/UpdatePropagationDUnitTest.java
index ab673a6..69781c4 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/UpdatePropagationDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/UpdatePropagationDUnitTest.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Properties;
 
 import org.junit.Ignore;
+import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.cache.AttributesFactory;
 import com.gemstone.gemfire.cache.Cache;
@@ -52,9 +53,9 @@ import com.gemstone.gemfire.test.dunit.NetworkUtils;
 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;
 
 /**
- *
  * Start client 1
  * Start client 2
  * Start Server 1
@@ -69,13 +70,8 @@ import com.gemstone.gemfire.test.dunit.WaitCriterion;
  *
  * The key is to verify that the memberid being used by the client
  * to register with the server is the same across servers
- *
- *
- *
  */
-
-public class UpdatePropagationDUnitTest extends DistributedTestCase
-{
+public class UpdatePropagationDUnitTest extends DistributedTestCase {
 
   VM server1 = null;
 
@@ -253,10 +249,9 @@ public class UpdatePropagationDUnitTest extends DistributedTestCase
   /**
    * This tests whether the updates are received by other clients or not , if there are
    * situation of Interest List fail over
-   *
    */
-  public void testVerifyUpdatesReceivedByOtherClients()
-  {
+  @Category(FlakyTest.class) // GEODE-430: time sensitive, random ports, port reuse, thread sleeps (5 seconds), eats exceptions (fixed 1), async actions, waitForCriterion
+  public void testVerifyUpdatesReceivedByOtherClients() {
     final int maxWaitTime = Integer.getInteger(WAIT_PROPERTY, WAIT_DEFAULT).intValue();
     //  First create entries on both servers via the two client
     client1.invoke(() -> createEntriesK1andK2());
@@ -390,7 +385,7 @@ public class UpdatePropagationDUnitTest extends DistributedTestCase
       srp.putOnForTestsOnly(conn, "key2", "server-value2", new EventID(new byte[] {1},159632,2), null);
     }
     catch (Exception ex) {
-      fail("while setting acquireConnections  " + ex);
+      Assert.fail("while setting acquireConnections", ex);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
index 3b7b959..cec93fa 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/wan/asyncqueue/AsyncEventListenerDUnitTest.java
@@ -1391,7 +1391,7 @@ public class AsyncEventListenerDUnitTest extends AsyncEventQueueTestBase {
    * killed and subsequently vm6 is brought up. Buckets are now rebalanced
    * between vm4 & vm6.
    */
-  @Category(FlakyTest.class) // GEODE-713: random ports, thread sleeps, async actions
+  @Category(FlakyTest.class) // GEODE-688 & GEODE-713: random ports, thread sleeps, async actions
   public void testParallelAsyncEventQueueHA_Scenario2() {
     Integer lnPort = (Integer)vm0.invoke(() -> AsyncEventQueueTestBase.createFirstLocatorWithDSId( 1 ));
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/DLockManagementDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/DLockManagementDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/DLockManagementDUnitTest.java
index 5da954f..29a3a85 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/DLockManagementDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/DLockManagementDUnitTest.java
@@ -21,6 +21,8 @@ import java.util.Set;
 
 import javax.management.ObjectName;
 
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.distributed.DistributedLockService;
 import com.gemstone.gemfire.distributed.DistributedMember;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
@@ -29,17 +31,18 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.management.internal.MBeanJMXAdapter;
 import com.gemstone.gemfire.management.internal.SystemManagementService;
+import com.gemstone.gemfire.test.dunit.Assert;
 import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 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 DLockManagementDUnitTest extends ManagementTestBase {
 
   private static final long serialVersionUID = 1L;
 
-
   private static final String LOCK_SERVICE_NAME = "testLockService";
   
   // This must be bigger than the dunit ack-wait-threshold for the revoke
@@ -47,7 +50,6 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
   // 60 seconds.
   private static final int MAX_WAIT = 70 * 1000;
 
- 
   public DLockManagementDUnitTest(String name) {
     super(name);
 
@@ -58,7 +60,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
    * 
    * @throws Exception
    */
-
+  @Category(FlakyTest.class) // GEODE-173: eats exceptions, HeadlessGFSH, time sensitive, waitForCriterions
   public void testDLockMBean() throws Throwable {
     
     initManagement(false);
@@ -90,7 +92,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
    * 
    * @throws Exception
    */
-
+  @Category(FlakyTest.class) // GEODE-553: waitForCriterion, eats exceptions, HeadlessGFSH
   public void testDLockAggregate() throws Throwable {
     initManagement(false);
     VM[] managedNodes = new VM[getManagedNodeList()
@@ -156,7 +158,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
             }, MAX_WAIT, 500, true);
 
           } catch (Exception e) {
-            fail("could not remove proxies in required time");
+            throw new AssertionError("could not remove proxies in required time", e);
 
           }
           assertNull(bean);
@@ -360,7 +362,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
             bean = MBeanUtil.getLockServiceMbeanProxy(member, LOCK_SERVICE_NAME);
           } catch (Exception e) {
             InternalDistributedSystem.getLoggerI18n().fine(
-                "Undesired Result , LockServiceMBean Should not be null" + e);
+                "Undesired Result , LockServiceMBean Should not be null", e);
 
           }
           assertNotNull(bean);
@@ -394,7 +396,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
               .fetchDistributedLockServiceObjectName(LOCK_SERVICE_NAME);
           assertEquals(expected, actual);
         } catch (Exception e) {
-          fail("Lock Service Navigation Failed " + e);
+          throw new AssertionError("Lock Service Navigation Failed ", e);
         }
 
         try {
@@ -404,7 +406,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
               lockServiceMember.getId(), LOCK_SERVICE_NAME);
           assertEquals(expected, actual);
         } catch (Exception e) {
-          fail("Lock Service Navigation Failed " + e);
+          throw new AssertionError("Lock Service Navigation Failed ", e);
         }
 
       }
@@ -444,7 +446,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
             }, MAX_WAIT, 500, true);
 
           } catch (Exception e) {
-            fail("could not remove Aggregate Bean in required time");
+            throw new AssertionError("could not remove Aggregate Bean in required time", e);
 
           }
           return;
@@ -455,7 +457,7 @@ public class DLockManagementDUnitTest extends ManagementTestBase {
             bean = MBeanUtil.getDistributedLockMbean(LOCK_SERVICE_NAME, expectedMembers);
           } catch (Exception e) {
             InternalDistributedSystem.getLoggerI18n().fine(
-                "Undesired Result , LockServiceMBean Should not be null" + e);
+                "Undesired Result , LockServiceMBean Should not be null", e);
 
           }
           assertNotNull(bean);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
index cf0e5b1..be73adc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/UniversalMembershipListenerAdapterDUnitTest.java
@@ -701,7 +701,7 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
   /**
    * Tests notification of events for loner bridge clients in server process.
    */
-  @Category(FlakyTest.class) // GEODE-1174
+  @Category(FlakyTest.class) // GEODE-1174: random port, async behavior, condition await loops
   public void testSystemClientEventsInServer() throws Exception {
      try {
        doTestSystemClientEventsInServer();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CliCommandTestBase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CliCommandTestBase.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CliCommandTestBase.java
index 6a761b4..4d651a2 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CliCommandTestBase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CliCommandTestBase.java
@@ -268,9 +268,9 @@ public abstract class CliCommandTestBase extends JUnit4CacheTestCase {
       info("Started testable shell: " + shell);
       return shell;
     } catch (ClassNotFoundException e) {
-      throw new AssertionError(getStackTrace(e));
+      throw new AssertionError(e);
     } catch (IOException e) {
-      throw new AssertionError(getStackTrace(e));
+      throw new AssertionError(e);
     }
   }
 
@@ -333,9 +333,9 @@ public abstract class CliCommandTestBase extends JUnit4CacheTestCase {
     try {
       info("Executing command " + command + " with command Mgr " + CommandManager.getInstance());
     } catch (ClassNotFoundException cnfex) {
-      throw new AssertionError(getStackTrace(cnfex));
+      throw new AssertionError(cnfex);
     } catch (IOException ioex) {
-      throw new AssertionError(getStackTrace(ioex));
+      throw new AssertionError(ioex);
     }
 
     shell.executeCommand(command);
@@ -528,12 +528,6 @@ public abstract class CliCommandTestBase extends JUnit4CacheTestCase {
     return stringToSearch.substring(startIndex, endIndex);
   }
 
-  protected static String getStackTrace(Throwable aThrowable) {
-    StringWriter sw = new StringWriter();
-    aThrowable.printStackTrace(new PrintWriter(sw, true));
-    return sw.toString();
-  }
-
   protected void info(String string) {
     getLogWriter().info(string);
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CreateAlterDestroyRegionCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CreateAlterDestroyRegionCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CreateAlterDestroyRegionCommandsDUnitTest.java
index 257771f..92ed262 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CreateAlterDestroyRegionCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CreateAlterDestroyRegionCommandsDUnitTest.java
@@ -355,7 +355,7 @@ public class CreateAlterDestroyRegionCommandsDUnitTest extends CliCommandTestBas
     };
   }
 
-  @Category(FlakyTest.class) // GEODE-973: getRandomAvailablePort, BindException
+  @Category(FlakyTest.class) // GEODE-973: random ports, BindException, java.rmi.server.ExportException: Port already in use
   @Test
   public void testCreateRegion46391() throws IOException {
     createDefaultSetup(null); // GEODE-973: getRandomAvailablePort

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
index 38b8736..7a9186d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
@@ -832,7 +832,7 @@ public class DiskStoreCommandsDUnitTest extends CliCommandTestBase {
     assertEquals(true, resultAsString.contains(vm1Name));
   }
 
-  @Category(FlakyTest.class) // GEODE-1206: port already in use
+  @Category(FlakyTest.class) // GEODE-1206: random ports, BindException
   @Test
   public void testCreateDiskStore() {
     final String diskStore1Name = "testCreateDiskStore1";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
index 6019213..6858f78 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/GemfireDataCommandsDUnitTest.java
@@ -1213,7 +1213,7 @@ public class GemfireDataCommandsDUnitTest extends CliCommandTestBase {
     vm2.invoke(checkPutKeysInVM2);
   }
 
-  @Category(FlakyTest.class) // GEODE-1182: BindException
+  @Category(FlakyTest.class) // GEODE-1182: random ports, BindException, HeadlessGFSH, waitForCriterion, time sensitive
   @Test
   public void testGetLocateEntryJsonKeys() {
     final String keyPrefix = "testKey";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/IndexCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/IndexCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/IndexCommandsDUnitTest.java
index 69204fd..12c5249 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/IndexCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/IndexCommandsDUnitTest.java
@@ -230,7 +230,7 @@ public class IndexCommandsDUnitTest extends CliCommandTestBase {
     assertTrue(resultAsString.contains(indexName));
   }
 
-  @Category(FlakyTest.class) // GEODE-1048
+  @Category(FlakyTest.class) // GEODE-1048: HeadlessGFSH, random ports
   @Test
   public void testCreateMultipleIndexes() {
     setupSystem();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ListAndDescribeRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ListAndDescribeRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ListAndDescribeRegionDUnitTest.java
index 2bcc15f..ff84036 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ListAndDescribeRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ListAndDescribeRegionDUnitTest.java
@@ -287,7 +287,7 @@ public class ListAndDescribeRegionDUnitTest extends CliCommandTestBase {
    * Asserts that a describe region command issued on a region with compression returns the correct non default region
    * attribute for compression and the correct codec value.
    */
-  @Category(FlakyTest.class) // GEODE-1033
+  @Category(FlakyTest.class) // GEODE-1033: HeadlesssGFSH, random port, Snappy dependency
   @Test
   public void testDescribeRegionWithCompressionCodec() {
     final String regionName = "compressedRegion";

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsDUnitTest.java
index 250b6df..848c1ba 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsDUnitTest.java
@@ -78,7 +78,7 @@ public class MiscellaneousCommandsDUnitTest extends CliCommandTestBase {
     });
   }
 
-  @Category(FlakyTest.class) // GEODE-1034
+  @Category(FlakyTest.class) // GEODE-1034: random ports, GC sensitive, memory sensitive, HeadlessGFSH
   @Test
   public void testGCForGroup() {
     Properties localProps = new Properties();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
index 5c159e8..626dbe1 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/MiscellaneousCommandsExportLogsPart3DUnitTest.java
@@ -41,6 +41,7 @@ import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Dunit class for testing gemfire function commands : export logs
@@ -80,6 +81,7 @@ public class MiscellaneousCommandsExportLogsPart3DUnitTest extends CliCommandTes
     return ("_" + formattedStartDate);
   }
 
+  @Category(FlakyTest.class) // GEODE-672: random ports, java.rmi.server.ExportException: Port already in use, HeadlessGfsh, disk IO
   @Test
   public void testExportLogsForGroup() throws IOException {
     Properties localProps = new Properties();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommandsDUnitTest.java
index 777bb70..6ee11e6 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ShellCommandsDUnitTest.java
@@ -55,7 +55,7 @@ public class ShellCommandsDUnitTest extends CliCommandTestBase {
         "localhost[" + locatorPort + "]").toString());
   }
 
-  @Category(FlakyTest.class) // GEODE-989: random ports BindException
+  @Category(FlakyTest.class) // GEODE-989: random ports, suspect string: DiskAccessException, disk pollution, HeadlessGfsh, time sensitive
   @Test
   public void testConnectToLocatorBecomesManager() {
     final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/management/internal/configuration/SharedConfigurationUsingDirDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/configuration/SharedConfigurationUsingDirDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/configuration/SharedConfigurationUsingDirDUnitTest.java
index d117e0b..70f3e70 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/configuration/SharedConfigurationUsingDirDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/configuration/SharedConfigurationUsingDirDUnitTest.java
@@ -112,7 +112,7 @@ public class SharedConfigurationUsingDirDUnitTest extends JUnit4CacheTestCase {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1165: BindException
+  @Category(FlakyTest.class) // GEODE-1165: random ports, BindException, time sensitive, awaitility
   @Test
   public void updateClusterConfigDirWithTwoLocatorsNoRollingServerRestart() throws Exception {
     final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(2);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/memcached/GemcachedDevelopmentJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/memcached/GemcachedDevelopmentJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/memcached/GemcachedDevelopmentJUnitTest.java
index fd6fefa..71bc653 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/memcached/GemcachedDevelopmentJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/memcached/GemcachedDevelopmentJUnitTest.java
@@ -157,7 +157,7 @@ public class GemcachedDevelopmentJUnitTest {
     assertNull(client.get("key1"));
   }
 
-  @Category(FlakyTest.class) // GEODE-1140: time sensitive with sleep
+  @Category(FlakyTest.class) // GEODE-1140: time sensitive, thread sleep
   @Test
   public void testExpiration() throws Exception {
     MemcachedClient client = bootstrapClient();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/pdx/DistributedSystemIdDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/pdx/DistributedSystemIdDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/pdx/DistributedSystemIdDUnitTest.java
index 3ea5a4e..011aa4f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/pdx/DistributedSystemIdDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/pdx/DistributedSystemIdDUnitTest.java
@@ -16,10 +16,10 @@
  */
 package com.gemstone.gemfire.pdx;
 
-import java.io.File;
 import java.util.Properties;
 
-import com.gemstone.gemfire.distributed.Locator;
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.DistributionManager;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
@@ -29,10 +29,8 @@ import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.IgnoredException;
 import com.gemstone.gemfire.test.dunit.SerializableCallable;
 import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class DistributedSystemIdDUnitTest extends DistributedTestCase {
   
   public DistributedSystemIdDUnitTest(String name) {
@@ -55,9 +53,8 @@ public class DistributedSystemIdDUnitTest extends DistributedTestCase {
     
   }
   
-  
-
-  public void testInfectousId() {
+  @Category(FlakyTest.class) // GEODE-558: random ports, test pollution (TODO: disconnect DS in setup?)
+  public void testInfectiousId() {
     Host host = Host.getHost(0);
     VM vm0 = host.getVM(0);
     VM vm1 = host.getVM(1);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/redis/RedisDistDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/redis/RedisDistDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/redis/RedisDistDUnitTest.java
index f7927e4..23f202d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/redis/RedisDistDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/redis/RedisDistDUnitTest.java
@@ -107,7 +107,7 @@ public class RedisDistDUnitTest extends DistributedTestCase {
     disconnectAllFromDS();
   }
 
-  @Category(FlakyTest.class) // GEODE-1092
+  @Category(FlakyTest.class) // GEODE-1092: random ports, failure stack involves TCPTransport ConnectionHandler (are we eating BindExceptions somewhere?), uses Random, async actions
   public void testConcListOps() throws Throwable {
     final Jedis jedis1 = new Jedis(localHost, server1Port, JEDIS_TIMEOUT);
     final Jedis jedis2 = new Jedis(localHost, server2Port, JEDIS_TIMEOUT);
@@ -142,7 +142,7 @@ public class RedisDistDUnitTest extends DistributedTestCase {
     assertEquals(result1, result2);
   }
 
-  @Category(FlakyTest.class) // GEODE-717: random ports
+  @Category(FlakyTest.class) // GEODE-717: random ports, BindException in failure stack, async actions
   public void testConcCreateDestroy() throws Throwable {
     IgnoredException.addIgnoredException("RegionDestroyedException");
     IgnoredException.addIgnoredException("IndexInvalidException");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/security/ClientAuthenticationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/ClientAuthenticationDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/ClientAuthenticationDUnitTest.java
index aba4427..5d6eeac 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/security/ClientAuthenticationDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/ClientAuthenticationDUnitTest.java
@@ -76,7 +76,7 @@ public class ClientAuthenticationDUnitTest extends ClientAuthenticationTestCase
     doTestCredentialsWithFailover(false);
   }
 
-  @Category(FlakyTest.class) // GEODE-838: random ports, pause sleep, time sensitive
+  @Category(FlakyTest.class) // GEODE-838: random ports, thread sleeps, time sensitive
   @Test
   public void testCredentialsForNotifications() throws Exception {
     doTestCredentialsForNotifications(false);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-core/src/test/java/com/gemstone/gemfire/security/P2PAuthenticationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/P2PAuthenticationDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/P2PAuthenticationDUnitTest.java
index 5531c6a..56f5186 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/security/P2PAuthenticationDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/P2PAuthenticationDUnitTest.java
@@ -177,7 +177,7 @@ public class P2PAuthenticationDUnitTest extends JUnit4DistributedTestCase {
   /**
    * Authenticator is incorrect
    */
-  @Category(FlakyTest.class) // GEODE-1089: getRandomAvailablePort
+  @Category(FlakyTest.class) // GEODE-1089: random port
   @Test
   public void testP2PAuthenticationWithInvalidAuthenticator() throws Exception {
     int locatorPort = getRandomAvailablePort(SOCKET);
@@ -206,7 +206,7 @@ public class P2PAuthenticationDUnitTest extends JUnit4DistributedTestCase {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1091: getRandomAvailablePort
+  @Category(FlakyTest.class) // GEODE-1091: random port
   @Test
   public void testP2PAuthenticationWithNoCredentials() throws Exception {
     int locatorPort = getRandomAvailablePort(SOCKET);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfDUnitTest.java
index b91e710..fe8e23e 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfDUnitTest.java
@@ -50,7 +50,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 /**
  * This class tests the ContiunousQuery mechanism in GemFire.
  * This includes the test with diffetent data activities.
- *
  */
 public class CqPerfDUnitTest extends CacheTestCase {
 
@@ -402,7 +401,7 @@ public class CqPerfDUnitTest extends CacheTestCase {
    * To test the changes relating to, executing CQ only once for all similar CQs.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1164
+  @Category(FlakyTest.class) // GEODE-1164: random ports, thread sleeps, time sensitive, eats exceptions (fixed 1), async behavior
   public void testMatchingCqs() throws Exception {
     
     final Host host = Host.getHost(0);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfUsingPoolDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfUsingPoolDUnitTest.java
index 9faec8a..130f924 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfUsingPoolDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqPerfUsingPoolDUnitTest.java
@@ -401,7 +401,7 @@ public class CqPerfUsingPoolDUnitTest extends CacheTestCase {
    * To test the changes relating to, executing CQ only once for all similar CQs.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-988
+  @Category(FlakyTest.class) // GEODE-988: random ports, time sensitive, waitForCriterion, 20 second timeouts
   public void testMatchingCqs() throws Exception {
     
     final Host host = Host.getHost(0);
@@ -409,7 +409,7 @@ public class CqPerfUsingPoolDUnitTest extends CacheTestCase {
     VM client = host.getVM(1);
     
     cqDUnitTest.createServer(server);
-    final int port = server.invoke(() -> CqQueryUsingPoolDUnitTest.getCacheServerPort());
+    final int port = server.invoke(() -> CqQueryUsingPoolDUnitTest.getCacheServerPort()); // TODO: move static methods from other dunit into util class
     final String host0 = NetworkUtils.getServerHostName(server.getHost());
     //cqDUnitTest.createClient(client, port, host0);
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryDUnitTest.java
index 608c20c..4e0ec90 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryDUnitTest.java
@@ -1347,7 +1347,7 @@ public class CqQueryDUnitTest extends CacheTestCase {
           cqService = getCache().getQueryService();
         } catch (Exception cqe) {
           cqe.printStackTrace();
-          fail("Failed to getCQService.");
+          Assert.fail("Failed to getCQService.", cqe);
         }
         
         CqQuery cQuery = cqService.getCq(cqName);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
index cd2c12a..4ba5e48 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/CqQueryUsingPoolDUnitTest.java
@@ -500,10 +500,8 @@ public class CqQueryUsingPoolDUnitTest extends CacheTestCase {
           CqQuery cq1 = qService.newCq(cqName, queryStr, cqa);
           assertTrue("newCq() state mismatch", cq1.getState().isStopped());
         } catch (Exception ex){
-          AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
-          err.initCause(ex);
-          LogWriterUtils.getLogWriter().info("QueryService is :" + qService, err);
-          throw err;
+          LogWriterUtils.getLogWriter().info("QueryService is :" + qService, ex);
+          Assert.fail("Failed to create CQ " + cqName + " . ", ex);
         }
       }
     });   
@@ -538,10 +536,8 @@ public class CqQueryUsingPoolDUnitTest extends CacheTestCase {
           CqQuery cq1 = qService.newCq(cqName, queryStr, cqa);
           assertTrue("newCq() state mismatch", cq1.getState().isStopped());
         } catch (Exception ex){
-          AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
-          err.initCause(ex);
-          LogWriterUtils.getLogWriter().info("QueryService is :" + qService, err);
-          throw err;
+          LogWriterUtils.getLogWriter().info("QueryService is :" + qService, ex);
+          Assert.fail("Failed to create CQ " + cqName + " . ", ex);
         }
       }
     });   
@@ -679,9 +675,7 @@ public class CqQueryUsingPoolDUnitTest extends CacheTestCase {
       } catch (Exception ex){
         LogWriterUtils.getLogWriter().info("CqService is :" + cqService);
         LogWriterUtils.getLogWriter().error(ex);
-        AssertionError err = new AssertionError("Failed to execute  CQ " + cqName);
-        err.initCause(ex);
-        throw err;
+        Assert.fail("Failed to execute  CQ " + cqName, ex);
       }
       
       if (initialResults) {
@@ -723,12 +717,10 @@ public class CqQueryUsingPoolDUnitTest extends CacheTestCase {
         try {
           cq1.execute();
         } catch (Exception ex){
-          AssertionError err = new AssertionError("Failed to execute  CQ " + cqName);
-          err.initCause(ex);
           if (expectedErr == null) {
-            LogWriterUtils.getLogWriter().info("CqService is :" + cqService, err);
+            LogWriterUtils.getLogWriter().info("CqService is :" + cqService, ex);
           }
-          throw err;
+          Assert.fail("Failed to execute  CQ " + cqName, ex);
         }
         assertTrue("execute() state mismatch", cq1.getState().isRunning());
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/PrCqUsingPoolDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/PrCqUsingPoolDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/PrCqUsingPoolDUnitTest.java
index be4b970..ee8ea9f 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/PrCqUsingPoolDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/cq/dunit/PrCqUsingPoolDUnitTest.java
@@ -60,7 +60,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
  */
 public class PrCqUsingPoolDUnitTest extends CacheTestCase {
 
-  
   public PrCqUsingPoolDUnitTest(String name) {
     super(name);
   }
@@ -1193,7 +1192,7 @@ public class PrCqUsingPoolDUnitTest extends CacheTestCase {
    * thus making the query data and region data inconsistent.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1181
+  @Category(FlakyTest.class) // GEODE-1181: random ports, eats exceptions (fixed some), async behavior
   public void testEventsDuringQueryExecution() throws Exception {
     final Host host = Host.getHost(0);
     VM server1 = host.getVM(0);
@@ -1255,9 +1254,7 @@ public class PrCqUsingPoolDUnitTest extends CacheTestCase {
         try {
           cqResults = cq1.executeWithInitialResults();
         } catch (Exception ex){
-          AssertionError err = new AssertionError("Failed to execute  CQ " + cqName);
-          err.initCause(ex);
-          throw err;
+          throw new AssertionError("Failed to execute  CQ " + cqName, ex);
         }
         
         //getLogWriter().info("initial result size = " + cqResults.size());
@@ -1957,7 +1954,7 @@ public class PrCqUsingPoolDUnitTest extends CacheTestCase {
           cqService = (PoolManager.find(poolName)).getQueryService();
         } catch (Exception cqe) {
           cqe.printStackTrace();
-          fail("Failed to getCQService.");
+          Assert.fail("Failed to getCQService.", cqe);
         }
         // Create CQ Attributes.
         CqAttributesFactory cqf = new CqAttributesFactory();
@@ -1973,10 +1970,8 @@ public class PrCqUsingPoolDUnitTest extends CacheTestCase {
           assertTrue("newCq() state mismatch", cq1.getState().isStopped());
           LogWriterUtils.getLogWriter().info("Created a new CqQuery : "+cq1);
         } catch (Exception ex){
-          AssertionError err = new AssertionError("Failed to create CQ " + cqName + " . ");
-          err.initCause(ex);
-          LogWriterUtils.getLogWriter().info("CqService is :" + cqService, err);
-          throw err;
+          LogWriterUtils.getLogWriter().info("CqService is :" + cqService, ex);
+          throw new AssertionError("Failed to create CQ " + cqName + " . ", ex);
         }
       }
     });   

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryMonitorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryMonitorDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryMonitorDUnitTest.java
index 3671237..7932e5c 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryMonitorDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/cache/query/dunit/QueryMonitorDUnitTest.java
@@ -20,6 +20,8 @@ import java.io.File;
 import java.io.IOException;
 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.CacheException;
@@ -58,6 +60,7 @@ import com.gemstone.gemfire.test.dunit.SerializableRunnable;
 import com.gemstone.gemfire.test.dunit.ThreadUtils;
 import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.Wait;
+import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * Tests for QueryMonitoring service.
@@ -472,6 +475,7 @@ public class QueryMonitorDUnitTest extends CacheTestCase {
   /**
    * Tests query execution on local vm.
    */
+  @Category(FlakyTest.class) // GEODE-577: eats exceptions
   public void testQueryExecutionLocally() throws Exception {
 
     setup(2);
@@ -530,11 +534,11 @@ public class QueryMonitorDUnitTest extends CacheTestCase {
               Query query = queryService.newQuery(qStr);
               query.execute();
               fail("The query should have been canceled by the QueryMonitor. Query: " + qStr);
-            }catch (Exception e){
+            }catch (Exception e){ // TODO: this is too broad -- catch only the expected exception
               verifyException(e);
             }
           }
-        } catch (Exception ex){
+        } catch (Exception ex){ // TODO: do not catch or rethrow inside AssertionError
           GemFireCacheImpl.getInstance().getLogger().fine("Exception creating the query service", ex);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientSimpleDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientSimpleDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientSimpleDUnitTest.java
index 3812ea0..28d401f 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientSimpleDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/internal/cache/tier/sockets/DurableClientSimpleDUnitTest.java
@@ -2947,7 +2947,7 @@ public class DurableClientSimpleDUnitTest extends DurableClientTestCase {
    * being reactivated
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1060
+  @Category(FlakyTest.class) // GEODE-1060: random ports, async actions, time sensitive, eats exceptions (fixed 1)
   public void testCqCloseExceptionDueToActivatingClient() throws Exception {
     try {
       String greaterThan5Query = "select * from /" + regionName + " p where p.ID > 5";
@@ -3002,7 +3002,7 @@ public class DurableClientSimpleDUnitTest extends DurableClientTestCase {
           catch (CqException e) {
             String expected = LocalizedStrings.CacheClientProxy_COULD_NOT_DRAIN_CQ_DUE_TO_RESTARTING_DURABLE_CLIENT.toLocalizedString("All", proxyId.getDurableId());
             if (!e.getMessage().equals(expected)) {            
-             fail("Not the expected exception, was expecting " + (LocalizedStrings.CacheClientProxy_COULD_NOT_DRAIN_CQ_DUE_TO_RESTARTING_DURABLE_CLIENT.toLocalizedString("All", proxyId.getDurableId()) + " instead of exception: " + e.getMessage()));
+             Assert.fail("Not the expected exception, was expecting " + (LocalizedStrings.CacheClientProxy_COULD_NOT_DRAIN_CQ_DUE_TO_RESTARTING_DURABLE_CLIENT.toLocalizedString("All", proxyId.getDurableId()) + " instead of exception: " + e.getMessage()), e);
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ClientCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ClientCommandsDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ClientCommandsDUnitTest.java
index 005077a..bc80563 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ClientCommandsDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ClientCommandsDUnitTest.java
@@ -595,7 +595,7 @@ public void waitForListClientMbean2(){
   
   }
 
-  @Category(FlakyTest.class) // GEODE-908: time sensitive
+  @Category(FlakyTest.class) // GEODE-908: random ports, BindException, time sensitive, HeadlessGfsh
   @Test
   public void testListClient() throws Exception {
     setupSystemForListClient();
@@ -1156,7 +1156,7 @@ public void waitForMixedClients(){
     
   }
 
-  @Category(FlakyTest.class) // GEODE-910
+  @Category(FlakyTest.class) // GEODE-910: random ports, HeadlessGfsh
   @Test
   public void testDescribeClientForNonSubscribedClient() throws Exception {
     setUpNonSubscribedClient();
@@ -1232,7 +1232,7 @@ public void waitForMixedClients(){
     
   }
 
-  @Category(FlakyTest.class) // GEODE-1227
+  @Category(FlakyTest.class) // GEODE-1227: HeadlessGFSH, random ports, BindException
   @Test
   public void testDescribeMixClientWithServers() throws Exception {
     String[] clientIds = setupSystemWithSubAndNonSubClient();    

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientAuthzObjectModDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientAuthzObjectModDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientAuthzObjectModDUnitTest.java
index 3e05530..012ac33 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientAuthzObjectModDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientAuthzObjectModDUnitTest.java
@@ -81,7 +81,7 @@ public class ClientAuthzObjectModDUnitTest extends ClientAuthorizationTestCase {
     server2.invoke(registerInstantiator);
   }
 
-  @Category(FlakyTest.class) // GEODE-1228
+  @Category(FlakyTest.class) // GEODE-1228: random ports, BindException, uses Random
   @Test
   public void testAllOpsObjectModWithFailover() throws Exception {
     OperationWithAction[] allOps = allOps();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientPostAuthorizationDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientPostAuthorizationDUnitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientPostAuthorizationDUnitTest.java
index cbda9f5..963d2f0 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientPostAuthorizationDUnitTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/security/ClientPostAuthorizationDUnitTest.java
@@ -111,7 +111,7 @@ public class ClientPostAuthorizationDUnitTest extends ClientAuthorizationTestCas
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1009: getRandomAvailablePort
+  @Category(FlakyTest.class) // GEODE-1009: random ports, uses Random, time sensitive, waitForCondition (waitForCriterion)
   @Test
   public void testAllOpsNotifications() throws Exception {
     OperationWithAction[] allOps = allOpsForTestAllOpsNotifications();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAJUnitTest.java b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAJUnitTest.java
index bc6bfe4..2aa3241 100644
--- a/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAJUnitTest.java
+++ b/geode-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/LuceneIndexRecoveryHAJUnitTest.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package com.gemstone.gemfire.cache.lucene.internal;
 
 import static org.junit.Assert.*;
@@ -61,6 +60,7 @@ import com.jayway.awaitility.Awaitility;
 
 @Category(IntegrationTest.class)
 public class LuceneIndexRecoveryHAJUnitTest {
+
   private static final String INDEX = "index";
   private static final String REGION = "indexedRegion";
   String[] indexedFields = new String[] { "txt" };
@@ -122,7 +122,7 @@ public class LuceneIndexRecoveryHAJUnitTest {
     Assert.assertNotEquals(newRepo, repo);
   }
 
-  @Category(FlakyTest.class) // GEODE-1012
+  @Category(FlakyTest.class) // GEODE-1012: time sensitive, awaitility, short timeout
   @Test
   public void recoverPersistentIndex() throws Exception {
     String aeqId = LuceneServiceImpl.getUniqueIndexName(INDEX, REGION);
@@ -168,7 +168,7 @@ public class LuceneIndexRecoveryHAJUnitTest {
     userRegion.destroyRegion();
   }
 
-  @Category(FlakyTest.class) // GEODE-1013
+  @Category(FlakyTest.class) // GEODE-1013: time sensitive, awaitility, short timeout, possible disk pollution
   @Test
   public void overflowRegionIndex() throws Exception {
     String aeqId = LuceneServiceImpl.getUniqueIndexName(INDEX, REGION);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/cache/CacheXml70GatewayDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/cache/CacheXml70GatewayDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/cache/CacheXml70GatewayDUnitTest.java
index 9032a3e..59b5d02 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/cache/CacheXml70GatewayDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/cache/CacheXml70GatewayDUnitTest.java
@@ -16,7 +16,6 @@
  */
 package com.gemstone.gemfire.cache;
 
-import java.io.IOException;
 import java.util.Properties;
 import java.util.Set;
 
@@ -91,7 +90,7 @@ public class CacheXml70GatewayDUnitTest extends CacheXmlTestCase {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-978: hardcoded port range
+  @Category(FlakyTest.class) // GEODE-978: hardcoded port range, BindException
   public void testGatewayReceiver() throws Exception{
     getSystem();
     CacheCreation cache = new CacheCreation();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/CacheClientNotifierDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/CacheClientNotifierDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/CacheClientNotifierDUnitTest.java
index 83c8b78..66d1444 100755
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/CacheClientNotifierDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/CacheClientNotifierDUnitTest.java
@@ -165,7 +165,7 @@ public class CacheClientNotifierDUnitTest extends WANTestBase {
    * The test will start several cache servers, including gateway receivers.
    * Shutdown them and verify the CacheClientNofifier for each server is correct
    */
-  @Category(FlakyTest.class) // GEODE-1183
+  @Category(FlakyTest.class) // GEODE-1183: random ports, failure to start threads, eats exceptions, time sensitive
   public void testMultipleCacheServer() throws Exception {
     /* test senario: */
     /* create 1 GatewaySender on vm0 */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/WANTestBase.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/WANTestBase.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/WANTestBase.java
index 0f38441..a4b8823 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/WANTestBase.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/WANTestBase.java
@@ -117,6 +117,7 @@ import com.gemstone.gemfire.internal.cache.wan.serial.ConcurrentSerialGatewaySen
 import com.gemstone.gemfire.internal.cache.wan.serial.SerialGatewaySenderQueue;
 import com.gemstone.gemfire.pdx.SimpleClass;
 import com.gemstone.gemfire.pdx.SimpleClass1;
+import com.gemstone.gemfire.test.dunit.Assert;
 import com.gemstone.gemfire.test.dunit.AsyncInvocation;
 import com.gemstone.gemfire.test.dunit.DistributedTestCase;
 import com.gemstone.gemfire.test.dunit.Host;
@@ -1530,7 +1531,7 @@ public class WANTestBase extends DistributedTestCase{
     }
     for (AsyncInvocation invocation : tasks) {
       try {
-        invocation.join(30000);
+        invocation.join(30000); // TODO: these might be AsyncInvocation orphans
       }
       catch (InterruptedException e) {
         fail("Starting senders was interrupted");
@@ -2721,8 +2722,8 @@ public class WANTestBase extends DistributedTestCase{
     }
     catch (IOException e) {
       e.printStackTrace();
-      fail("Test " + getTestMethodName()
-          + " failed to start GatewayRecevier on port " + port);
+      Assert.fail("Test " + getTestMethodName()
+          + " failed to start GatewayRecevier on port " + port, e);
     }
     return port;
   }
@@ -3602,9 +3603,9 @@ public class WANTestBase extends DistributedTestCase{
       List<Future<Object>> l = execService.invokeAll(tasks);
       for (Future<Object> f : l)
         f.get();
-    } catch (InterruptedException e1) {
+    } catch (InterruptedException e1) { // TODO: eats exception
       e1.printStackTrace();
-    } catch (ExecutionException e) {
+    } catch (ExecutionException e) { // TODO: eats exceptions
       e.printStackTrace();
     }
     execService.shutdown();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentParallelGatewaySenderOperation_1_DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentParallelGatewaySenderOperation_1_DUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentParallelGatewaySenderOperation_1_DUnitTest.java
index 069ce7a..f2bb37f 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentParallelGatewaySenderOperation_1_DUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentParallelGatewaySenderOperation_1_DUnitTest.java
@@ -26,9 +26,6 @@ import com.gemstone.gemfire.test.dunit.LogWriterUtils;
 import com.gemstone.gemfire.test.dunit.Wait;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-/**
- *
- */
 public class ConcurrentParallelGatewaySenderOperation_1_DUnitTest extends WANTestBase {
   private static final long serialVersionUID = 1L;
   
@@ -580,7 +577,7 @@ public class ConcurrentParallelGatewaySenderOperation_1_DUnitTest extends WANTes
    * Normal scenario in which a sender is stopped and then started again on accessor node.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-1011
+  @Category(FlakyTest.class) // GEODE-1011: random ports, time sensitive, waitForCriterion, 5 minute timeouts, 5 second thread sleeps, async actions
   public void testParallelPropagationSenderStartAfterStopOnAccessorNode() throws Throwable {
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentWANPropogation_2_DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentWANPropogation_2_DUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentWANPropogation_2_DUnitTest.java
index 54385a2..6433836 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentWANPropogation_2_DUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/concurrent/ConcurrentWANPropogation_2_DUnitTest.java
@@ -42,7 +42,7 @@ public class ConcurrentWANPropogation_2_DUnitTest extends WANTestBase {
 
   private static final long serialVersionUID = 1L;
 
-  @Category(FlakyTest.class) // GEODE-1121
+  @Category(FlakyTest.class) // GEODE-1121: random ports, async behavior, time sensitive, waitForCriterion, possibly memory intensive
   public void testSerialReplicatedWanWithOverflow() {
 
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
index 9c472a1..604ceaf 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WANSSLDUnitTest.java
@@ -31,7 +31,7 @@ public class WANSSLDUnitTest extends WANTestBase{
     super(name);
   }
 
-  @Category(FlakyTest.class) // GEODE-1207
+  @Category(FlakyTest.class) // GEODE-1207: random ports, eats exceptions, time sensitive, waitForCriterion
   public void testSenderSSLReceiverSSL(){
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanValidationsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanValidationsDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanValidationsDUnitTest.java
index 9d80b14..889ebc5 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanValidationsDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/misc/WanValidationsDUnitTest.java
@@ -1252,7 +1252,7 @@ public class WanValidationsDUnitTest extends WANTestBase {
     }
   }
 
-  @Category(FlakyTest.class) // GEODE-1019
+  @Category(FlakyTest.class) // GEODE-1019: random ports, time sensitive, waitForCriterion, suspect string: loss of quorum
   public void testBug50434_PR_Parallel_pass() throws Exception {
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
     Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/offheap/ParallelWANPropogationOffHeapDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/offheap/ParallelWANPropogationOffHeapDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/offheap/ParallelWANPropogationOffHeapDUnitTest.java
index 49afd57..4add337 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/offheap/ParallelWANPropogationOffHeapDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/offheap/ParallelWANPropogationOffHeapDUnitTest.java
@@ -19,8 +19,7 @@ package com.gemstone.gemfire.internal.cache.wan.offheap;
 import com.gemstone.gemfire.internal.cache.wan.parallel.ParallelWANPropagationDUnitTest;
 
 @SuppressWarnings("serial")
-public class ParallelWANPropogationOffHeapDUnitTest extends
-    ParallelWANPropagationDUnitTest {
+public class ParallelWANPropogationOffHeapDUnitTest extends ParallelWANPropagationDUnitTest {
 
   public ParallelWANPropogationOffHeapDUnitTest(String name) {
     super(name);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
index 50ee029..a67315d 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelGatewaySenderOperationsDUnitTest.java
@@ -38,8 +38,6 @@ import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
 /**
  * DUnit test for operations on ParallelGatewaySender
- * 
- *
  */
 public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
   private static final long serialVersionUID = 1L;
@@ -257,7 +255,7 @@ public class ParallelGatewaySenderOperationsDUnitTest extends WANTestBase {
    * Normal scenario in which a sender is stopped and then started again.
    * @throws Exception
    */
-  @Category(FlakyTest.class) // GEODE-933: pause sleeps, random ports, async actions
+  @Category(FlakyTest.class) // GEODE-933: pause sleeps, random ports, async actions, time sensitive
   public void testParallelPropagationSenderStartAfterStop() throws Exception {
     IgnoredException.addIgnoredException("Broken pipe");
     Integer[] locatorPorts = createLNAndNYLocators();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/166320ef/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPersistenceEnabledGatewaySenderDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPersistenceEnabledGatewaySenderDUnitTest.java b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPersistenceEnabledGatewaySenderDUnitTest.java
index cee3234..dd9d417 100644
--- a/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPersistenceEnabledGatewaySenderDUnitTest.java
+++ b/geode-wan/src/test/java/com/gemstone/gemfire/internal/cache/wan/parallel/ParallelWANPersistenceEnabledGatewaySenderDUnitTest.java
@@ -35,8 +35,7 @@ import com.gemstone.gemfire.test.dunit.SerializableCallableIF;
 import com.gemstone.gemfire.test.dunit.SerializableRunnableIF;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 
-public class ParallelWANPersistenceEnabledGatewaySenderDUnitTest extends
-    WANTestBase {
+public class ParallelWANPersistenceEnabledGatewaySenderDUnitTest extends WANTestBase {
 
   private static final long serialVersionUID = 1L;
   
@@ -451,7 +450,7 @@ public class ParallelWANPersistenceEnabledGatewaySenderDUnitTest extends
    * Dispatcher should not start dispatching events recovered from persistent sender.
    * Check if the remote site receives all the events.
    */
-  @Category(FlakyTest.class) // GEODE-1124
+  @Category(FlakyTest.class) // GEODE-1124: random ports, time sensitive, waitForCriterion, async behavior
   public void testPersistentPRWithGatewaySenderPersistenceEnabled_Restart2() {
     //create locator on local site
     Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));