You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2016/07/12 20:01:01 UTC

[2/8] incubator-geode git commit: GEODE-420: Clean up of SocketCreator code in tests. SocketCreatorFactory currently singleton, to amend at later stage

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
index 3c05794..3ce3ec5 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
@@ -54,38 +54,36 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
   static int locatorVM = 3;
   static String mcastport = "42786";
   static String mcastttl = "0";
-  
+
   private int locatorPort;
 
   @Override
   public final void preSetUp() throws Exception {
     clean();
   }
-  
+
   @Override
   public final void preTearDownCacheTestCase() throws Exception {
     clean();
   }
-  
-  private void clean(){
-    SerializableRunnable cleanVM =
-        new CacheSerializableRunnable("clean VM") {
-            public void run2() throws CacheException {
-              disconnectFromDS();
-            }
-        };
-    Invoke.invokeInEveryVM(cleanVM);    
+
+  private void clean() {
+    SerializableRunnable cleanVM = new CacheSerializableRunnable("clean VM") {
+      public void run2() throws CacheException {
+        disconnectFromDS();
+      }
+    };
+    Invoke.invokeInEveryVM(cleanVM);
   }
-  
+
   @Test
   public void testMulticastEnabled() {
     final String name = "mcastRegion";
-    SerializableRunnable create =
-      new CacheSerializableRunnable("Create Region") {
-          public void run2() throws CacheException {
-            createRegion(name, getRegionAttributes());
-          }
-        };
+    SerializableRunnable create = new CacheSerializableRunnable("Create Region") {
+      public void run2() throws CacheException {
+        createRegion(name, getRegionAttributes());
+      }
+    };
 
     locatorPort = startLocator();
     Host host = Host.getHost(0);
@@ -106,39 +104,37 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
     vm0.invoke(validateMulticastBeforeRegionOps);
     vm1.invoke(validateMulticastBeforeRegionOps);
     */
-    
-    SerializableRunnable doPuts =
-      new CacheSerializableRunnable("do put") {
-          public void run2() throws CacheException {
-            final Region region =
-                getRootRegion().getSubregion(name);
-            for(int i =0 ; i < 5; i++) {
-              region.put(i, i);
-            }
-          }
-      };
-      
+
+    SerializableRunnable doPuts = new CacheSerializableRunnable("do put") {
+      public void run2() throws CacheException {
+        final Region region = getRootRegion().getSubregion(name);
+        for (int i = 0; i < 5; i++) {
+          region.put(i, i);
+        }
+      }
+    };
+
     vm0.invoke(doPuts);
-    
-    SerializableRunnable validateMulticastAfterRegionOps =
-      new CacheSerializableRunnable("validateMulticast after region ops") {
-          public void run2() throws CacheException {
-            validateMulticastOpsAfterRegionOps();
-          }
-      };
-    
-      vm0.invoke(validateMulticastAfterRegionOps);
-      vm1.invoke(validateMulticastAfterRegionOps);
-   
-      closeLocator();      
+
+    SerializableRunnable validateMulticastAfterRegionOps = new CacheSerializableRunnable("validateMulticast after region ops") {
+      public void run2() throws CacheException {
+        validateMulticastOpsAfterRegionOps();
+      }
+    };
+
+    vm0.invoke(validateMulticastAfterRegionOps);
+    vm1.invoke(validateMulticastAfterRegionOps);
+
+    closeLocator();
   }
-  
+
   private static class TestObjectThrowsException implements PdxSerializable {
+
     String name = "TestObjectThrowsException";
 
     @Override
     public void toData(PdxWriter writer) {
-      writer.writeString("name", name);      
+      writer.writeString("name", name);
     }
 
     @Override
@@ -146,7 +142,7 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
       throw new RuntimeException("Unable to deserialize message ");
     }
   }
-  
+
   @Test
   public void testMulticastWithRegionOpsException() {
     Host host = Host.getHost(0);
@@ -155,31 +151,21 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
 
     try {
       final String name = "mcastRegion";
-      
-      SerializableRunnable setSysProp = new CacheSerializableRunnable("Create Region") {
-        public void run2() throws CacheException {
-          CachedDeserializableFactory.STORE_ALL_VALUE_FORMS = true;
-        }
-      };
-      
-      
-      SerializableRunnable create =
-        new CacheSerializableRunnable("Create Region") {
-            public void run2() throws CacheException {
-              createRegion(name, getRegionAttributes());
-            }
-          };
-  
+
       locatorPort = startLocator();
-      
-      vm0.invoke(setSysProp);
-      vm1.invoke(setSysProp);
-      
+
+      vm0.invoke("setSysProps", () -> setSysProps());
+      //      vm1.invoke("setSysProps", () -> setSysProps());
+      setSysProps();
       //1. start locator with mcast port
-      vm0.invoke(create);
-      vm1.invoke(create);
-      
-    //There is possibility that you may get this packet from other tests
+      vm0.invoke("createRegion", () -> {
+        createRegion(name, getRegionAttributes());
+        return "";
+      });
+      //      vm1.invoke("createRegion", () -> createRegion(name,getRegionAttributes()));
+      createRegion(name, getRegionAttributes());
+
+      //There is possibility that you may get this packet from other tests
       /*
       SerializableRunnable validateMulticastBeforeRegionOps =
           new CacheSerializableRunnable("validateMulticast before region ops") {
@@ -191,40 +177,37 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
       vm0.invoke(validateMulticastBeforeRegionOps);
       vm1.invoke(validateMulticastBeforeRegionOps);
       */
-      
-      SerializableRunnable doPuts =
-        new CacheSerializableRunnable("do put") {
-            public void run2() throws CacheException {
-              final Region region =
-                  getRootRegion().getSubregion(name);
-              boolean gotReplyException = false;
-              for(int i =0 ; i < 1; i++) {
-                try {
-                  region.put(i, new TestObjectThrowsException());
-                }catch(PdxSerializationException e) {
-                  gotReplyException = true;
-                }catch(Exception e ) {
-                  region.getCache().getLogger().info("Got exception of type " + e.getClass().toString());
-                } 
-              }
-              assertTrue("We should have got ReplyEception ", gotReplyException);
+
+      SerializableRunnable doPuts = new CacheSerializableRunnable("do put") {
+        public void run2() throws CacheException {
+          final Region region = getRootRegion().getSubregion(name);
+          boolean gotReplyException = false;
+          for (int i = 0; i < 1; i++) {
+            try {
+              region.put(i, new TestObjectThrowsException());
+            } catch (PdxSerializationException e) {
+              gotReplyException = true;
+            } catch (Exception e) {
+              region.getCache().getLogger().info("Got exception of type " + e.getClass().toString());
             }
-        };
-        
+          }
+          assertTrue("We should have got ReplyEception ", gotReplyException);
+        }
+      };
+
       vm0.invoke(doPuts);
-      
-      SerializableRunnable validateMulticastAfterRegionOps =
-        new CacheSerializableRunnable("validateMulticast after region ops") {
-            public void run2() throws CacheException {
-              validateMulticastOpsAfterRegionOps();
-            }
-        };
-      
-        vm0.invoke(validateMulticastAfterRegionOps);
-        vm1.invoke(validateMulticastAfterRegionOps);
-     
-        closeLocator();
-    }finally {
+
+      SerializableRunnable validateMulticastAfterRegionOps = new CacheSerializableRunnable("validateMulticast after region ops") {
+        public void run2() throws CacheException {
+          validateMulticastOpsAfterRegionOps();
+        }
+      };
+
+      vm0.invoke(validateMulticastAfterRegionOps);
+      vm1.invoke(validateMulticastAfterRegionOps);
+
+      closeLocator();
+    } finally {
       SerializableRunnable unsetSysProp = new CacheSerializableRunnable("Create Region") {
         public void run2() throws CacheException {
           CachedDeserializableFactory.STORE_ALL_VALUE_FORMS = false;
@@ -234,7 +217,11 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
       vm1.invoke(unsetSysProp);
     }
   }
-  
+
+  private void setSysProps() {
+    CachedDeserializableFactory.STORE_ALL_VALUE_FORMS = true;
+  }
+
   protected RegionAttributes getRegionAttributes() {
     AttributesFactory factory = new AttributesFactory();
     factory.setScope(Scope.DISTRIBUTED_ACK);
@@ -244,7 +231,7 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
     factory.setMulticastEnabled(true);
     return factory.create();
   }
-  
+
   public Properties getDistributedSystemProperties() {
     Properties p = new Properties();
     p.put(STATISTIC_SAMPLING_ENABLED, "true");
@@ -254,66 +241,66 @@ public class DistributedMulticastRegionDUnitTest extends JUnit4CacheTestCase {
     p.put(LOCATORS, "localhost[" + locatorPort + "]");
     p.put(LOG_LEVEL, "info");
     return p;
-  } 
-  
+  }
+
   private void validateMulticastOpsAfterRegionOps() {
     int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
     int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
-    assertTrue("Should have multicast writes or reads. Writes=  " + writes +  " ,read= " + reads, 
-        writes > 0 || reads > 0);
+    assertTrue("Should have multicast writes or reads. Writes=  " + writes + " ,read= " + reads, writes > 0 || reads > 0);
   }
-  
+
   private void validateMulticastOpsBeforeRegionOps() {
     int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
     int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
     int total = writes + reads;
-    assertTrue("Should not have any multicast writes or reads before region ops. Writes=  " + writes +  " ,read= " + reads, 
-        total == 0);
+    assertTrue("Should not have any multicast writes or reads before region ops. Writes=  " + writes + " ,read= " + reads, total == 0);
   }
-  
+
   private int startLocator() {
-    final int [] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+    final int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
     final int locatorPort = ports[0];
 
     VM locator1Vm = Host.getHost(0).getVM(locatorVM);
-      locator1Vm.invoke(new SerializableCallable() {
-        @Override
-        public Object call() {
-          final File locatorLogFile = new File(getTestMethodName() + "-locator-" + locatorPort + ".log");
-          final Properties locatorProps = new Properties();
-          locatorProps.setProperty(NAME, "LocatorWithMcast");
-          locatorProps.setProperty(MCAST_PORT, mcastport);
-          locatorProps.setProperty(MCAST_TTL, mcastttl);
-          locatorProps.setProperty(LOG_LEVEL, "info");
-          //locatorProps.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
-          try {
-            final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, null, null,
-                locatorProps);
-            System.out.println("test Locator started " + locatorPort);
-             } catch (IOException ioex) {
-            fail("Unable to create a locator with a shared configuration");
-          }
-
-          return null;
+    locator1Vm.invoke(new SerializableCallable() {
+      @Override
+      public Object call() {
+        final File locatorLogFile = new File(getTestMethodName() + "-locator-" + locatorPort + ".log");
+        final Properties locatorProps = new Properties();
+        locatorProps.setProperty(NAME, "LocatorWithMcast");
+        locatorProps.setProperty(MCAST_PORT, mcastport);
+        locatorProps.setProperty(MCAST_TTL, mcastttl);
+        locatorProps.setProperty(LOG_LEVEL, "info");
+        //locatorProps.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+        try {
+          final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, null, null, locatorProps);
+          System.out.println("test Locator started " + locatorPort);
+        } catch (IOException ioex) {
+          fail("Unable to create a locator with a shared configuration");
         }
+
+        return null;
+      }
     });
     return locatorPort;
   }
-  
+
   private void closeLocator() {
-    VM locator1Vm = Host.getHost(0).getVM(locatorVM);;
+    VM locator1Vm = Host.getHost(0).getVM(locatorVM);
+    ;
     SerializableRunnable locatorCleanup = new SerializableRunnable() {
       @Override
       public void run() {
-        System.out.println("test Locator closing " + locatorPort);;
+        System.out.println("test Locator closing " + locatorPort);
+        ;
         InternalLocator locator = InternalLocator.getLocator();
-        if (locator != null ) {
+        if (locator != null) {
           locator.stop();
-          System.out.println("test Locator closed " + locatorPort);;
+          System.out.println("test Locator closed " + locatorPort);
+          ;
         }
       }
     };
     locator1Vm.invoke(locatorCleanup);
   }
-  
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
index cc13c48..f323574 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
@@ -51,18 +51,17 @@ public abstract class AbstractLauncherIntegrationTestCase {
   
   protected static final int WAIT_FOR_PROCESS_TO_DIE_TIMEOUT = 5 * 60 * 1000; // 5 minutes
   protected static final int TIMEOUT_MILLISECONDS = WAIT_FOR_PROCESS_TO_DIE_TIMEOUT;
-  protected static final int WAIT_FOR_FILE_CREATION_TIMEOUT = 10*1000;
-  protected static final int WAIT_FOR_FILE_DELETION_TIMEOUT = 10*1000;
-  protected static final int WAIT_FOR_MBEAN_TIMEOUT = 10*1000;
-  protected static final int INTERVAL = 100;
-  protected static final int INTERVAL_MILLISECONDS = INTERVAL;
+  protected static final int WAIT_FOR_FILE_CREATION_TIMEOUT = 10*1000; // 10s
+  protected static final int WAIT_FOR_FILE_DELETION_TIMEOUT = 10*1000; // 10s
+  protected static final int WAIT_FOR_MBEAN_TIMEOUT = 10*1000; // 10s
+  protected static final int INTERVAL_MILLISECONDS = 100;
   
   private static final String EXPECTED_EXCEPTION_ADD = "<ExpectedException action=add>{}</ExpectedException>";
   private static final String EXPECTED_EXCEPTION_REMOVE = "<ExpectedException action=remove>{}</ExpectedException>";
   private static final String EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED = "MBean Not Registered In GemFire Domain";
   
   protected volatile ServerSocket socket;
-  
+
   protected volatile File pidFile;
   protected volatile File stopRequestFile;
   protected volatile File statusRequestFile;
@@ -106,7 +105,7 @@ public abstract class AbstractLauncherIntegrationTestCase {
         }
         return !file.exists();
       }
-    }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
+    }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL_MILLISECONDS);
   }
   
   protected void waitForPidToStop(final int pid, boolean throwOnTimeout) throws Exception {
@@ -115,7 +114,7 @@ public abstract class AbstractLauncherIntegrationTestCase {
       public Boolean call() throws Exception {
         return ProcessUtils.isProcessAlive(pid);
       }
-    }, WAIT_FOR_PROCESS_TO_DIE_TIMEOUT, INTERVAL);
+    }, WAIT_FOR_PROCESS_TO_DIE_TIMEOUT, INTERVAL_MILLISECONDS);
   }
   
   protected void waitForPidToStop(final int pid) throws Exception {
@@ -131,7 +130,7 @@ public abstract class AbstractLauncherIntegrationTestCase {
       public Boolean call() throws Exception {
         return !file.exists();
       }
-    }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
+    }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL_MILLISECONDS);
   }
   
   protected void waitForFileToDelete(final File file) throws Exception {
@@ -214,7 +213,7 @@ public abstract class AbstractLauncherIntegrationTestCase {
       public Boolean call() throws Exception {
         return file.exists();
       }
-    }, WAIT_FOR_FILE_CREATION_TIMEOUT, INTERVAL);
+    }, WAIT_FOR_FILE_CREATION_TIMEOUT, INTERVAL_MILLISECONDS);
   }
   
   protected void waitForFileToExist(final File file) throws Exception {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java
index d59fecb..143723e 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java
@@ -31,7 +31,7 @@ import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.JGroup
 import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
 import com.gemstone.gemfire.internal.AvailablePort;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.test.dunit.*;
 import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
 import com.gemstone.gemfire.test.junit.categories.DistributedTest;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
index 438c3f7..0aa7bbd 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
@@ -24,7 +24,7 @@ import com.gemstone.gemfire.distributed.internal.DistributionManager;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.distributed.internal.InternalLocator;
 import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.util.StopWatch;
 import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.SerializableCallable;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherMemberMXBeanIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherMemberMXBeanIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherMemberMXBeanIntegrationTest.java
index 8c570ac..bdd1fdb 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherMemberMXBeanIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LauncherMemberMXBeanIntegrationTest.java
@@ -143,6 +143,6 @@ public class LauncherMemberMXBeanIntegrationTest extends AbstractLauncherIntegra
         Set<ObjectName> mbeanNames = mbeanServer.queryNames(pattern, null);
         return !mbeanNames.isEmpty();
       }
-    }, WAIT_FOR_MBEAN_TIMEOUT, INTERVAL);
+    }, WAIT_FOR_MBEAN_TIMEOUT, INTERVAL_MILLISECONDS);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalIntegrationTest.java
index faf6d31..01c76f0 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalIntegrationTest.java
@@ -21,6 +21,8 @@ import com.gemstone.gemfire.distributed.LocatorLauncher.Builder;
 import com.gemstone.gemfire.distributed.LocatorLauncher.LocatorState;
 import com.gemstone.gemfire.distributed.internal.InternalLocator;
 import com.gemstone.gemfire.internal.*;
+import com.gemstone.gemfire.internal.net.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreatorFactory;
 import com.gemstone.gemfire.internal.process.ProcessControllerFactory;
 import com.gemstone.gemfire.internal.process.ProcessType;
 import com.gemstone.gemfire.internal.process.ProcessUtils;
@@ -325,7 +327,7 @@ public class LocatorLauncherLocalIntegrationTest extends AbstractLocatorLauncher
       return;
     }
 
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.locatorPort, 50, null, -1);
     assertTrue(this.socket.isBound());
     assertFalse(this.socket.isClosed());
     assertFalse(AvailablePort.isPortAvailable(this.locatorPort, AvailablePort.SOCKET));
@@ -542,7 +544,7 @@ public class LocatorLauncherLocalIntegrationTest extends AbstractLocatorLauncher
     }
 
     // generate one free port and then use it instead of default
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.locatorPort, 50, null, -1);
     
     this.launcher = new Builder()
         .setMemberName(getUniqueName())

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteIntegrationTest.java
index 8e978e9..a2ae73d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteIntegrationTest.java
@@ -20,12 +20,14 @@ import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
 import com.gemstone.gemfire.distributed.LocatorLauncher.Builder;
 import com.gemstone.gemfire.distributed.LocatorLauncher.LocatorState;
 import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
 import com.gemstone.gemfire.internal.AvailablePort;
 import com.gemstone.gemfire.internal.DistributionLocator;
 import com.gemstone.gemfire.internal.GemFireVersion;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.logging.InternalLogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
+import com.gemstone.gemfire.internal.net.SocketCreatorFactory;
 import com.gemstone.gemfire.internal.process.ProcessControllerFactory;
 import com.gemstone.gemfire.internal.process.ProcessStreamReader;
 import com.gemstone.gemfire.internal.process.ProcessType;
@@ -49,6 +51,7 @@ import java.lang.management.ManagementFactory;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import static com.gemstone.gemfire.distributed.ConfigurationProperties.MCAST_PORT;
@@ -397,7 +400,7 @@ public class LocatorLauncherRemoteIntegrationTest extends AbstractLocatorLaunche
 
   @Test
   public void testStartUsingPortInUseFails() throws Throwable {
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.locatorPort, 50, null, -1);
     this.locatorPort = this.socket.getLocalPort();
 
     final List<String> jvmArguments = getJvmArguments();
@@ -469,7 +472,7 @@ public class LocatorLauncherRemoteIntegrationTest extends AbstractLocatorLaunche
     String expectedString = "java.net.BindException";
     AtomicBoolean outputContainedExpectedString = new AtomicBoolean();
 
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.locatorPort, 50, null, -1);
     this.locatorPort = this.socket.getLocalPort();
 
     assertFalse(AvailablePort.isPortAvailable(this.locatorPort, AvailablePort.SOCKET));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalIntegrationTest.java
index 1baf48d..854f02d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalIntegrationTest.java
@@ -27,11 +27,12 @@ import com.gemstone.gemfire.distributed.ServerLauncher.ServerState;
 import com.gemstone.gemfire.internal.AvailablePort;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
 import com.gemstone.gemfire.internal.GemFireVersion;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.cache.AbstractCacheServer;
 import com.gemstone.gemfire.internal.cache.xmlcache.CacheCreation;
 import com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlGenerator;
 import com.gemstone.gemfire.internal.cache.xmlcache.RegionAttributesCreation;
+import com.gemstone.gemfire.internal.net.SocketCreatorFactory;
 import com.gemstone.gemfire.internal.process.ProcessControllerFactory;
 import com.gemstone.gemfire.internal.process.ProcessType;
 import com.gemstone.gemfire.internal.process.ProcessUtils;
@@ -349,7 +350,7 @@ public class ServerLauncherLocalIntegrationTest extends AbstractServerLauncherIn
     String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath();
 
     // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.serverPort, 50, null, -1);
     assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET));
     
     // build and start the server
@@ -608,7 +609,7 @@ public class ServerLauncherLocalIntegrationTest extends AbstractServerLauncherIn
     String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath();
 
     // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.serverPort, 50, null, -1);
     assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET));
     
     // build and start the server
@@ -769,7 +770,7 @@ public class ServerLauncherLocalIntegrationTest extends AbstractServerLauncherIn
 
     // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY
     final int freeTCPPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(freeTCPPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(freeTCPPort, 50, null, -1);
     
     // build and start the server
     final Builder builder = new Builder()

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteIntegrationTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteIntegrationTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteIntegrationTest.java
index 6d20673..f1a8d41 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteIntegrationTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteIntegrationTest.java
@@ -25,13 +25,14 @@ import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.internal.AvailablePort;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
 import com.gemstone.gemfire.internal.GemFireVersion;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.cache.AbstractCacheServer;
 import com.gemstone.gemfire.internal.cache.xmlcache.CacheCreation;
 import com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlGenerator;
 import com.gemstone.gemfire.internal.cache.xmlcache.RegionAttributesCreation;
 import com.gemstone.gemfire.internal.logging.InternalLogWriter;
 import com.gemstone.gemfire.internal.logging.LocalLogWriter;
+import com.gemstone.gemfire.internal.net.SocketCreatorFactory;
 import com.gemstone.gemfire.internal.process.*;
 import com.gemstone.gemfire.test.junit.categories.FlakyTest;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
@@ -427,7 +428,7 @@ public class ServerLauncherRemoteIntegrationTest extends AbstractServerLauncherR
   @Test
   public void testStartUsingDisableDefaultServerSkipsPortCheck() throws Throwable {
     // make serverPort in use
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.serverPort, 50, null, -1);
     assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET));
     
     // build and start the server
@@ -551,7 +552,7 @@ public class ServerLauncherRemoteIntegrationTest extends AbstractServerLauncherR
   @Test
   public void testStartUsingServerPortInUseFails() throws Throwable {
     // make serverPort in use
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.serverPort, 50, null, -1);
     assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET));
     
     final List<String> jvmArguments = getJvmArguments();
@@ -798,7 +799,7 @@ public class ServerLauncherRemoteIntegrationTest extends AbstractServerLauncherR
     AtomicBoolean outputContainedExpectedString = new AtomicBoolean();
 
     // make serverPort in use
-    this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1);
+    this.socket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(this.serverPort, 50, null, -1);
     assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET));
     
     // launch server

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
index 80fbd9b..5c62a31 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/DistributionConfigJUnitTest.java
@@ -112,9 +112,9 @@ public class DistributionConfigJUnitTest {
     //TODO - This makes no sense. One has no idea what the correct expected number of attributes are.
     assertEquals(27, boolList.size());
     assertEquals(33, intList.size());
-    assertEquals(74, stringList.size());
+    assertEquals(73, stringList.size());
     assertEquals(5, fileList.size());
-    assertEquals(3, otherList.size());
+    assertEquals(4, otherList.size());
   }
 
   @Test
@@ -355,4 +355,32 @@ public class DistributionConfigJUnitTest {
     DistributionConfig config = new DistributionConfigImpl(props);
     assertEquals(config.getSecurityProps().size(), 4);
   }
+
+  @Test
+  public void testSSLEnabledComponents() {
+    Properties props = new Properties();
+    props.put(CLUSTER_SSL_ENABLED, "true");
+    props.put(SSL_ENABLED_COMPONENTS, "all");
+
+    DistributionConfig config = new DistributionConfigImpl(props);
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testSSLEnabledComponentsLegacyFail() {
+    Properties props = new Properties();
+    props.put(CLUSTER_SSL_ENABLED, "true");
+    props.put(HTTP_SERVICE_SSL_ENABLED, "true");
+    props.put(SSL_ENABLED_COMPONENTS, "all");
+
+    DistributionConfig config = new DistributionConfigImpl(props);
+  }
+  @Test
+  public void testSSLEnabledComponentsLegacyPass() {
+    Properties props = new Properties();
+    props.put(CLUSTER_SSL_ENABLED, "true");
+    props.put(HTTP_SERVICE_SSL_ENABLED, "true");
+    props.put(SSL_ENABLED_COMPONENTS, "");
+
+    DistributionConfig config = new DistributionConfigImpl(props);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/StartupMessageDataJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/StartupMessageDataJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/StartupMessageDataJUnitTest.java
index 6aa4248..787aae0 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/StartupMessageDataJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/StartupMessageDataJUnitTest.java
@@ -30,8 +30,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.DataSerializer;
-import com.gemstone.gemfire.internal.InternalDataSerializer;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.ByteArrayData;
 import com.gemstone.gemfire.internal.admin.remote.DistributionLocatorId;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
index 9c7180e..996fbf6 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
@@ -27,7 +27,7 @@ import com.gemstone.gemfire.distributed.internal.membership.gms.membership.GMSJo
 import com.gemstone.gemfire.distributed.internal.membership.gms.messages.*;
 import com.gemstone.gemfire.distributed.internal.membership.gms.mgr.GMSMembershipManager;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 import org.apache.logging.log4j.Level;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
index fbc4189..421a381 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/NetViewJUnitTest.java
@@ -30,7 +30,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import com.gemstone.gemfire.distributed.internal.DistributionManager;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.test.junit.categories.UnitTest;
 
 @Category(UnitTest.class)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
index d29553c..e487e39 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/fd/GMSHealthMonitorJUnitTest.java
@@ -31,7 +31,7 @@ import com.gemstone.gemfire.distributed.internal.membership.gms.messages.Heartbe
 import com.gemstone.gemfire.distributed.internal.membership.gms.messages.HeartbeatRequestMessage;
 import com.gemstone.gemfire.distributed.internal.membership.gms.messages.SuspectMembersMessage;
 import com.gemstone.gemfire.distributed.internal.membership.gms.messages.SuspectRequest;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.Version;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 import org.jgroups.util.UUID;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
index fcf77a0..b98de78 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
@@ -25,7 +25,7 @@ import com.gemstone.gemfire.distributed.internal.membership.MemberFactory;
 import com.gemstone.gemfire.distributed.internal.membership.MembershipManager;
 import com.gemstone.gemfire.distributed.internal.membership.NetView;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.Version;
 import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
index 954aff4..3cb91f7 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
@@ -34,7 +34,7 @@ import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedM
 import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorRequest;
 import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorResponse;
 import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.SocketCreator;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.Version;
 import com.gemstone.gemfire.test.dunit.Host;
 import com.gemstone.gemfire.test.dunit.Invoke;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireStatSamplerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireStatSamplerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireStatSamplerJUnitTest.java
index ef07633..48fe4dd 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireStatSamplerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/GemFireStatSamplerJUnitTest.java
@@ -23,6 +23,7 @@ import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.internal.GemFireStatSampler.LocalStatListenerImpl;
 import com.gemstone.gemfire.internal.cache.control.HeapMemoryMonitor;
 import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.statistics.SampleCollector;
 import com.gemstone.gemfire.internal.statistics.StatArchiveHandler;
 import com.gemstone.gemfire.internal.statistics.StatArchiveHandlerConfig;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/JSSESocketJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/JSSESocketJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/JSSESocketJUnitTest.java
deleted file mode 100755
index 30899be..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/JSSESocketJUnitTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal;
-
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.test.dunit.ThreadUtils;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-import com.gemstone.gemfire.util.test.TestUtil;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-
-import java.io.*;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.Properties;
-
-import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * Test creation of server sockets and client sockets with various JSSE
- * configurations.
- */
-@Category(IntegrationTest.class)
-public class JSSESocketJUnitTest {
-  public
-  @Rule
-  TestName name = new TestName();
-
-  private static final org.apache.logging.log4j.Logger logger = LogService.getLogger();
-
-  ServerSocket acceptor;
-  Socket server;
-
-  static ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-  private int randport = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-
-  @Before
-  public void setUp() throws Exception {
-    System.out.println("\n\n########## setup " + name.getMethodName() + " ############\n\n");
-    server = null;
-    acceptor = null;
-    baos.reset();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    System.out.println("\n\n########## teardown " + name.getMethodName() + " ############\n\n");
-
-    if (server != null) {
-      server.close();
-    }
-    if (acceptor != null) {
-      acceptor.close();
-    }
-    System.out.println(baos.toString());
-  }
-
-  //----- test methods ------
-
-  @Test
-  public void testSSLSocket() throws Exception {
-    final Object[] receiver = new Object[1];
-
-    TestAppender.create();
-
-    // Get original base log level
-    Level originalBaseLevel = LogService.getBaseLogLevel();
-    try {
-      // Set base log level to debug to log the SSL messages
-      LogService.setBaseLogLevel(Level.DEBUG);
-      {
-        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + MCAST_PORT, "0");
-        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_ENABLED, "true");
-        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_REQUIRE_AUTHENTICATION, "true");
-        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_CIPHERS, "any");
-        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_PROTOCOLS, "TLSv1.2");
-
-        File jks = findTestJKS();
-        System.setProperty("javax.net.ssl.trustStore", jks.getCanonicalPath());
-        System.setProperty("javax.net.ssl.trustStorePassword", "password");
-        System.setProperty("javax.net.ssl.keyStore", jks.getCanonicalPath());
-        System.setProperty("javax.net.ssl.keyStorePassword", "password");
-      }
-
-      assertTrue(SocketCreator.getDefaultInstance().useSSL());
-
-      Thread serverThread = startServer(receiver);
-
-      Socket client = SocketCreator.getDefaultInstance().connectForServer(InetAddress.getByName("localhost"), randport);
-
-      ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
-      String expected = new String("testing " + name.getMethodName());
-      oos.writeObject(expected);
-      oos.flush();
-
-      ThreadUtils.join(serverThread, 30 * 1000);
-
-      client.close();
-      if (expected.equals(receiver[0])) {
-        System.out.println("received " + receiver[0] + " as expected.");
-      } else {
-        throw new Exception("Expected \"" + expected + "\" but received \"" + receiver[0] + "\"");
-      }
-
-      String logOutput = baos.toString();
-      StringReader sreader = new StringReader(logOutput);
-      LineNumberReader reader = new LineNumberReader(sreader);
-      int peerLogCount = 0;
-      String line = null;
-      while ((line = reader.readLine()) != null) {
-
-        if (line.matches(".*peer CN=.*")) {
-          System.out.println("Found peer log statement.");
-          peerLogCount++;
-        }
-      }
-      if (peerLogCount != 2) {
-        throw new Exception("Expected to find to peer identities logged.");
-      }
-    } finally {
-      // Reset original base log level
-      LogService.setBaseLogLevel(originalBaseLevel);
-    }
-  }
-
-  /**
-   * not actually related to this test class, but this is as good a place
-   * as any for this little test of the client-side ability to tell gemfire
-   * to use a given socket factory.  We just test the connectForClient method
-   * to see if it's used
-   */
-  @Test
-  public void testClientSocketFactory() {
-    System.getProperties().put(DistributionConfig.GEMFIRE_PREFIX + "clientSocketFactory",
-        TSocketFactory.class.getName());
-    System.getProperties().remove(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_ENABLED);
-    SocketCreator.getDefaultInstance(new Properties());
-    factoryInvoked = false;
-    try {
-      try {
-        Socket sock = SocketCreator.getDefaultInstance().connectForClient("localhost", 12345,
-            0);
-        sock.close();
-        fail("socket factory was not invoked");
-      } catch (IOException e) {
-        assertTrue("socket factory was not invoked: " + factoryInvoked, factoryInvoked);
-      }
-    } finally {
-      System.getProperties().remove(DistributionConfig.GEMFIRE_PREFIX + "clientSocketFactory");
-      SocketCreator.getDefaultInstance().initializeClientSocketFactory();
-    }
-  }
-
-  static boolean factoryInvoked;
-
-  public static class TSocketFactory implements com.gemstone.gemfire.distributed.ClientSocketFactory {
-    public TSocketFactory() {
-    }
-
-    public Socket createSocket(InetAddress address, int port) throws IOException {
-      JSSESocketJUnitTest.factoryInvoked = true;
-      throw new IOException("splort!");
-    }
-  }
-
-  //------------- utilities -----
-
-  private File findTestJKS() {
-    return new File(TestUtil.getResourcePath(getClass(), "/ssl/trusted.keystore"));
-  }
-
-  private Thread startServer(final Object[] receiver) throws Exception {
-    final ServerSocket ss = SocketCreator.getDefaultInstance().createServerSocket(randport, 0, InetAddress.getByName("localhost"));
-
-    Thread t = new Thread(new Runnable() {
-      public void run() {
-        try {
-          Socket s = ss.accept();
-          SocketCreator.getDefaultInstance().configureServerSSLSocket(s);
-          ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
-          receiver[0] = ois.readObject();
-          server = s;
-          acceptor = ss;
-        } catch (Exception e) {
-          e.printStackTrace();
-          receiver[0] = e;
-        }
-      }
-    }, name.getMethodName() + "-server");
-    t.start();
-    return t;
-  }
-
-  public static final class TestAppender extends AbstractAppender {
-    private static final String APPENDER_NAME = TestAppender.class.getName();
-    private final static String SOCKET_CREATOR_CLASSNAME = SocketCreator.class.getName();
-
-    private TestAppender() {
-      super(APPENDER_NAME, null, PatternLayout.createDefaultLayout());
-      start();
-    }
-
-    public static Appender create() {
-      Appender appender = new TestAppender();
-      Logger socketCreatorLogger = (Logger) LogManager.getLogger(SOCKET_CREATOR_CLASSNAME);
-      LoggerConfig config = socketCreatorLogger.getContext().getConfiguration().getLoggerConfig(SOCKET_CREATOR_CLASSNAME);
-      config.addAppender(appender, Level.DEBUG, null);
-      return appender;
-    }
-
-    @SuppressWarnings("synthetic-access")
-    @Override
-    public void append(final LogEvent event) {
-      try {
-        baos.write(new String(event.getMessage().getFormattedMessage() + "\n").getBytes());
-      } catch (IOException ioex) {
-        logger.warn(ioex);
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
index ff93ad7..925dcef 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/SSLConfigJUnitTest.java
@@ -101,24 +101,6 @@ public class SSLConfigJUnitTest {
   }
   
   @Test
-  public void testMCastPortWithSSL() throws Exception {
-    Properties props = new Properties( );
-    // default mcast-port is not 0.
-    props.setProperty(CLUSTER_SSL_ENABLED, "true");
-    
-    try {
-      new DistributionConfigImpl( props );
-    } catch ( IllegalArgumentException e ) {
-      if (! e.toString().matches( ".*Could not set \"ssl-enabled.*" ) ) { // TODO: what if this isn't thrown at all?? Is it expected?
-        throw new Exception( "did not get expected exception, got this instead...", e );
-      }
-    }
-
-    props.setProperty(MCAST_PORT, "0");
-    new DistributionConfigImpl( props );
-  }
-  
-  @Test
   public void testMCastPortWithClusterSSL() throws Exception {
     Properties props = new Properties( );
     // default mcast-port is not 0.

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
index 5d7c9f4..9a101fb 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/SimpleStatSamplerJUnitTest.java
@@ -33,6 +33,7 @@ import org.junit.rules.TestName;
 import com.gemstone.gemfire.CancelCriterion;
 import com.gemstone.gemfire.Statistics;
 import com.gemstone.gemfire.StatisticsType;
+import com.gemstone.gemfire.internal.net.SocketCreator;
 import com.gemstone.gemfire.internal.stats50.VMStats50;
 import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
 
@@ -105,7 +106,7 @@ public class SimpleStatSamplerJUnitTest extends StatSamplerTestCase {
     
     assertEquals(getStatisticsManager().getId(), statSampler.getSystemId());
     assertTrue(statSampler.getSystemStartTime() <= System.currentTimeMillis());
-    assertEquals(SocketCreator.getHostName(SocketCreator.getLocalHost()), 
+    assertEquals(SocketCreator.getHostName(SocketCreator.getLocalHost()),
                  statSampler.getSystemDirectoryPath());
 
     VMStatsContract vmStats = statSampler.getVMStats();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserJUnitTest.java
deleted file mode 100644
index cc71738..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserJUnitTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal;
-
-import static org.junit.Assert.*;
-
-import java.net.Socket;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.dunit.Wait;
-import com.gemstone.gemfire.test.dunit.WaitCriterion;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-/**
- * Tests the default SocketCloser.
- */
-@Category(UnitTest.class)
-public class SocketCloserJUnitTest {
-
-  private SocketCloser socketCloser;
-  
-  @Before
-  public void setUp() throws Exception {
-    this.socketCloser = createSocketCloser();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    this.socketCloser.close();
-  }
-  
-  private Socket createClosableSocket() {
-    return new Socket();
-  }
-
-  protected SocketCloser createSocketCloser() {
-    return new SocketCloser();
-  }
-  
-  /**
-   * Test that close requests are async.
-   */
-  @Test
-  public void testAsync() {
-    final CountDownLatch cdl = new CountDownLatch(1);
-    final AtomicInteger waitingToClose = new AtomicInteger(0);
-    Runnable r = new Runnable() {
-      @Override
-      public void run() {
-        try {
-          waitingToClose.incrementAndGet();
-          cdl.await();
-        } catch (InterruptedException e) {
-        }
-      }
-    };
-    
-    final int SOCKET_COUNT = 100;
-    final Socket[] aSockets = new Socket[SOCKET_COUNT];
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      aSockets[i] = createClosableSocket();
-    }
-    // Schedule a 100 sockets for async close.
-    // They should all be stuck on cdl.
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      this.socketCloser.asyncClose(aSockets[i], "A", r);
-    }
-    // Make sure the sockets have not been closed
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      assertEquals(false, aSockets[i].isClosed());
-    }
-    final Socket[] bSockets = new Socket[SOCKET_COUNT];
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      bSockets[i] = createClosableSocket();
-    }
-    // Schedule a 100 sockets for async close.
-    // They should all be stuck on cdl.
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      this.socketCloser.asyncClose(bSockets[i], "B", r);
-    }
-    // Make sure the sockets have not been closed
-    for (int i=0; i < SOCKET_COUNT; i++) {
-      assertEquals(false, bSockets[i].isClosed());
-    }
-    // close the socketCloser first to verify that the sockets
-    // that have already been scheduled will be still be closed.
-    this.socketCloser.releaseResourcesForAddress("A");
-    this.socketCloser.close();
-    // Each thread pool (one for A and one for B) has a max of 8 threads.
-    // So verify that this many are currently waiting on cdl.
-    {
-      final int maxThreads = this.socketCloser.getMaxThreads();
-      WaitCriterion wc = new WaitCriterion() {
-        public boolean done() {
-          return waitingToClose.get() == 2*maxThreads;
-        }
-        public String description() {
-          return "expected " + 2*maxThreads + " waiters but found only " + waitingToClose.get();
-        }
-      };
-      Wait.waitForCriterion(wc, 5000, 10, true);
-    }
-    // now count down the latch that allows the sockets to close
-    cdl.countDown();
-    // now all the sockets should get closed; use a wait criteria
-    // since a thread pool is doing to closes
-    {
-      WaitCriterion wc = new WaitCriterion() {
-        public boolean done() {
-          for (int i=0; i < SOCKET_COUNT; i++) {
-            if (!aSockets[i].isClosed() || !bSockets[i].isClosed()) {
-              return false;
-            }
-          }
-          return true;
-        }
-        public String description() {
-          return "one or more sockets did not close";
-        }
-      };
-      Wait.waitForCriterion(wc, 5000, 10, true);
-    }
-  }
-  
-  /**
-   * Verify that requesting an asyncClose on an already
-   * closed socket is a noop.
-   */
-  @Test
-  public void testClosedSocket() throws Exception {
-    final AtomicBoolean runnableCalled = new AtomicBoolean();
-    Runnable r = new Runnable() {
-      @Override
-      public void run() {
-        runnableCalled.set(true);
-      }
-    };
-    
-    Socket s = createClosableSocket();
-    s.close();
-    this.socketCloser.asyncClose(s, "A", r);
-    Wait.pause(10);
-    assertEquals(false, runnableCalled.get());
-  }
-  
-  /**
-   * Verify that a closed SocketCloser will still close an open socket
-   */
-  @Test
-  public void testClosedSocketCloser() {
-    final AtomicBoolean runnableCalled = new AtomicBoolean();
-    Runnable r = new Runnable() {
-      @Override
-      public void run() {
-        runnableCalled.set(true);
-      }
-    };
-    
-    final Socket s = createClosableSocket();
-    this.socketCloser.close();
-    this.socketCloser.asyncClose(s, "A", r);
-    WaitCriterion wc = new WaitCriterion() {
-      public boolean done() {
-        return runnableCalled.get() && s.isClosed(); 
-      }
-      public String description() {
-        return "runnable was not called or socket was not closed";
-      }
-    };
-    Wait.waitForCriterion(wc, 5000, 10, true);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserWithWaitJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserWithWaitJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserWithWaitJUnitTest.java
deleted file mode 100644
index 0ba41ba..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/SocketCloserWithWaitJUnitTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.internal;
-
-import java.util.concurrent.TimeUnit;
-
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-/**
- * Tests SocketCloser with a wait time. The default SocketCloser does not wait.
- * This test configures a closer much like the one used by CacheClientNotifier.
- */
-@Category(UnitTest.class)
-public class SocketCloserWithWaitJUnitTest extends SocketCloserJUnitTest {
-
-  @Override
-  protected SocketCloser createSocketCloser() {
-    return new SocketCloser(
-        SocketCloser.ASYNC_CLOSE_POOL_KEEP_ALIVE_SECONDS,
-        1, // max threads
-        1, TimeUnit.NANOSECONDS);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/net/JSSESocketJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/net/JSSESocketJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/JSSESocketJUnitTest.java
new file mode 100755
index 0000000..63c556b
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/JSSESocketJUnitTest.java
@@ -0,0 +1,260 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.net;
+
+import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.StringReader;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.appender.AbstractAppender;
+import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TestName;
+
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.test.dunit.ThreadUtils;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+import com.gemstone.gemfire.util.test.TestUtil;
+
+/**
+ * Test creation of server sockets and client sockets with various JSSE
+ * configurations.
+ */
+@Category(IntegrationTest.class)
+public class JSSESocketJUnitTest {
+
+  public
+  @Rule
+  TestName name = new TestName();
+
+  private static final org.apache.logging.log4j.Logger logger = LogService.getLogger();
+
+  ServerSocket acceptor;
+  Socket server;
+
+  static ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+  private int randport = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+
+  @Before
+  public void setUp() throws Exception {
+    System.out.println("\n\n########## setup " + name.getMethodName() + " ############\n\n");
+    server = null;
+    acceptor = null;
+    baos.reset();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    System.out.println("\n\n########## teardown " + name.getMethodName() + " ############\n\n");
+
+    if (server != null) {
+      server.close();
+    }
+    if (acceptor != null) {
+      acceptor.close();
+    }
+    System.out.println(baos.toString());
+  }
+
+  //----- test methods ------
+
+  @Test
+  public void testSSLSocket() throws Exception {
+    final Object[] receiver = new Object[1];
+
+    TestAppender.create();
+
+    // Get original base log level
+    Level originalBaseLevel = LogService.getBaseLogLevel();
+    try {
+      // Set base log level to debug to log the SSL messages
+      LogService.setBaseLogLevel(Level.DEBUG);
+      {
+        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + MCAST_PORT, "0");
+        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_ENABLED, "true");
+        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_REQUIRE_AUTHENTICATION, "true");
+        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_CIPHERS, "any");
+        System.setProperty(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_PROTOCOLS, "TLSv1.2");
+
+        File jks = findTestJKS();
+        System.setProperty("javax.net.ssl.trustStore", jks.getCanonicalPath());
+        System.setProperty("javax.net.ssl.trustStorePassword", "password");
+        System.setProperty("javax.net.ssl.keyStore", jks.getCanonicalPath());
+        System.setProperty("javax.net.ssl.keyStorePassword", "password");
+      }
+
+      assertTrue(SocketCreatorFactory.getClusterSSLSocketCreator().useSSL());
+
+      final ServerSocket serverSocket = SocketCreatorFactory.getClusterSSLSocketCreator().createServerSocket(randport, 0, InetAddress.getByName("localhost"));
+
+      Thread serverThread = startServer(serverSocket, receiver);
+
+      Socket client = SocketCreatorFactory.getClusterSSLSocketCreator().connectForServer(InetAddress.getByName("localhost"), randport);
+
+      ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
+      String expected = new String("testing " + name.getMethodName());
+      oos.writeObject(expected);
+      oos.flush();
+
+      ThreadUtils.join(serverThread, 30 * 1000);
+
+      client.close();
+      serverSocket.close();
+      if (expected.equals(receiver[0])) {
+        System.out.println("received " + receiver[0] + " as expected.");
+      } else {
+        throw new Exception("Expected \"" + expected + "\" but received \"" + receiver[0] + "\"");
+      }
+
+      String logOutput = baos.toString();
+      StringReader sreader = new StringReader(logOutput);
+      LineNumberReader reader = new LineNumberReader(sreader);
+      int peerLogCount = 0;
+      String line = null;
+      while ((line = reader.readLine()) != null) {
+
+        if (line.matches(".*peer CN=.*")) {
+          System.out.println("Found peer log statement.");
+          peerLogCount++;
+        }
+      }
+      if (peerLogCount != 2) {
+        throw new Exception("Expected to find to peer identities logged.");
+      }
+    } finally {
+      // Reset original base log level
+      LogService.setBaseLogLevel(originalBaseLevel);
+      SocketCreatorFactory.close();
+    }
+  }
+
+  /**
+   * not actually related to this test class, but this is as good a place
+   * as any for this little test of the client-side ability to tell gemfire
+   * to use a given socket factory.  We just test the connectForClient method
+   * to see if it's used
+   */
+  @Test
+  public void testClientSocketFactory() {
+    System.getProperties().put(DistributionConfig.GEMFIRE_PREFIX + "clientSocketFactory", TSocketFactory.class.getName());
+    System.getProperties().remove(DistributionConfig.GEMFIRE_PREFIX + CLUSTER_SSL_ENABLED);
+    factoryInvoked = false;
+    try {
+      try {
+        Socket sock = SocketCreatorFactory.getClusterSSLSocketCreator().connectForClient("localhost", 12345, 0);
+        sock.close();
+        fail("socket factory was invoked");
+      } catch (IOException e) {
+        assertTrue("socket factory was not invoked: " + factoryInvoked, factoryInvoked);
+      }
+    } finally {
+      System.getProperties().remove(DistributionConfig.GEMFIRE_PREFIX + "clientSocketFactory");
+      SocketCreatorFactory.getClusterSSLSocketCreator().initializeClientSocketFactory();
+    }
+  }
+
+  static boolean factoryInvoked;
+
+  public static class TSocketFactory implements com.gemstone.gemfire.distributed.ClientSocketFactory {
+
+    public TSocketFactory() {
+    }
+
+    public Socket createSocket(InetAddress address, int port) throws IOException {
+      JSSESocketJUnitTest.factoryInvoked = true;
+      throw new IOException("splort!");
+    }
+  }
+
+  //------------- utilities -----
+
+  protected File findTestJKS() {
+    return new File(TestUtil.getResourcePath(getClass(), "/ssl/trusted.keystore"));
+  }
+
+  private Thread startServer(final ServerSocket serverSocket, final Object[] receiver) throws Exception {
+    Thread t = new Thread(new Runnable() {
+      public void run() {
+        try {
+          Socket s = serverSocket.accept();
+          SocketCreatorFactory.getClusterSSLSocketCreator().configureServerSSLSocket(s);
+          ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
+          receiver[0] = ois.readObject();
+          server = s;
+          acceptor = serverSocket;
+        } catch (Exception e) {
+          e.printStackTrace();
+          receiver[0] = e;
+        }
+      }
+    }, name.getMethodName() + "-server");
+    t.start();
+    return t;
+  }
+
+  public static final class TestAppender extends AbstractAppender {
+
+    private static final String APPENDER_NAME = TestAppender.class.getName();
+    private final static String SOCKET_CREATOR_CLASSNAME = SocketCreator.class.getName();
+
+    private TestAppender() {
+      super(APPENDER_NAME, null, PatternLayout.createDefaultLayout());
+      start();
+    }
+
+    public static Appender create() {
+      Appender appender = new TestAppender();
+      Logger socketCreatorLogger = (Logger) LogManager.getLogger(SOCKET_CREATOR_CLASSNAME);
+      LoggerConfig config = socketCreatorLogger.getContext().getConfiguration().getLoggerConfig(SOCKET_CREATOR_CLASSNAME);
+      config.addAppender(appender, Level.DEBUG, null);
+      return appender;
+    }
+
+    @SuppressWarnings("synthetic-access")
+    @Override
+    public void append(final LogEvent event) {
+      try {
+        baos.write(new String(event.getMessage().getFormattedMessage() + "\n").getBytes());
+      } catch (IOException ioex) {
+        logger.warn(ioex);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserJUnitTest.java
new file mode 100644
index 0000000..2063063
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserJUnitTest.java
@@ -0,0 +1,194 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.net;
+
+import static org.junit.Assert.*;
+
+import java.net.Socket;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.internal.net.SocketCloser;
+import com.gemstone.gemfire.test.dunit.Wait;
+import com.gemstone.gemfire.test.dunit.WaitCriterion;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+/**
+ * Tests the default SocketCloser.
+ */
+@Category(UnitTest.class)
+public class SocketCloserJUnitTest {
+
+  private SocketCloser socketCloser;
+  
+  @Before
+  public void setUp() throws Exception {
+    this.socketCloser = createSocketCloser();
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    this.socketCloser.close();
+  }
+  
+  private Socket createClosableSocket() {
+    return new Socket();
+  }
+
+  protected SocketCloser createSocketCloser() {
+    return new SocketCloser();
+  }
+  
+  /**
+   * Test that close requests are async.
+   */
+  @Test
+  public void testAsync() {
+    final CountDownLatch cdl = new CountDownLatch(1);
+    final AtomicInteger waitingToClose = new AtomicInteger(0);
+    Runnable r = new Runnable() {
+      @Override
+      public void run() {
+        try {
+          waitingToClose.incrementAndGet();
+          cdl.await();
+        } catch (InterruptedException e) {
+        }
+      }
+    };
+    
+    final int SOCKET_COUNT = 100;
+    final Socket[] aSockets = new Socket[SOCKET_COUNT];
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      aSockets[i] = createClosableSocket();
+    }
+    // Schedule a 100 sockets for async close.
+    // They should all be stuck on cdl.
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      this.socketCloser.asyncClose(aSockets[i], "A", r);
+    }
+    // Make sure the sockets have not been closed
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      assertEquals(false, aSockets[i].isClosed());
+    }
+    final Socket[] bSockets = new Socket[SOCKET_COUNT];
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      bSockets[i] = createClosableSocket();
+    }
+    // Schedule a 100 sockets for async close.
+    // They should all be stuck on cdl.
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      this.socketCloser.asyncClose(bSockets[i], "B", r);
+    }
+    // Make sure the sockets have not been closed
+    for (int i=0; i < SOCKET_COUNT; i++) {
+      assertEquals(false, bSockets[i].isClosed());
+    }
+    // close the socketCloser first to verify that the sockets
+    // that have already been scheduled will be still be closed.
+    this.socketCloser.releaseResourcesForAddress("A");
+    this.socketCloser.close();
+    // Each thread pool (one for A and one for B) has a max of 8 threads.
+    // So verify that this many are currently waiting on cdl.
+    {
+      final int maxThreads = this.socketCloser.getMaxThreads();
+      WaitCriterion wc = new WaitCriterion() {
+        public boolean done() {
+          return waitingToClose.get() == 2*maxThreads;
+        }
+        public String description() {
+          return "expected " + 2*maxThreads + " waiters but found only " + waitingToClose.get();
+        }
+      };
+      Wait.waitForCriterion(wc, 5000, 10, true);
+    }
+    // now count down the latch that allows the sockets to close
+    cdl.countDown();
+    // now all the sockets should get closed; use a wait criteria
+    // since a thread pool is doing to closes
+    {
+      WaitCriterion wc = new WaitCriterion() {
+        public boolean done() {
+          for (int i=0; i < SOCKET_COUNT; i++) {
+            if (!aSockets[i].isClosed() || !bSockets[i].isClosed()) {
+              return false;
+            }
+          }
+          return true;
+        }
+        public String description() {
+          return "one or more sockets did not close";
+        }
+      };
+      Wait.waitForCriterion(wc, 5000, 10, true);
+    }
+  }
+  
+  /**
+   * Verify that requesting an asyncClose on an already
+   * closed socket is a noop.
+   */
+  @Test
+  public void testClosedSocket() throws Exception {
+    final AtomicBoolean runnableCalled = new AtomicBoolean();
+    Runnable r = new Runnable() {
+      @Override
+      public void run() {
+        runnableCalled.set(true);
+      }
+    };
+    
+    Socket s = createClosableSocket();
+    s.close();
+    this.socketCloser.asyncClose(s, "A", r);
+    Wait.pause(10);
+    assertEquals(false, runnableCalled.get());
+  }
+  
+  /**
+   * Verify that a closed SocketCloser will still close an open socket
+   */
+  @Test
+  public void testClosedSocketCloser() {
+    final AtomicBoolean runnableCalled = new AtomicBoolean();
+    Runnable r = new Runnable() {
+      @Override
+      public void run() {
+        runnableCalled.set(true);
+      }
+    };
+    
+    final Socket s = createClosableSocket();
+    this.socketCloser.close();
+    this.socketCloser.asyncClose(s, "A", r);
+    WaitCriterion wc = new WaitCriterion() {
+      public boolean done() {
+        return runnableCalled.get() && s.isClosed(); 
+      }
+      public String description() {
+        return "runnable was not called or socket was not closed";
+      }
+    };
+    Wait.waitForCriterion(wc, 5000, 10, true);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/399a6387/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserWithWaitJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserWithWaitJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserWithWaitJUnitTest.java
new file mode 100644
index 0000000..82e7bdc
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/net/SocketCloserWithWaitJUnitTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.internal.net;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+/**
+ * Tests SocketCloser with a wait time. The default SocketCloser does not wait.
+ * This test configures a closer much like the one used by CacheClientNotifier.
+ */
+@Category(UnitTest.class)
+public class SocketCloserWithWaitJUnitTest extends SocketCloserJUnitTest {
+
+  @Override
+  protected SocketCloser createSocketCloser() {
+    return new SocketCloser(
+        SocketCloser.ASYNC_CLOSE_POOL_KEEP_ALIVE_SECONDS,
+        1, // max threads
+        1, TimeUnit.NANOSECONDS);
+  }
+}