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:40:38 UTC

[49/50] [abbrv] incubator-geode git commit: GEODE-214: improve Azul support

GEODE-214: improve Azul support

- isTenured now looks for "GenPauseless Old Gen" for azul.
- Azul jvm version no longer logged as unsupported.
- Fatal log message about jvm version not being supported
  is now a warning since we continue to run.
- Fixed a bug in ReflectionSingleObjectSizer in how it calculated
  the size of a field. It was calling Field.getClass instead of Field.getType.
  Field.getClass always returns an instance of Field.class which the sizer
  always says is an objref size. getType will return a primitive class
  for primitive fields which is what we want.
- Improved ObjectSizerJUnitTest.
- The object header size and reference size are now correctly computed
  for azul.
- Added some java 8 support to the ObjectSizer.
- Fix tests that are unintentionally spawning processes that use the
  default mcast-port. This fixes intermittent failures caused by finding
  another member of the wrong GemFire version.


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

Branch: refs/heads/feature/GEODE-77
Commit: eb7e7b778d8b64741d1e377022c620feaa6483ca
Parents: 2914567
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Tue Jun 2 10:45:30 2015 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Fri Aug 14 11:23:27 2015 -0700

----------------------------------------------------------------------
 .../gemfire/internal/SharedLibrary.java         | 20 ++++++-
 .../cache/MinimumSystemRequirements.java        |  4 +-
 .../cache/control/HeapMemoryMonitor.java        |  1 +
 .../gemfire/internal/lang/SystemUtils.java      | 35 ++++++++++--
 .../size/ReflectionSingleObjectSizer.java       |  4 +-
 .../LocatorLauncherRemoteFileJUnitTest.java     |  8 +--
 .../LocatorLauncherRemoteJUnitTest.java         | 57 ++++++++------------
 .../ServerLauncherLocalJUnitTest.java           | 47 ++++++++++------
 .../ServerLauncherRemoteFileJUnitTest.java      |  2 -
 .../ServerLauncherWithSpringJUnitTest.java      |  2 +
 .../internal/size/ObjectSizerJUnitTest.java     | 14 ++++-
 11 files changed, 126 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SharedLibrary.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SharedLibrary.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SharedLibrary.java
index 59ab34e..fd923ad 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SharedLibrary.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/SharedLibrary.java
@@ -8,6 +8,7 @@
 package com.gemstone.gemfire.internal;
 
 import com.gemstone.gemfire.InternalGemFireError;
+import com.gemstone.gemfire.internal.lang.SystemUtils;
 import com.gemstone.gemfire.pdx.internal.unsafe.UnsafeWrapper;
 
 import java.io.File;
@@ -68,9 +69,19 @@ public class SharedLibrary {
       int scaleIndex = 0;
       int tmpReferenceSize = 0;
       int tmpObjectHeaderSize = 0;
+      if (SystemUtils.isAzulJVM()) {
+        tmpObjectHeaderSize = 8;
+        tmpReferenceSize = 8;
+      } else {
       if (unsafe != null) {
         // Use unsafe to figure out the size of an object reference since we might
         // be using compressed oops.
+        // Note: as of java 8 compressed oops do not imply a compressed object header.
+        // The object header is determined by UseCompressedClassPointers.
+        // UseCompressedClassPointers requires UseCompressedOops
+        // but UseCompressedOops does not require UseCompressedClassPointers.
+        // But it seems unlikely that someone would compress their oops
+        // not their class pointers. 
         scaleIndex = unsafe.arrayScaleIndex(Object[].class);
         if (scaleIndex == 4) {
           // compressed oops
@@ -85,8 +96,12 @@ public class SharedLibrary {
         }
       }
       if (scaleIndex == 0) {
-        // If our heap is > 32G then assume large oops. Otherwise assume compressed oops.
-        if (Runtime.getRuntime().maxMemory() > (32L*1024*1024*1024)) {
+        // If our heap is > 32G (64G on java 8) then assume large oops. Otherwise assume compressed oops.
+        long SMALL_OOP_BOUNDARY = 32L;
+        if (SystemUtils.isJavaVersionAtLeast("1.8")) {
+          SMALL_OOP_BOUNDARY = 64L;
+        }
+        if (Runtime.getRuntime().maxMemory() > (SMALL_OOP_BOUNDARY*1024*1024*1024)) {
           tmpReferenceSize = 8;
           tmpObjectHeaderSize = 16;
         } else {
@@ -94,6 +109,7 @@ public class SharedLibrary {
           tmpObjectHeaderSize = 12;
         }
       }
+      }
       referenceSize = tmpReferenceSize;
       objectHeaderSize = tmpObjectHeaderSize;
     }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/MinimumSystemRequirements.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/MinimumSystemRequirements.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/MinimumSystemRequirements.java
index d0a346f..12f6177 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/MinimumSystemRequirements.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/MinimumSystemRequirements.java
@@ -58,7 +58,7 @@ public final class MinimumSystemRequirements {
     minimumSystemRequirementsMet &= checkJavaVersion();
 
     if (!minimumSystemRequirementsMet) {
-      logger.fatal(LocalizedMessage.create(LocalizedStrings.MinimumSystemRequirements_NOT_MET));
+      logger.warn(LocalizedMessage.create(LocalizedStrings.MinimumSystemRequirements_NOT_MET));
     }
 
     return minimumSystemRequirementsMet;
@@ -76,7 +76,7 @@ public final class MinimumSystemRequirements {
       return true;
     }
 
-    logger.fatal(LocalizedMessage.create(LocalizedStrings.MinimumSystemRequirements_JAVA_VERSION, JAVA_VERSION));
+    logger.warn(LocalizedMessage.create(LocalizedStrings.MinimumSystemRequirements_JAVA_VERSION, JAVA_VERSION));
     return false;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/HeapMemoryMonitor.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/HeapMemoryMonitor.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/HeapMemoryMonitor.java
index fda337b..d84a367 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/HeapMemoryMonitor.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/cache/control/HeapMemoryMonitor.java
@@ -181,6 +181,7 @@ public class HeapMemoryMonitor implements NotificationListener, ResourceMonitor
         || name.equals("Old Space")       // BEA JRockit 1.5, 1.6 GC
         || name.equals("Tenured Gen")     // Hitachi 1.5 GC
         || name.equals("Java heap")       // IBM 1.5, 1.6 GC
+        || name.equals("GenPauseless Old Gen") // azul C4/GPGC collector
         
         // Allow an unknown pool name to monitor
         || (HEAP_POOL != null && name.equals(HEAP_POOL));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/main/java/com/gemstone/gemfire/internal/lang/SystemUtils.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/lang/SystemUtils.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/lang/SystemUtils.java
index f4f111a..9912398 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/lang/SystemUtils.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/lang/SystemUtils.java
@@ -36,6 +36,7 @@ public class SystemUtils {
   public static final String APPLE_JVM_VENDOR_NAME = "Apple";
   public static final String IBM_JVM_NAME = "IBM";
   public static final String ORACLE_JVM_VENDOR_NAME = "Oracle";
+  public static final String AZUL_JVM_VENDOR_NAME = "Azul";
 
   // Operating System Names
   public static final String LINUX_OS_NAME = "Linux";
@@ -45,13 +46,30 @@ public class SystemUtils {
   /**
    * Utility method to determine whether the installed Java Runtime Environment (JRE) is minimally at the specified,
    * expected version.  Typically, Java versions are of the form "1.6.0_31"...
+   * In the Azul JVM java.version does not have the "_NN" suffix. Instead it has the azul product version
+   * as the suffix like so "-zing_NN.NN.N.N". So on azul we instead use the "java.specification.version" sys prop
+   * and only compare the major and minor version numbers. All the stuff after the second "." in expectedVersion
+   * is ignored.
    * 
-   * @param expectedVersion an int value specifying the minimum expected version of the Java Runtime.
+   * @param expectedVersion an string value specifying the minimum expected version of the Java Runtime.
    * @return a boolean value indicating if the Java Runtime meets the expected version requirement.
    * @see java.lang.System#getProperty(String) with "java.version".
    */
-  public static boolean isJavaVersionAtLeast(final String expectedVersion) {
-    String actualVersionDigits = StringUtils.getDigitsOnly(System.getProperty("java.version"));
+  public static boolean isJavaVersionAtLeast(String expectedVersion) {
+    String actualVersionDigits;
+    if (isAzulJVM()) {
+      actualVersionDigits = StringUtils.getDigitsOnly(System.getProperty("java.specification.version"));
+      int dotIdx = expectedVersion.indexOf('.');
+      if (dotIdx != -1) {
+        dotIdx = expectedVersion.indexOf('.', dotIdx+1);
+        if (dotIdx != -1) {
+          // strip off everything after the second dot.
+          expectedVersion = expectedVersion.substring(0, dotIdx);
+        }
+      }
+    } else {
+      actualVersionDigits = StringUtils.getDigitsOnly(System.getProperty("java.version"));
+    }
 
     String expectedVersionDigits = StringUtils.padEnding(StringUtils.getDigitsOnly(expectedVersion), '0',
       actualVersionDigits.length());
@@ -86,6 +104,17 @@ public class SystemUtils {
     return isJvmVendor(ORACLE_JVM_VENDOR_NAME);
   }
 
+  /**
+   * Utility method to determine whether the Java application process is executing on the Azul JVM.
+   *
+   * @return a boolean value indicating whether the Java application process is executing and running 
+   * on the Azul JVM.
+   * @see #isJvmVendor(String)
+   */
+  public static boolean isAzulJVM() {
+    return isJvmVendor(AZUL_JVM_VENDOR_NAME);
+  }
+  
   // @see java.lang.System#getProperty(String) with 'java.vm.vendor'.
   private static boolean isJvmVendor(final String expectedJvmVendorName) {
     String jvmVendor = System.getProperty("java.vm.vendor");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/main/java/com/gemstone/gemfire/internal/size/ReflectionSingleObjectSizer.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/size/ReflectionSingleObjectSizer.java b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/size/ReflectionSingleObjectSizer.java
index 47b73a8..d3f3b24 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/size/ReflectionSingleObjectSizer.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/size/ReflectionSingleObjectSizer.java
@@ -109,7 +109,7 @@ public class ReflectionSingleObjectSizer implements SingleObjectSizer {
       } while (clazz != null);
 
       if (lastField != null) {
-        size = lastFieldOffset + sizeType(lastField.getClass());
+        size = lastFieldOffset + sizeType(lastField.getType());
       } else {
         // class with no fields
         size = OBJECT_SIZE;
@@ -123,7 +123,7 @@ public class ReflectionSingleObjectSizer implements SingleObjectSizer {
         Field[] fields = clazz.getDeclaredFields();
         for(Field field: fields) {
           if(!Modifier.isStatic(field.getModifiers())) {
-            size += sizeType(field.getClass());
+            size += sizeType(field.getType());
           }
         }
         clazz = clazz.getSuperclass();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java
index b481461..0be4a8e 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java
@@ -56,9 +56,7 @@ public class LocatorLauncherRemoteFileJUnitTest extends LocatorLauncherRemoteJUn
    * Override because FileProcessController cannot request status with PID
    */
   public void testStatusUsingPid() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -135,9 +133,7 @@ public class LocatorLauncherRemoteFileJUnitTest extends LocatorLauncherRemoteJUn
    * Override because FileProcessController cannot request stop with PID
    */
   public void testStopUsingPid() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
index 25aa23c..8977e47 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java
@@ -86,8 +86,13 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     assertTrue(this.temporaryFolder.getRoot().isDirectory() && this.temporaryFolder.getRoot().canWrite());
 
     // launch LocatorLauncherForkingProcess which then launches the GemFire Locator
-    List<String> command = new ArrayList<String>();
+    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) {
+      command.add(jvmArgument);
+    }
     command.add("-cp");
     command.add(System.getProperty("java.class.path"));
     command.add(LocatorLauncherRemoteDUnitTest.class.getName().concat("$").concat(LocatorLauncherForkingProcess.class.getSimpleName()));
@@ -129,9 +134,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   @Test
   public void testStartCreatesPidFile() throws Throwable {
     // build and start the locator
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -200,9 +203,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     assertTrue(this.statusFile.exists());
     
     // build and start the locator
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -264,9 +265,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     writePid(this.pidFile, Integer.MAX_VALUE);
 
     // build and start the locator
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -323,9 +322,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     writePid(this.pidFile, otherPid);
 
     // build and start the locator
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -380,9 +377,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   public void testStartUsingPortInUseFails() throws Throwable {
     this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1);
     
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -456,10 +451,8 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     assertFalse(this.socket.isClosed());
     
     // launch locator
-    final List<String> jvmArguments = new ArrayList<String>();
+    final List<String> jvmArguments = getJvmArguments();
     jvmArguments.add("-D" + DistributionLocator.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY + "=" + this.locatorPort);
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
     
     final List<String> command = new ArrayList<String>();
     command.add(new File(new File(System.getProperty("java.home"), "bin"), "java").getCanonicalPath());
@@ -533,9 +526,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     writePid(this.pidFile, realPid);
     
     // build and start the locator
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -606,9 +597,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
 
   @Test
   public void testStatusUsingPid() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -690,9 +679,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   
   @Test
   public void testStatusUsingWorkingDirectory() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -817,9 +804,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   
   @Test
   public void testStopUsingPid() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -893,9 +878,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
   
   @Test
   public void testStopUsingWorkingDirectory() throws Throwable {
-    final List<String> jvmArguments = new ArrayList<String>();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
-    jvmArguments.add("-Dgemfire.log-level=config");
+    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());
@@ -948,6 +931,12 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit
     }
   }
 
+  public static List<String> getJvmArguments() {
+    final List<String> jvmArguments = new ArrayList<String>();
+    jvmArguments.add("-Dgemfire.log-level=config");
+    return jvmArguments;
+  }
+  
   /**
    * Used only by {@link LocatorLauncherRemoteJUnitTest#testRunningLocatorOutlivesForkingProcess}
    */

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java
index 1addfc8..44849f8 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java
@@ -121,7 +121,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     this.launcher = builder.build();
     assertNotNull(this.launcher);
@@ -173,7 +174,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -228,7 +230,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -273,7 +276,9 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
+    
     this.launcher = builder.build();
 
     // wait for server to start
@@ -328,7 +333,9 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
+
     this.launcher = builder.build();
 
     // wait for server to start
@@ -387,7 +394,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setForce(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertTrue(builder.getForce());
     this.launcher = builder.build();
@@ -466,7 +474,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
         .setServerPort(freeTCPPorts[1])
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     this.launcher = builder.build();
     this.launcher.start();
@@ -535,7 +544,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
         .setServerPort(this.serverPort)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     this.launcher = builder.build();
     this.launcher.start();
@@ -585,7 +595,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
     final Builder builder = new Builder()
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     this.launcher = builder.build();
     
@@ -663,7 +674,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -741,7 +753,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
         .setServerPort(freeTCPPort)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     this.launcher = builder.build();
     
@@ -801,7 +814,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
     
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -865,7 +879,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
     
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -930,7 +945,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertFalse(builder.getForce());
     this.launcher = builder.build();
@@ -983,7 +999,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes
         .setDisableDefaultServer(true)
         .setMemberName(getUniqueName())
         .setRedirectOutput(true)
-        .set(DistributionConfig.LOG_LEVEL_NAME, "config");
+        .set(DistributionConfig.LOG_LEVEL_NAME, "config")
+        .set(DistributionConfig.MCAST_PORT_NAME, "0");
 
     assertFalse(builder.getForce());
     this.launcher = builder.build();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteFileJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteFileJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteFileJUnitTest.java
index 3b321ed..11cab25 100755
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteFileJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteFileJUnitTest.java
@@ -57,7 +57,6 @@ public class ServerLauncherRemoteFileJUnitTest extends ServerLauncherRemoteJUnit
    */
   public void testStatusUsingPid() throws Throwable {
     final List<String> jvmArguments = getJvmArguments();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
     
     final List<String> command = new ArrayList<String>();
     command.add(new File(new File(System.getProperty("java.home"), "bin"), "java").getCanonicalPath());
@@ -135,7 +134,6 @@ public class ServerLauncherRemoteFileJUnitTest extends ServerLauncherRemoteJUnit
    */
   public void testStopUsingPid() throws Throwable {
     final List<String> jvmArguments = getJvmArguments();
-    jvmArguments.add("-D" + getUniqueName() + "=true");
     
     final List<String> command = new ArrayList<String>();
     command.add(new File(new File(System.getProperty("java.home"), "bin"), "java").getCanonicalPath());

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
index dbefdbd..4472ab6 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherWithSpringJUnitTest.java
@@ -15,6 +15,7 @@ import org.springframework.data.gemfire.support.SpringContextBootstrappingInitia
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
 import com.gemstone.gemfire.distributed.ServerLauncher.Builder;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.internal.process.ProcessType;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
@@ -47,6 +48,7 @@ public class ServerLauncherWithSpringJUnitTest extends AbstractServerLauncherJUn
       .setForce(true)
       .setMemberName(getUniqueName())
       .setSpringXmlLocation("spring/spring-gemfire-context.xml")
+      .set(DistributionConfig.MCAST_PORT_NAME, "0")
       .build();
 
     assertNotNull(this.launcher);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/eb7e7b77/gemfire-core/src/test/java/com/gemstone/gemfire/internal/size/ObjectSizerJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/size/ObjectSizerJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/size/ObjectSizerJUnitTest.java
index 3d6a731..7c63d90 100644
--- a/gemfire-core/src/test/java/com/gemstone/gemfire/internal/size/ObjectSizerJUnitTest.java
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/internal/size/ObjectSizerJUnitTest.java
@@ -27,8 +27,7 @@ public class ObjectSizerJUnitTest extends TestCase {
   }
 
   public void test() throws IllegalArgumentException, IllegalAccessException {
-    long size = ObjectGraphSizer.size(new Object());
-    assertEquals(OBJECT_SIZE, 8, size);
+    assertEquals(roundup(OBJECT_SIZE), ObjectGraphSizer.size(new Object()));
     
     assertEquals(roundup(OBJECT_SIZE + 4), ObjectGraphSizer.size(new TestObject1()));
     assertEquals(roundup(OBJECT_SIZE + 4), ObjectGraphSizer.size(new TestObject2()));
@@ -37,6 +36,7 @@ public class ObjectSizerJUnitTest extends TestCase {
     assertEquals(roundup(OBJECT_SIZE + REFERENCE_SIZE), ObjectGraphSizer.size(new TestObject4()));
     assertEquals(roundup(OBJECT_SIZE + REFERENCE_SIZE) + roundup(OBJECT_SIZE + 4), ObjectGraphSizer.size(new TestObject5()));
     assertEquals(roundup(OBJECT_SIZE + REFERENCE_SIZE) + roundup(OBJECT_SIZE + REFERENCE_SIZE * 4 + 4) + roundup(OBJECT_SIZE + 4), ObjectGraphSizer.size(new TestObject6()));
+    assertEquals(roundup(OBJECT_SIZE + 7), ObjectGraphSizer.size(new TestObject7()));
   }
   
   private static class TestObject1 {
@@ -67,4 +67,14 @@ public class ObjectSizerJUnitTest extends TestCase {
       array[2] = array[3];
     }
   }
+  
+  private static class TestObject7 {
+    byte b1;
+    byte b2;
+    byte b3;
+    byte b4;
+    byte b5;
+    byte b6;
+    byte b7;
+  }
 }
\ No newline at end of file