You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2015/08/14 22:39:55 UTC

[06/50] [abbrv] incubator-geode git commit: GEODE-127: Improve test reliability and execution speed.

GEODE-127: Improve test reliability and execution speed.

Recategorize tests involving spawned processes and file system I/O as
IntegrationTests.

Improve reliability and shorten execution time. Fix up asynchronous waits,
correct JUnit 4 syntax and misc code tidying.

Add new TestSuite classes for targeted testing of test.golden and
test.process packages.


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

Branch: refs/heads/feature/GEODE-77
Commit: 94939c1f9cc3e09c4beee1155404dd82b9aca13f
Parents: ea8ce3f
Author: Kirk Lund <kl...@pivotal.io>
Authored: Mon Jul 27 16:35:33 2015 -0700
Committer: Kirk Lund <kl...@pivotal.io>
Committed: Wed Jul 29 09:33:03 2015 -0700

----------------------------------------------------------------------
 .../ServerLauncherRemoteJUnitTest.java          |   2 +-
 .../gemfire/test/golden/ExecutableProcess.java  |   8 +
 .../gemfire/test/golden/FailOutputTestCase.java |  22 +-
 .../golden/FailWithErrorInOutputJUnitTest.java  |  18 +-
 .../FailWithExtraLineInOutputJUnitTest.java     |  41 +--
 ...WithLineMissingFromEndOfOutputJUnitTest.java |  39 ++-
 ...hLineMissingFromMiddleOfOutputJUnitTest.java |  39 ++-
 .../FailWithLoggerErrorInOutputJUnitTest.java   |  18 +-
 .../FailWithLoggerFatalInOutputJUnitTest.java   |  18 +-
 .../FailWithLoggerWarnInOutputJUnitTest.java    |  18 +-
 .../golden/FailWithProblemInOutputTestCase.java |  30 ++-
 .../golden/FailWithSevereInOutputJUnitTest.java |  18 +-
 ...hTimeoutOfWaitForOutputToMatchJUnitTest.java |  43 ++--
 .../FailWithWarningInOutputJUnitTest.java       |  18 +-
 .../gemfire/test/golden/GoldenComparator.java   |  64 +++--
 .../test/golden/GoldenStringComparator.java     |   5 +-
 .../gemfire/test/golden/GoldenTestCase.java     | 108 +++-----
 .../golden/GoldenTestFrameworkTestSuite.java    |  27 ++
 .../gemfire/test/golden/PassJUnitTest.java      |  50 ++--
 .../golden/PassWithExpectedErrorJUnitTest.java  |  18 +-
 .../golden/PassWithExpectedProblemTestCase.java |  58 +++--
 .../golden/PassWithExpectedSevereJUnitTest.java |  18 +-
 .../PassWithExpectedWarningJUnitTest.java       |  18 +-
 .../test/golden/RegexGoldenComparator.java      |  10 +-
 .../test/golden/StringGoldenComparator.java     |   4 +-
 .../process/ProcessTestFrameworkTestSuite.java  |  12 +
 .../gemfire/test/process/ProcessWrapper.java    | 251 +++++++++----------
 .../test/process/ProcessWrapperJUnitTest.java   |  19 +-
 .../gemfire/test/golden/log4j2-test.xml         |  18 ++
 29 files changed, 486 insertions(+), 526 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
index fb0df63..1ba1189 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java
@@ -122,7 +122,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe
     File file = new File(this.temporaryFolder.getRoot(), ServerLauncherForkingProcess.class.getSimpleName().concat(".log"));
     //-logger.info("KIRK: log file is " + file);
     
-    final ProcessWrapper pw = new ProcessWrapper.Builder().main(ServerLauncherForkingProcess.class).build();
+    final ProcessWrapper pw = new ProcessWrapper.Builder().mainClass(ServerLauncherForkingProcess.class).build();
     pw.execute(null, this.temporaryFolder.getRoot()).waitFor(true);
     //logger.info("[testRunningServerOutlivesForkingProcess] ServerLauncherForkingProcess output is:\n\n"+pw.getOutput());
     

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/ExecutableProcess.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/ExecutableProcess.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/ExecutableProcess.java
new file mode 100755
index 0000000..bc6d1e3
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/ExecutableProcess.java
@@ -0,0 +1,8 @@
+package com.gemstone.gemfire.test.golden;
+
+/**
+ * Defines the work that is executed within a remote process. 
+ */
+public interface ExecutableProcess {
+  public void executeInProcess() throws Exception;
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailOutputTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailOutputTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailOutputTestCase.java
index a3995f8..d460706 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailOutputTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailOutputTestCase.java
@@ -10,11 +10,7 @@ import java.io.InputStreamReader;
  * 
  * @author Kirk Lund
  */
-public abstract class FailOutputTestCase extends GoldenTestCase {
-  
-  FailOutputTestCase(String name) {
-    super(name);
-  }
+public abstract class FailOutputTestCase extends GoldenTestCase implements ExecutableProcess {
   
   @Override
   protected GoldenComparator createGoldenComparator() {
@@ -27,14 +23,14 @@ public abstract class FailOutputTestCase extends GoldenTestCase {
   
   abstract String problem();
   
-  abstract void outputProblem(String message);
+  abstract void outputProblemInProcess(String message);
   
-  void execute() throws IOException {
-    System.out.println("Begin " + name() + ".main");
-    System.out.println("Press Enter to continue.");
-    BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
-    inputReader.readLine();
-    outputProblem(problem());
-    System.out.println("End " + name() + ".main");
+  @Override
+  public final void executeInProcess() throws IOException {
+    outputLine("Begin " + name() + ".main");
+    outputLine("Press Enter to continue.");
+    new BufferedReader(new InputStreamReader(System.in)).readLine();
+    outputProblemInProcess(problem());
+    outputLine("End " + name() + ".main");
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithErrorInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithErrorInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithErrorInOutputJUnitTest.java
index b3ca93e..d8763b7 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithErrorInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithErrorInOutputJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected error message
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithErrorInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithErrorInOutputJUnitTest() {
-    super(FailWithErrorInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.error(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).error(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithErrorInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithErrorInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithExtraLineInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithExtraLineInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithExtraLineInOutputJUnitTest.java
index 1c49749..6fb674f 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithExtraLineInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithExtraLineInOutputJUnitTest.java
@@ -1,13 +1,12 @@
 package com.gemstone.gemfire.test.golden;
 
-import java.io.IOException;
+import static org.junit.Assert.*;
 
+import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.test.process.ProcessWrapper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import junit.framework.AssertionFailedError;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected extra line
@@ -15,45 +14,47 @@ import junit.framework.AssertionFailedError;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithExtraLineInOutputJUnitTest extends FailOutputTestCase {
   
-  public FailWithExtraLineInOutputJUnitTest() {
-    super("FailWithExtraLineInOutputJUnitTest");
-  }
-  
   @Override
   String problem() {
     return "This is an extra line";
   }
   
   @Override
-  void outputProblem(String message) {
+  void outputProblemInProcess(final String message) {
     System.out.println(message);
   }
   
-  public void testFailWithExtraLineInOutput() throws InterruptedException, IOException {
-    // output has an extra line and should fail
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  /**
+   * Process output has an extra line and should fail
+   */
+  @Test
+  public void testFailWithExtraLineInOutput() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" +
+        "Press Enter to continue." + "\n" + 
+        "End " + name() + ".main" + "\n";
+    debug(goldenString, "GOLDEN");
+
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitForOutputToMatch("End " + name() + "\\.main");
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + "End " + name() + ".main" + "\n";
-    innerPrintOutput(goldenString, "GOLDEN");
+    
     try {
       assertOutputMatchesGoldenFile(process.getOutput(), goldenString);
       fail("assertOutputMatchesGoldenFile should have failed due to " + problem());
-    } catch (AssertionFailedError expected) {
+    } catch (AssertionError expected) {
       assertTrue(expected.getMessage().contains(problem()));
     }
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithExtraLineInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithExtraLineInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromEndOfOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromEndOfOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromEndOfOutputJUnitTest.java
index 877f671..a1802c5 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromEndOfOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromEndOfOutputJUnitTest.java
@@ -1,13 +1,12 @@
 package com.gemstone.gemfire.test.golden;
 
-import java.io.IOException;
+import static org.junit.Assert.*;
 
+import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.test.process.ProcessWrapper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import junit.framework.AssertionFailedError;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output missing an expected line (at the end of
@@ -15,46 +14,46 @@ import junit.framework.AssertionFailedError;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithLineMissingFromEndOfOutputJUnitTest extends FailOutputTestCase {
 
-  public FailWithLineMissingFromEndOfOutputJUnitTest() {
-    super("FailWithLineMissingFromOutputJUnitTest");
-  }
-  
   @Override
   String problem() {
     return "This line is missing in actual output.";
   }
   
   @Override
-  void outputProblem(String message) {
+  void outputProblemInProcess(final String message) {
     // this tests that the message is missing from output
   }
   
-  public void testFailWithLineMissingFromEndOfOutput() throws InterruptedException, IOException {
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  @Test
+  public void testFailWithLineMissingFromEndOfOutput() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" +
+        "Press Enter to continue." + "\n" +
+        "End " + name() + ".main" + "\n" +
+        problem() + "\n"; 
+    debug(goldenString, "GOLDEN");
+
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitForOutputToMatch("End " + name() + "\\.main");
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + "End " + name() + ".main" + "\n"
-        + problem() + "\n"; 
-    innerPrintOutput(goldenString, "GOLDEN");
+    
     try {
       assertOutputMatchesGoldenFile(process.getOutput(), goldenString);
       fail("assertOutputMatchesGoldenFile should have failed due to " + problem());
-    } catch (AssertionFailedError expected) {
+    } catch (AssertionError expected) {
       assertTrue("AssertionFailedError message should contain \"" + problem() + "\"", 
           expected.getMessage().contains(problem()));
     }
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithLineMissingFromEndOfOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithLineMissingFromEndOfOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromMiddleOfOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromMiddleOfOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromMiddleOfOutputJUnitTest.java
index 629eb7f..91095ec 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromMiddleOfOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLineMissingFromMiddleOfOutputJUnitTest.java
@@ -1,13 +1,12 @@
 package com.gemstone.gemfire.test.golden;
 
-import java.io.IOException;
+import static org.junit.Assert.*;
 
+import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.test.process.ProcessWrapper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import junit.framework.AssertionFailedError;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output missing an expected line (at the middle 
@@ -15,45 +14,45 @@ import junit.framework.AssertionFailedError;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithLineMissingFromMiddleOfOutputJUnitTest extends FailOutputTestCase {
 
-  public FailWithLineMissingFromMiddleOfOutputJUnitTest() {
-    super("FailWithLineMissingFromMiddleOfOutputJUnitTest");
-  }
-  
   @Override
   String problem() {
     return "This line is missing in actual output.";
   }
   
   @Override
-  void outputProblem(String message) {
+  void outputProblemInProcess(final String message) {
     // this tests that the message is missing from output
   }
   
-  public void testFailWithLineMissingFromEndOfOutput() throws InterruptedException, IOException {
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  @Test
+  public void testFailWithLineMissingFromEndOfOutput() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" +
+        "Press Enter to continue." + "\n" +
+        problem() + "\n" +
+        "End " + name() + ".main" + "\n";
+    debug(goldenString, "GOLDEN");
+
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + problem() + "\n"
-        + "End " + name() + ".main" + "\n";
-    innerPrintOutput(goldenString, "GOLDEN");
+    
     try {
       assertOutputMatchesGoldenFile(process.getOutput(), goldenString);
       fail("assertOutputMatchesGoldenFile should have failed due to " + problem());
-    } catch (AssertionFailedError expected) {
+    } catch (AssertionError expected) {
       assertTrue("AssertionFailedError message should contain \"" + problem() + "\"", 
           expected.getMessage().contains(problem()));
     }
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithLineMissingFromMiddleOfOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithLineMissingFromMiddleOfOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerErrorInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerErrorInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerErrorInOutputJUnitTest.java
index b485ba4..5a2c49a 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerErrorInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerErrorInOutputJUnitTest.java
@@ -1,10 +1,9 @@
 package com.gemstone.gemfire.test.golden;
 
-import org.apache.logging.log4j.Logger;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected ERROR message
@@ -12,25 +11,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithLoggerErrorInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithLoggerErrorInOutputJUnitTest() {
-    super(FailWithLoggerErrorInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    Logger logger = LogService.getLogger();
-    logger.error(message);
+  void outputProblemInProcess(final String message) {
+    LogService.getLogger().error(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithLoggerErrorInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithLoggerErrorInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerFatalInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerFatalInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerFatalInOutputJUnitTest.java
index a71ce18..a0c681a 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerFatalInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerFatalInOutputJUnitTest.java
@@ -1,10 +1,9 @@
 package com.gemstone.gemfire.test.golden;
 
-import org.apache.logging.log4j.Logger;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected FATAL message
@@ -12,25 +11,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithLoggerFatalInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithLoggerFatalInOutputJUnitTest() {
-    super(FailWithLoggerFatalInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    Logger logger = LogService.getLogger();
-    logger.fatal(message);
+  void outputProblemInProcess(final String message) {
+    LogService.getLogger().fatal(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithLoggerFatalInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithLoggerFatalInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerWarnInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerWarnInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerWarnInOutputJUnitTest.java
index 211008a..5717f67 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerWarnInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithLoggerWarnInOutputJUnitTest.java
@@ -1,10 +1,9 @@
 package com.gemstone.gemfire.test.golden;
 
-import org.apache.logging.log4j.Logger;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected WARN message
@@ -12,25 +11,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithLoggerWarnInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithLoggerWarnInOutputJUnitTest() {
-    super(FailWithLoggerWarnInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    Logger logger = LogService.getLogger();
-    logger.warn(message);
+  void outputProblemInProcess(final String message) {
+    LogService.getLogger().warn(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithLoggerWarnInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithLoggerWarnInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithProblemInOutputTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithProblemInOutputTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithProblemInOutputTestCase.java
index 5e1552f..7a68e02 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithProblemInOutputTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithProblemInOutputTestCase.java
@@ -1,10 +1,10 @@
 package com.gemstone.gemfire.test.golden;
 
-import java.io.IOException;
+import static org.junit.Assert.*;
 
-import com.gemstone.gemfire.test.process.ProcessWrapper;
+import org.junit.Test;
 
-import junit.framework.AssertionFailedError;
+import com.gemstone.gemfire.test.process.ProcessWrapper;
 
 /**
  * Abstract test case for tests verifying that test output with a
@@ -14,33 +14,31 @@ import junit.framework.AssertionFailedError;
  */
 public abstract class FailWithProblemInOutputTestCase extends FailOutputTestCase {
 
-  FailWithProblemInOutputTestCase(String name) {
-    super(name);
-  }
-  
   @Override
   protected String[] expectedProblemLines() {
     return new String[] { ".*" + name() + ".*" };
   }
   
-  public void testFailWithProblemLogMessageInOutput() throws InterruptedException, IOException {
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  @Test
+  public void testFailWithProblemLogMessageInOutput() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" + 
+        "Press Enter to continue." + "\n" +
+        "End " + name() + ".main" + "\n";
+    debug(goldenString, "GOLDEN");
+
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitForOutputToMatch("End " + name() + "\\.main");
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + "End " + name() + ".main" + "\n";
-    innerPrintOutput(goldenString, "GOLDEN");
+    
     try {
       assertOutputMatchesGoldenFile(process.getOutput(), goldenString);
       fail("assertOutputMatchesGoldenFile should have failed due to " + problem());
-    } catch (AssertionFailedError expected) {
-//      System.out.println("Problem: " + problem());
-//      System.out.println("AssertionFailedError message: " + expected.getMessage());
+    } catch (AssertionError expected) {
       assertTrue(expected.getMessage().contains(problem()));
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithSevereInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithSevereInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithSevereInOutputJUnitTest.java
index 9089545..457c7cc 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithSevereInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithSevereInOutputJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected severe message
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithSevereInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithSevereInOutputJUnitTest() {
-    super(FailWithSevereInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.severe(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).severe(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithSevereInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithSevereInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithTimeoutOfWaitForOutputToMatchJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithTimeoutOfWaitForOutputToMatchJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithTimeoutOfWaitForOutputToMatchJUnitTest.java
index 2417f3d..1b8a312 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithTimeoutOfWaitForOutputToMatchJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithTimeoutOfWaitForOutputToMatchJUnitTest.java
@@ -1,17 +1,23 @@
 package com.gemstone.gemfire.test.golden;
 
+import static org.junit.Assert.*;
+
+import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.test.process.ProcessWrapper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import junit.framework.AssertionFailedError;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithTimeoutOfWaitForOutputToMatchJUnitTest extends FailOutputTestCase {
   
-  public FailWithTimeoutOfWaitForOutputToMatchJUnitTest() {
-    super("FailWithTimeoutOfWaitForOutputToMatchJUnitTest");
+  private static final long timeoutMillis = 1000;
+
+  private ProcessWrapper process;
+  
+  public void subTearDown() throws Exception {
+    this.process.waitFor();
+    assertFalse(this.process.isAlive());
   }
   
   @Override
@@ -20,29 +26,28 @@ public class FailWithTimeoutOfWaitForOutputToMatchJUnitTest extends FailOutputTe
   }
   
   @Override
-  void outputProblem(String message) {
+  void outputProblemInProcess(final String message) {
     System.out.println(message);
   }
   
+  /**
+   * Process output has an extra line and should fail
+   */
+  @Test
   public void testFailWithTimeoutOfWaitForOutputToMatch() throws Exception {
-    // output has an extra line and should fail
-    final ProcessWrapper process = createProcessWrapper(getClass());
-    process.execute(createProperties());
-    process.waitForOutputToMatch("Begin " + name() + "\\.main");
+    this.process = createProcessWrapper(new ProcessWrapper.Builder().timeoutMillis(timeoutMillis), getClass());
+    this.process.execute(createProperties());
+    this.process.waitForOutputToMatch("Begin " + name() + "\\.main");
+    
     try {
-      process.waitForOutputToMatch(problem());
+      this.process.waitForOutputToMatch(problem());
       fail("assertOutputMatchesGoldenFile should have failed due to " + problem());
-    } catch (AssertionFailedError expected) {
+    } catch (AssertionError expected) {
       assertTrue(expected.getMessage().contains(problem()));
     }
-    // the following should generate no failures if timeout and tearDown are all working properly
-    assertNotNull(process);
-    assertTrue(process.isAlive());
-    tearDown();
-    process.waitFor();
   }
   
   public static void main(String[] args) throws Exception {
-    new FailWithTimeoutOfWaitForOutputToMatchJUnitTest().execute();
+    new FailWithTimeoutOfWaitForOutputToMatchJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithWarningInOutputJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithWarningInOutputJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithWarningInOutputJUnitTest.java
index 89cc7dc..c54ff85 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithWarningInOutputJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/FailWithWarningInOutputJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that test output containing an unexpected warning message
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class FailWithWarningInOutputJUnitTest extends FailWithProblemInOutputTestCase {
   
-  public FailWithWarningInOutputJUnitTest() {
-    super(FailWithWarningInOutputJUnitTest.class.getSimpleName());
-  }
-  
   @Override
   String problem() {
     return "ExpectedStrings: Description of a problem.";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.warning(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).warning(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new FailWithWarningInOutputJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new FailWithWarningInOutputJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenComparator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenComparator.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenComparator.java
index 34c1ce7..6244237 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenComparator.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenComparator.java
@@ -1,5 +1,7 @@
 package com.gemstone.gemfire.test.golden;
 
+import static org.junit.Assert.*;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -9,44 +11,37 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.logging.log4j.Logger;
-
-import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.test.process.OutputFormatter;
 
-import junit.framework.Assert;
-
 /**
  * Compares test output to golden text file.
  * 
  * @author Kirk Lund
  * @since 4.1.1
  */
-public abstract class GoldenComparator extends Assert {
+public abstract class GoldenComparator {
 
-  //private static final boolean ALLOW_EXTRA_WHITESPACE = true;
-  
-  protected final Logger logger = LogService.getLogger();
+  //TODO: private static final boolean ALLOW_EXTRA_WHITESPACE = true;
   
   private String[] expectedProblemLines;
   
-  protected GoldenComparator(String[] expectedProblemLines) {
+  protected GoldenComparator(final String[] expectedProblemLines) {
     this.expectedProblemLines = expectedProblemLines;
   }
   
-  protected Reader readGoldenFile(String goldenFileName) throws IOException {
-    InputStream goldenStream = ClassLoader.getSystemResourceAsStream(goldenFileName);
+  protected Reader readGoldenFile(final String goldenFileName) throws IOException {
+    final InputStream goldenStream = ClassLoader.getSystemResourceAsStream(goldenFileName);
     assertNotNull("Golden file " + goldenFileName + " not found.", goldenStream);
     return new InputStreamReader(goldenStream);
   }
   
-  public void assertOutputMatchesGoldenFile(String actualOutput, String goldenFileName) throws IOException {
-    logger.debug(GoldenTestCase.GOLDEN_TEST, "GoldenComparator:assertOutputMatchesGoldenFile");
-    BufferedReader goldenReader = new BufferedReader(readGoldenFile(goldenFileName));
-    BufferedReader actualReader = new BufferedReader(new StringReader(actualOutput));
+  public void assertOutputMatchesGoldenFile(final String actualOutput, final String goldenFileName) throws IOException {
+    debug("GoldenComparator:assertOutputMatchesGoldenFile");
+    final BufferedReader goldenReader = new BufferedReader(readGoldenFile(goldenFileName));
+    final BufferedReader actualReader = new BufferedReader(new StringReader(actualOutput));
     
-    List<String> goldenStrings = readLines(goldenReader);
-    List<String> actualStrings = readLines(actualReader);
+    final List<String> goldenStrings = readLines(goldenReader);
+    final List<String> actualStrings = readLines(actualReader);
 
     scanForProblems(actualStrings);
     
@@ -56,12 +51,11 @@ public abstract class GoldenComparator extends Assert {
     int lineCount = 0;
     do {
       lineCount++;
-      logger.debug(GoldenTestCase.GOLDEN_TEST, "GoldenComparator comparing line {}", lineCount);
+      debug("GoldenComparator comparing line " + lineCount);
 
       actualLine = actualStrings.get(lineCount - 1);
       goldenLine = goldenStrings.get(lineCount - 1);
       
-      //checkForProblem(lineCount, actualLine);
       if (actualLine == null && goldenLine != null) {
         fail("EOF reached in actual output but golden file, " + goldenFileName + ", continues at line " + lineCount + ": " + goldenLine + new OutputFormatter(actualStrings));
       
@@ -69,11 +63,7 @@ public abstract class GoldenComparator extends Assert {
         fail("EOF reached in golden file, " + goldenFileName + ", but actual output continues at line " + lineCount + ": " + actualLine + new OutputFormatter(actualStrings));
       
       } else if (actualLine != null && goldenLine != null) {
-        assertTrue("Actual output \"" + actualLine
-            + "\" did not match expected pattern \"" + goldenLine
-            + "\" at line " + lineCount + " in " + goldenFileName 
-            + ": " + new OutputFormatter(actualStrings), 
-            compareLines(actualLine, goldenLine));
+        assertTrue("Actual output \"" + actualLine + "\" did not match expected pattern \"" + goldenLine + "\" at line " + lineCount + " in " + goldenFileName + ": " + new OutputFormatter(actualStrings), compareLines(actualLine, goldenLine));
       }
     } while (actualLine != null && goldenLine != null);
   }
@@ -81,10 +71,10 @@ public abstract class GoldenComparator extends Assert {
   /**
    * Returns true if the line matches and is ok. Otherwise returns false.
    */
-  protected abstract boolean compareLines(String actualLine, String goldenLine);
+  protected abstract boolean compareLines(final String actualLine, final String goldenLine);
   
-  private List<String> readLines(BufferedReader reader) throws IOException {
-    List<String> listOfLines = new ArrayList<String>();
+  private List<String> readLines(final BufferedReader reader) throws IOException {
+    final List<String> listOfLines = new ArrayList<String>();
     String line = null;
     do {
       line = reader.readLine();
@@ -93,17 +83,17 @@ public abstract class GoldenComparator extends Assert {
     return listOfLines;
   }
   
-  private void scanForProblems(List<String> lines) throws IOException {
-    logger.debug(GoldenTestCase.GOLDEN_TEST, "GoldenComparator:scanForProblems");
+  private void scanForProblems(final List<String> lines) throws IOException {
+    debug("GoldenComparator:scanForProblems");
     int lineCount = 0;
     for (String line : lines) {
       lineCount++;
-      logger.debug(GoldenTestCase.GOLDEN_TEST, "GoldenComparator:scanForProblems scanning line {}", lineCount);
+      debug("GoldenComparator:scanForProblems scanning line " + lineCount);
       checkForProblem(lineCount, line);
     }
   }
   
-  private void checkForProblem(int lineCount, String line) {
+  private void checkForProblem(final int lineCount, final String line) {
     if (line == null) {
       return;
     }
@@ -114,19 +104,23 @@ public abstract class GoldenComparator extends Assert {
     checkLineFor(lineCount, line, "severe");
   }
   
-  private void checkLineFor(int lineCount, String line, String problem) {
+  private void checkLineFor(final int lineCount, final String line, final String problem) {
     if (line != null && line.toLowerCase().contains(problem)) {
       if (this.expectedProblemLines != null && this.expectedProblemLines.length > 0) {
         for (int i = 0; i < this.expectedProblemLines.length; i++) {
-          logger.debug(GoldenTestCase.GOLDEN_TEST, "Comparing \"{}\" against expected \"{}\"", line, this.expectedProblemLines[i]);
+          debug("Comparing \" + line + \" against expected \" + this.expectedProblemLines[i] + \"");
           if (compareLines(line, this.expectedProblemLines[i])) {
             return;
           }
         }
       }
       // TODO: collect up entire stack trace if there is one (might span multiple lines)
-      logger.debug(GoldenTestCase.GOLDEN_TEST, "About to fail because of {}", line);
+      debug("About to fail because of " + line);
       fail("Actual output contains a problem (warning/error/severe) on line " + lineCount + ": " + line);
     }
   }
+
+  protected static void debug(final String string) {
+    GoldenTestCase.debug(string);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenStringComparator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenStringComparator.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenStringComparator.java
index 75a3398..8b9fac1 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenStringComparator.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenStringComparator.java
@@ -12,11 +12,12 @@ import java.io.StringReader;
  */
 public class GoldenStringComparator extends RegexGoldenComparator {
 
-  protected GoldenStringComparator(String[] expectedProblemLines) {
+  protected GoldenStringComparator(final String[] expectedProblemLines) {
     super(expectedProblemLines);
   }
   
-  protected Reader readGoldenFile(String goldenFileName) throws IOException {
+  @Override
+  protected Reader readGoldenFile(final String goldenFileName) throws IOException {
     return new StringReader(goldenFileName);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestCase.java
index 37b4e48..cac6748 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestCase.java
@@ -1,62 +1,43 @@
 package com.gemstone.gemfire.test.golden;
 
 import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.MarkerManager;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.junit.After;
+import org.junit.Before;
 
-import com.gemstone.gemfire.internal.AvailablePort;
-import com.gemstone.gemfire.internal.ClassPathLoader;
-import com.gemstone.gemfire.internal.logging.LogService;
 import com.gemstone.gemfire.test.process.ProcessWrapper;
 
-import junit.framework.TestCase;
-
 /**
- * The abstract superclass of tests that need to process output from the
- * quickstart examples.
+ * Test framework for launching processes and comparing output to expected golden output.
  *
  * @author Kirk Lund
  * @since 4.1.1
  */
-public abstract class GoldenTestCase extends TestCase {
-  protected static final Marker GOLDEN_TEST = MarkerManager.getMarker("GOLDEN_TEST");
+public abstract class GoldenTestCase {
 
-  protected final Logger logger = LogService.getLogger();
-  
-  private final int mcastPort = AvailablePort.getRandomAvailablePort(AvailablePort.JGROUPS);
-  private final List<ProcessWrapper> processes = new ArrayList<ProcessWrapper>();
+  /** Use to enable debug output in the JUnit process */
+  protected static final String DEBUG_PROPERTY = "golden.test.DEBUG";
+  protected static final boolean DEBUG = Boolean.getBoolean(DEBUG_PROPERTY);
   
-  static {
-    final URL configUrl = GoldenTestCase.class.getResource("log4j2-test.xml");
-    if (configUrl != null) {
-      System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, configUrl.toString());
-    }
-  }
+  /** The log4j2 config used within the spawned process */
+  private static final String LOG4J2_CONFIG_URL_STRING = GoldenTestCase.class.getResource("log4j2-test.xml").toString();
+  private static final String[] JVM_ARGS = new String[] {
+      "-D"+ConfigurationFactory.CONFIGURATION_FILE_PROPERTY+"="+LOG4J2_CONFIG_URL_STRING
+    };
   
-  private final static String[] jvmArgs = new String[] {
-    "-D"+ConfigurationFactory.CONFIGURATION_FILE_PROPERTY+"="+System.getProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY)
-  };
+  private final List<ProcessWrapper> processes = new ArrayList<ProcessWrapper>();
   
-  public GoldenTestCase(String name) {
-    super(name);
-  }
-
-  @Override
-  public final void setUp() throws Exception {
-    super.setUp();
+  @Before
+  public final void setUpGoldenTest() throws Exception {
     subSetUp();
   }
   
-  @Override
-  public final void tearDown() throws Exception {
-    super.tearDown();
+  @After
+  public final void tearDownGoldenTest() throws Exception {
     try {
       for (ProcessWrapper process : this.processes) {
         process.destroy();
@@ -86,25 +67,13 @@ public abstract class GoldenTestCase extends TestCase {
   public void subTearDown() throws Exception {
     // override me
   }
-  
-  protected final ProcessWrapper createProcessWrapper(Class<?> main) {
-    final ProcessWrapper processWrapper = new ProcessWrapper.Builder().jvmArgs(jvmArgs).main(main).build();
-    this.processes.add(processWrapper);
-    return processWrapper;
-  }
-  
-  protected final ProcessWrapper createProcessWrapper(Class<?> main, String[] mainArgs) {
-    final ProcessWrapper processWrapper = new ProcessWrapper.Builder().jvmArgs(jvmArgs).main(main).mainArgs(mainArgs).build();
+
+  protected final ProcessWrapper createProcessWrapper(final ProcessWrapper.Builder processWrapperBuilder, final Class<?> main) {
+    final ProcessWrapper processWrapper = processWrapperBuilder.jvmArguments(JVM_ARGS).mainClass(main).build();
     this.processes.add(processWrapper);
     return processWrapper;
   }
   
-  protected final ProcessWrapper createProcessWrapper(Class<?> main, String[] mainArgs, boolean useMainLauncher) {
-    final ProcessWrapper processWrapper = new ProcessWrapper.Builder().jvmArgs(jvmArgs).main(main).mainArgs(mainArgs).useMainLauncher(useMainLauncher).build();
-    this.processes.add(processWrapper);
-    return processWrapper;
-  }
-
   /** 
    * Creates and returns a new GoldenComparator instance. Default implementation
    * is RegexGoldenComparator. Override if you need a different implementation
@@ -125,19 +94,19 @@ public abstract class GoldenTestCase extends TestCase {
     return null;
   }
   
-  protected void assertOutputMatchesGoldenFile(String actualOutput, String goldenFileName) throws IOException {
+  protected void assertOutputMatchesGoldenFile(final String actualOutput, final String goldenFileName) throws IOException {
     GoldenComparator comparator = createGoldenComparator();
     comparator.assertOutputMatchesGoldenFile(actualOutput, goldenFileName);
   }
 
-  protected final void assertOutputMatchesGoldenFile(ProcessWrapper process, String goldenFileName) throws IOException {
+  protected final void assertOutputMatchesGoldenFile(final ProcessWrapper process, final String goldenFileName) throws IOException {
     GoldenComparator comparator = createGoldenComparator();
     comparator.assertOutputMatchesGoldenFile(process.getOutput(), goldenFileName);
   }
 
   protected final Properties createProperties() {
     Properties properties = new Properties();
-    properties.setProperty("gemfire.mcast-port", String.valueOf(this.mcastPort));
+    properties.setProperty("gemfire.mcast-port", "0");
     properties.setProperty("gemfire.log-level", "warning");
     properties.setProperty("file.encoding", "UTF-8");
     return editProperties(properties);
@@ -150,30 +119,23 @@ public abstract class GoldenTestCase extends TestCase {
     return properties;
   }
   
-  protected final int getMcastPort() {
-    return this.mcastPort;
+  protected final void outputLine(final String string) {
+    System.out.println(string);
   }
   
-  // TODO: get rid of this to tighten up tests
-  protected final void sleep(long millis) throws InterruptedException {
-    Thread.sleep(millis);
+  protected final void printProcessOutput(final ProcessWrapper process, final boolean ignoreStopped) {
+    debug(process.getOutput(ignoreStopped), "OUTPUT");
   }
   
-  protected final void printProcessOutput(ProcessWrapper process) {
-    innerPrintOutput(process.getOutput(), "OUTPUT");
+  protected static void debug(final String output, final String title) {
+    debug("------------------ BEGIN " + title + " ------------------");
+    debug(output);
+    debug("------------------- END " + title + " -------------------");
   }
   
-  protected final void printProcessOutput(ProcessWrapper process, boolean ignoreStopped) {
-    innerPrintOutput(process.getOutput(ignoreStopped), "OUTPUT");
-  }
-  
-  protected final void printProcessOutput(ProcessWrapper process, String banner) {
-    innerPrintOutput(process.getOutput(), banner);
-  }
-  
-  protected final void innerPrintOutput(String output, String title) {
-    System.out.println("------------------ BEGIN " + title + " ------------------");
-    System.out.println(output);
-    System.out.println("------------------- END " + title + " -------------------");
+  protected static void debug(final String string) {
+    if (DEBUG) {
+      System.out.println(string);
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestFrameworkTestSuite.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestFrameworkTestSuite.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestFrameworkTestSuite.java
new file mode 100755
index 0000000..ed540be
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/GoldenTestFrameworkTestSuite.java
@@ -0,0 +1,27 @@
+package com.gemstone.gemfire.test.golden;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+  FailWithErrorInOutputJUnitTest.class,
+  FailWithExtraLineInOutputJUnitTest.class,
+  FailWithLineMissingFromEndOfOutputJUnitTest.class,
+  FailWithLineMissingFromMiddleOfOutputJUnitTest.class,
+  FailWithLoggerErrorInOutputJUnitTest.class,
+  FailWithLoggerFatalInOutputJUnitTest.class,
+  FailWithLoggerWarnInOutputJUnitTest.class,
+  FailWithSevereInOutputJUnitTest.class,
+  FailWithTimeoutOfWaitForOutputToMatchJUnitTest.class,
+  FailWithWarningInOutputJUnitTest.class,
+  PassJUnitTest.class,
+  PassWithExpectedErrorJUnitTest.class,
+  PassWithExpectedSevereJUnitTest.class,
+  PassWithExpectedWarningJUnitTest.class,
+})
+/**
+ * Suite of tests for the test.golden Golden Test framework classes.
+ */
+public class GoldenTestFrameworkTestSuite {
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassJUnitTest.java
index 886fc94..5959291 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassJUnitTest.java
@@ -1,13 +1,16 @@
 package com.gemstone.gemfire.test.golden;
 
+import static org.junit.Assert.*;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
+import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.test.process.ProcessWrapper;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Basic unit testing of the golden testing framework. This tests an 
@@ -15,13 +18,9 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
-public class PassJUnitTest extends GoldenTestCase {
+@Category(IntegrationTest.class)
+public class PassJUnitTest extends GoldenTestCase implements ExecutableProcess {
   
-  public PassJUnitTest() {
-    super("PassJUnitTest");
-  }
-
   @Override
   protected GoldenComparator createGoldenComparator() {
     return new GoldenStringComparator(expectedProblemLines());
@@ -31,36 +30,41 @@ public class PassJUnitTest extends GoldenTestCase {
     return getClass().getSimpleName();
   }
 
-  public void testPass() throws InterruptedException, IOException {
-    // output has no problems and should pass
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  /**
+   * Process output has no problems and should pass
+   */
+  @Test
+  public void testPass() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" + 
+        "Press Enter to continue." + "\n" +
+        "End " + name() + ".main" + "\n";
+    
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     assertTrue(process.isAlive());
+    
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitForOutputToMatch("End " + name() + "\\.main");
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + "End " + name() + ".main" + "\n";
+    
     assertOutputMatchesGoldenFile(process, goldenString);
-
     assertFalse(process.isAlive());
-    //assertFalse(process.getOutputReader());
     assertFalse(process.getStandardOutReader().isAlive());
     assertFalse(process.getStandardErrorReader().isAlive());
   }
 
-  void execute() throws IOException {
-    System.out.println("Begin " + name() + ".main");
-    System.out.println("Press Enter to continue.");
-    BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
-    inputReader.readLine();
-    System.out.println("End " + name() + ".main");
+  @Override
+  public final void executeInProcess() throws IOException {
+    outputLine("Begin " + name() + ".main");
+    outputLine("Press Enter to continue.");
+    new BufferedReader(new InputStreamReader(System.in)).readLine();
+    outputLine("End " + name() + ".main");
   }
   
-  public static void main(String[] args) throws Exception {
-    new PassJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new PassJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedErrorJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedErrorJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedErrorJUnitTest.java
index 39267e9..35f8173 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedErrorJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedErrorJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that an example test should always pass even if the output contains
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class PassWithExpectedErrorJUnitTest extends PassWithExpectedProblemTestCase {
   
-  public PassWithExpectedErrorJUnitTest() {
-    super("PassWithExpectedErrorJUnitTest");
-  }
-  
   @Override
   String problem() {
     return "error";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.error(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).error(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new PassWithExpectedErrorJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new PassWithExpectedErrorJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedProblemTestCase.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedProblemTestCase.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedProblemTestCase.java
index 2958007..edae866 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedProblemTestCase.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedProblemTestCase.java
@@ -4,6 +4,8 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
+import org.junit.Test;
+
 import com.gemstone.gemfire.test.process.ProcessWrapper;
 
 /**
@@ -12,11 +14,9 @@ import com.gemstone.gemfire.test.process.ProcessWrapper;
  * 
  * @author Kirk Lund
  */
-public abstract class PassWithExpectedProblemTestCase extends GoldenTestCase {
+public abstract class PassWithExpectedProblemTestCase extends GoldenTestCase implements ExecutableProcess {
 
-  PassWithExpectedProblemTestCase(String name) {
-    super(name);
-  }
+  private int problemLine; 
   
   @Override
   protected GoldenComparator createGoldenComparator() {
@@ -25,7 +25,11 @@ public abstract class PassWithExpectedProblemTestCase extends GoldenTestCase {
 
   @Override
   protected String[] expectedProblemLines() {
-    return new String[] { ".*" + name() + ".*", "^\\[" + problem() + ".*\\] ExpectedStrings: This is an expected problem in the output" };
+    this.problemLine = 1; 
+    return new String[] { 
+        ".*" + name() + ".*", 
+        "^\\[" + problem() + ".*\\] ExpectedStrings: This is an expected problem in the output" 
+    };
   }
   
   String name() {
@@ -34,36 +38,38 @@ public abstract class PassWithExpectedProblemTestCase extends GoldenTestCase {
   
   abstract String problem();
   
-  abstract void outputProblem(String message);
+  abstract void outputProblemInProcess(String message);
   
-  public void testPassWithExpectedProblem() throws InterruptedException, IOException {
-    // output has an expected warning/error/severe message and should pass
-    final ProcessWrapper process = createProcessWrapper(getClass());
+  /**
+   * Process output has an expected warning/error/severe message and should pass
+   */
+  @Test
+  public void testPassWithExpectedProblem() throws Exception {
+    final String goldenString = 
+        "Begin " + name() + ".main" + "\n" + 
+        "Press Enter to continue." + "\n" +
+        "\n" +
+        expectedProblemLines()[this.problemLine] + "\n" +
+        "End " + name() + ".main" + "\n";
+    debug(goldenString, "GOLDEN");
+
+    final ProcessWrapper process = createProcessWrapper(new ProcessWrapper.Builder(), getClass());
     process.execute(createProperties());
     process.waitForOutputToMatch("Begin " + name() + "\\.main");
     process.waitForOutputToMatch("Press Enter to continue\\.");
     process.sendInput();
     process.waitForOutputToMatch("End " + name() + "\\.main");
     process.waitFor();
-    String goldenString = "Begin " + name() + ".main" + "\n" 
-        + "Press Enter to continue." + "\n" 
-        + "\n"
-        + "^\\[" + problem() + ".*\\] ExpectedStrings: This is an expected problem in the output" + "\n"
-        + "End " + name() + ".main" + "\n";
-    innerPrintOutput(goldenString, "GOLDEN");
-    String[] printMe = expectedProblemLines();
-    for (String str : printMe) {
-      System.out.println(str);
-    }
+    
     assertOutputMatchesGoldenFile(process.getOutput(), goldenString);
   }
   
-  void execute() throws IOException {
-    System.out.println("Begin " + name() + ".main");
-    System.out.println("Press Enter to continue.");
-    BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
-    inputReader.readLine();
-    outputProblem("ExpectedStrings: This is an expected problem in the output");
-    System.out.println("End " + name() + ".main");
+  @Override
+  public final void executeInProcess() throws IOException {
+    outputLine("Begin " + name() + ".main");
+    outputLine("Press Enter to continue.");
+    new BufferedReader(new InputStreamReader(System.in)).readLine();
+    outputProblemInProcess("ExpectedStrings: This is an expected problem in the output");
+    outputLine("End " + name() + ".main");
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedSevereJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedSevereJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedSevereJUnitTest.java
index 659e807..225d55b 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedSevereJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedSevereJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that an example test should always pass even if the output contains
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class PassWithExpectedSevereJUnitTest extends PassWithExpectedProblemTestCase {
   
-  public PassWithExpectedSevereJUnitTest() {
-    super("PassWithExpectedSevereJUnitTest");
-  }
-  
   @Override
   String problem() {
     return "severe";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.severe(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).severe(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new PassWithExpectedSevereJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new PassWithExpectedSevereJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedWarningJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedWarningJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedWarningJUnitTest.java
index 866e8b2..215f5ca 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedWarningJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/PassWithExpectedWarningJUnitTest.java
@@ -2,10 +2,9 @@ package com.gemstone.gemfire.test.golden;
 
 import org.junit.experimental.categories.Category;
 
-import com.gemstone.gemfire.LogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
 /**
  * Verifies that an example test should always pass even if the output contains
@@ -13,25 +12,20 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
  * 
  * @author Kirk Lund
  */
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
 public class PassWithExpectedWarningJUnitTest extends PassWithExpectedProblemTestCase {
   
-  public PassWithExpectedWarningJUnitTest() {
-    super("PassWithExpectedWarningJUnitTest");
-  }
-
   @Override
   String problem() {
     return "warning";
   }
   
   @Override
-  void outputProblem(String message) {
-    LogWriter logWriter = new LocalLogWriter(LogWriterImpl.INFO_LEVEL);
-    logWriter.warning(message);
+  void outputProblemInProcess(final String message) {
+    new LocalLogWriter(LogWriterImpl.INFO_LEVEL).warning(message);
   }
   
-  public static void main(String[] args) throws Exception {
-    new PassWithExpectedWarningJUnitTest().execute();
+  public static void main(final String[] args) throws Exception {
+    new PassWithExpectedWarningJUnitTest().executeInProcess();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/RegexGoldenComparator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/RegexGoldenComparator.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/RegexGoldenComparator.java
index bc80b3a..759e3a3 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/RegexGoldenComparator.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/RegexGoldenComparator.java
@@ -1,6 +1,5 @@
 package com.gemstone.gemfire.test.golden;
 
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
@@ -10,14 +9,13 @@ import java.util.regex.Pattern;
  */
 public class RegexGoldenComparator extends GoldenComparator {
   
-  protected RegexGoldenComparator(String[] expectedProblemLines) {
+  protected RegexGoldenComparator(final String[] expectedProblemLines) {
     super(expectedProblemLines);
   }
   
   @Override
-  protected boolean compareLines(String actualLine, String goldenLine) {
-    logger.debug(GoldenTestCase.GOLDEN_TEST, "RegexGoldenComparator:compareLines comparing \"{}\" to \"{}\"", actualLine, goldenLine);
-    Matcher matcher = Pattern.compile(goldenLine).matcher(actualLine);
-    return matcher.matches();
+  protected boolean compareLines(final String actualLine, final String goldenLine) {
+    debug("RegexGoldenComparator:compareLines comparing \" + actualLine + \" to \" + goldenLine + \"");
+    return Pattern.compile(goldenLine).matcher(actualLine).matches();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/StringGoldenComparator.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/StringGoldenComparator.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/StringGoldenComparator.java
index 5547a9e..48f645a 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/StringGoldenComparator.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/golden/StringGoldenComparator.java
@@ -7,12 +7,12 @@ package com.gemstone.gemfire.test.golden;
  */
 public class StringGoldenComparator extends GoldenComparator {
 
-  protected StringGoldenComparator(String[] expectedProblemLines) {
+  protected StringGoldenComparator(final String[] expectedProblemLines) {
     super(expectedProblemLines);
   }
   
   @Override
-  protected boolean compareLines(String actualLine, String goldenLine) {
+  protected boolean compareLines(final String actualLine, final String goldenLine) {
     if (actualLine == null) {
       return goldenLine == null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/94939c1f/gemfire-core/src/test/java/com/gemstone/gemfire/test/process/ProcessTestFrameworkTestSuite.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/test/process/ProcessTestFrameworkTestSuite.java b/gemfire-core/src/test/java/com/gemstone/gemfire/test/process/ProcessTestFrameworkTestSuite.java
new file mode 100755
index 0000000..011a62e
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/test/process/ProcessTestFrameworkTestSuite.java
@@ -0,0 +1,12 @@
+package com.gemstone.gemfire.test.process;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+  MainLauncherJUnitTest.class,
+  ProcessWrapperJUnitTest.class,
+})
+public class ProcessTestFrameworkTestSuite {
+}