GEODE-2788: Add official Socket timeout parameter when connecting to 
servers/locators

When connecting from the client to the servers/locators, if the 
servers/locators is not started, the connection can not be established and a 
Socket timeout occurs.
This timeout value is 59 seconds by default. This timeout value is too long. 
This timeout value can be changed by specifying the unofficial parameter 
"gemfire.PoolImpl.HANDSHAKE_TIMEOUT" in java system property, but I 
corresponded so that it can be specified by official parameters.
The official parameters are specified by the attribute of Pool.(default:59000 
ms)

For example, cache.xml like this:
<pool name="MyPool" socket-connect-timeout="15000">
  <locator host="localhost" port="10334" />
</pool>

API like this:
ClientCacheFactory().addPoolLocator("localhost", 
10334).setPoolSocketConnecTimeout(15000);
 or
PoolManager.createFactory().addServer("localhost", 
40404).setSocketConnectTimeout(15000);


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

Branch: refs/heads/feature/GEM-1483
Commit: 61b1d0c48f9ddd7e77367e2039a9c03900168823
Parents: 8c41fd3
Author: masaki.yamakawa <masaki.yamak...@ulsystems.co.jp>
Authored: Sun Apr 23 00:44:08 2017 +0900
Committer: Udo Kohlmeyer <ukohlme...@pivotal.io>
Committed: Fri Jun 9 16:04:17 2017 -0700

----------------------------------------------------------------------
 .../geode/cache/client/ClientCacheFactory.java  | 15 +++++++++++
 .../org/apache/geode/cache/client/Pool.java     |  7 ++++++
 .../apache/geode/cache/client/PoolFactory.java  | 20 +++++++++++++++
 .../geode/cache/client/internal/PoolImpl.java   | 21 ++++++++++------
 .../geode/internal/cache/PoolFactoryImpl.java   | 16 ++++++++++++
 .../geode/internal/cache/xmlcache/CacheXml.java |  1 +
 .../cache/xmlcache/CacheXmlGenerator.java       |  6 +++++
 .../internal/cache/xmlcache/CacheXmlParser.java |  4 +++
 .../geode.apache.org/schema/cache/cache-1.0.xsd |  3 ++-
 .../client/ClientCacheFactoryJUnitTest.java     | 26 ++++++++++++++++----
 .../AutoConnectionSourceImplJUnitTest.java      |  4 +++
 .../internal/ConnectionPoolImplJUnitTest.java   |  6 ++++-
 .../client/internal/QueueManagerJUnitTest.java  |  4 +++
 .../ClientCacheFactoryJUnitTest_single_pool.xml | 11 +++++----
 .../sanctionedDataSerializables.txt             |  4 +--
 15 files changed, 127 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/cache/client/ClientCacheFactory.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/cache/client/ClientCacheFactory.java
 
b/geode-core/src/main/java/org/apache/geode/cache/client/ClientCacheFactory.java
index 4839a7c..8f48862 100644
--- 
a/geode-core/src/main/java/org/apache/geode/cache/client/ClientCacheFactory.java
+++ 
b/geode-core/src/main/java/org/apache/geode/cache/client/ClientCacheFactory.java
@@ -274,6 +274,21 @@ public class ClientCacheFactory {
   }
 
   /**
+   * Sets the socket connect timeout for this pool. The number of milli 
seconds specified as socket
+   * timeout when the client connects to the servers/locators. A timeout of 
zero is interpreted as
+   * an infinite timeout. The connection will then block until established or 
an error occurs.
+   *
+   * @param socketConnectTimeout timeout in milliseconds when the client 
connects to the servers
+   * @return a reference to <code>this</code>
+   * @throws IllegalArgumentException if <code>socketConnectTimeout</code> is 
less than or equal to
+   *         <code>-1</code>.
+   */
+  public ClientCacheFactory setPoolSocketConnectTimeout(int 
socketConnectTimeout) {
+    getPoolFactory().setSocketConnectTimeout(socketConnectTimeout);
+    return this;
+  }
+
+  /**
    * Sets the free connection timeout for this pool. If the pool has a max 
connections setting,
    * operations will block if all of the connections are in use. The free 
connection timeout
    * specifies how long those operations will block waiting for a free 
connection before receiving

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/cache/client/Pool.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/Pool.java 
b/geode-core/src/main/java/org/apache/geode/cache/client/Pool.java
index 69cec87..e910e01 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/Pool.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/Pool.java
@@ -62,6 +62,13 @@ public interface Pool {
   public String getName();
 
   /**
+   * Returns the socket connect timeout of this pool.
+   *
+   * @see PoolFactory#setSocketConnectTimeout(int)
+   */
+  public int getSocketConnectTimeout();
+
+  /**
    * Returns the connection timeout of this pool.
    * 
    * @see PoolFactory#setFreeConnectionTimeout

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/cache/client/PoolFactory.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/cache/client/PoolFactory.java 
b/geode-core/src/main/java/org/apache/geode/cache/client/PoolFactory.java
index 45c37d9..c5bb863 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/PoolFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/PoolFactory.java
@@ -55,6 +55,14 @@ import org.apache.geode.cache.query.*; // for javadocs
  */
 public interface PoolFactory {
   /**
+   * The default amount of time, in milliseconds, socket timeout when the 
client connects to the
+   * servers/locators.
+   * <p>
+   * Current value: <code>59000</code>.
+   */
+  public static final int DEFAULT_SOCKET_CONNECT_TIMEOUT = 59000;
+
+  /**
    * The default amount of time, in milliseconds, which we will wait for a 
free connection if max
    * connections is set and all of the connections are in use.
    * <p>
@@ -189,6 +197,18 @@ public interface PoolFactory {
   public static final boolean DEFAULT_MULTIUSER_AUTHENTICATION = false;
 
   /**
+   * Sets the socket connect timeout for this pool. The number of milli 
seconds specified as socket
+   * timeout when the client connects to the servers/locators. A timeout of 
zero is interpreted as
+   * an infinite timeout. The connection will then block until established or 
an error occurs.
+   *
+   * @param socketConnectTimeout timeout in milliseconds when the client 
connects to the servers
+   * @return a reference to <code>this</code>
+   * @throws IllegalArgumentException if <code>socketConnectTimeout</code> is 
less than or equal to
+   *         <code>-1</code>.
+   */
+  public PoolFactory setSocketConnectTimeout(int socketConnectTimeout);
+
+  /**
    * Sets the free connection timeout for this pool. If the pool has a max 
connections setting,
    * operations will block if all of the connections are in use. The free 
connection timeout
    * specifies how long those operations will block waiting for a free 
connection before receiving

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java 
b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
index 882c7e6..3ded54a 100644
--- 
a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
@@ -83,10 +83,6 @@ public class PoolImpl implements InternalPool {
 
   private static final Logger logger = LogService.getLogger();
 
-  private static final int HANDSHAKE_TIMEOUT =
-      Integer.getInteger(DistributionConfig.GEMFIRE_PREFIX + 
"PoolImpl.HANDSHAKE_TIMEOUT",
-          AcceptorImpl.DEFAULT_HANDSHAKE_TIMEOUT_MS);
-
   public static final long SHUTDOWN_TIMEOUT =
       Long.getLong(DistributionConfig.GEMFIRE_PREFIX + 
"PoolImpl.SHUTDOWN_TIMEOUT", 30000);
 
@@ -103,6 +99,7 @@ public class PoolImpl implements InternalPool {
   public volatile static boolean TEST_DURABLE_IS_NET_DOWN = false;
 
   private final String name;
+  private final int socketConnectTimeout;
   private final int freeConnectionTimeout;
   private final int loadConditioningInterval;
   private final int socketBufferSize;
@@ -184,6 +181,7 @@ public class PoolImpl implements InternalPool {
   protected PoolImpl(PoolManagerImpl pm, String name, Pool attributes) {
     this.pm = pm;
     this.name = name;
+    this.socketConnectTimeout = attributes.getSocketConnectTimeout();
     this.freeConnectionTimeout = attributes.getFreeConnectionTimeout();
     this.loadConditioningInterval = attributes.getLoadConditioningInterval();
     this.socketBufferSize = attributes.getSocketBufferSize();
@@ -246,8 +244,8 @@ public class PoolImpl implements InternalPool {
     source = getSourceImpl(((PoolFactoryImpl.PoolAttributes) 
attributes).locatorCallback);
     endpointManager = new EndpointManagerImpl(name, ds, this.cancelCriterion, 
this.stats);
     connectionFactory = new ConnectionFactoryImpl(source, endpointManager, ds, 
socketBufferSize,
-        HANDSHAKE_TIMEOUT, readTimeout, proxyId, this.cancelCriterion, 
usedByGateway, gatewaySender,
-        pingInterval, multiuserSecureModeEnabled, this);
+        socketConnectTimeout, readTimeout, proxyId, this.cancelCriterion, 
usedByGateway,
+        gatewaySender, pingInterval, multiuserSecureModeEnabled, this);
     if (subscriptionEnabled) {
       queueManager = new QueueManagerImpl(this, endpointManager, source, 
connectionFactory,
           subscriptionRedundancyLevel, pingInterval, securityLogWriter, 
proxyId);
@@ -277,6 +275,7 @@ public class PoolImpl implements InternalPool {
     if (p == null)
       return false;
     return getFreeConnectionTimeout() == p.getFreeConnectionTimeout()
+        && getSocketConnectTimeout() == p.getSocketConnectTimeout()
         && getLoadConditioningInterval() == p.getLoadConditioningInterval()
         && getSocketBufferSize() == p.getSocketBufferSize()
         && getMinConnections() == p.getMinConnections()
@@ -387,6 +386,10 @@ public class PoolImpl implements InternalPool {
     return this.name;
   }
 
+  public int getSocketConnectTimeout() {
+    return this.socketConnectTimeout;
+  }
+
   public int getFreeConnectionTimeout() {
     return this.freeConnectionTimeout;
   }
@@ -641,7 +644,7 @@ public class PoolImpl implements InternalPool {
       return new ExplicitConnectionSourceImpl(getServers());
     } else {
       AutoConnectionSourceImpl source =
-          new AutoConnectionSourceImpl(locators, getServerGroup(), 
HANDSHAKE_TIMEOUT);
+          new AutoConnectionSourceImpl(locators, getServerGroup(), 
socketConnectTimeout);
       if (locatorDiscoveryCallback != null) {
         source.setLocatorDiscoveryCallback(locatorDiscoveryCallback);
       }
@@ -663,6 +666,10 @@ public class PoolImpl implements InternalPool {
       throw new RuntimeException(
           
LocalizedStrings.PoolImpl_0_ARE_DIFFERENT.toLocalizedString("names"));
     }
+    if (getSocketConnectTimeout() != other.getSocketConnectTimeout()) {
+      throw new RuntimeException(
+          
LocalizedStrings.PoolImpl_0_IS_DIFFERENT.toLocalizedString("socketConnectimeout"));
+    }
     if (getFreeConnectionTimeout() != other.getFreeConnectionTimeout()) {
       throw new RuntimeException(
           
LocalizedStrings.PoolImpl_0_IS_DIFFERENT.toLocalizedString("connectionTimeout"));

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java 
b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java
index 093b6cf..d4fdbd0 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/PoolFactoryImpl.java
@@ -64,6 +64,14 @@ public class PoolFactoryImpl implements PoolFactory {
     this.pm = pm;
   }
 
+  public PoolFactory setSocketConnectTimeout(int socketConnectTimeout) {
+    if (socketConnectTimeout <= -1) {
+      throw new IllegalArgumentException("socketConnectTimeout must be greater 
than -1");
+    }
+    this.attributes.socketConnectTimeout = socketConnectTimeout;
+    return this;
+  }
+
   public PoolFactory setFreeConnectionTimeout(int connectionTimeout) {
     if (connectionTimeout <= 0) {
       throw new IllegalArgumentException("connectionTimeout must be greater 
than zero");
@@ -268,6 +276,7 @@ public class PoolFactoryImpl implements PoolFactory {
    * Initializes the state of this factory for the given pool's state.
    */
   public void init(Pool cp) {
+    setSocketConnectTimeout(cp.getSocketConnectTimeout());
     setFreeConnectionTimeout(cp.getFreeConnectionTimeout());
     setLoadConditioningInterval(cp.getLoadConditioningInterval());
     setSocketBufferSize(cp.getSocketBufferSize());
@@ -335,6 +344,7 @@ public class PoolFactoryImpl implements PoolFactory {
 
     private static final long serialVersionUID = 1L; // for findbugs
 
+    public int socketConnectTimeout = DEFAULT_SOCKET_CONNECT_TIMEOUT;
     public int connectionTimeout = DEFAULT_FREE_CONNECTION_TIMEOUT;
     public int connectionLifetime = DEFAULT_LOAD_CONDITIONING_INTERVAL;
     public int socketBufferSize = DEFAULT_SOCKET_BUFFER_SIZE;
@@ -363,6 +373,10 @@ public class PoolFactoryImpl implements PoolFactory {
      */
     public boolean gateway = false;
 
+    public int getSocketConnectTimeout() {
+      return this.socketConnectTimeout;
+    }
+
     public int getFreeConnectionTimeout() {
       return this.connectionTimeout;
     }
@@ -529,6 +543,7 @@ public class PoolFactoryImpl implements PoolFactory {
       DataSerializer.writeArrayList(this.servers, out);
       DataSerializer.writePrimitiveInt(this.statisticInterval, out);
       DataSerializer.writePrimitiveBoolean(this.multiuserSecureModeEnabled, 
out);
+      DataSerializer.writePrimitiveInt(this.socketConnectTimeout, out);
     }
 
     public void fromData(DataInput in) throws IOException, 
ClassNotFoundException {
@@ -550,6 +565,7 @@ public class PoolFactoryImpl implements PoolFactory {
       this.servers = DataSerializer.readArrayList(in);
       this.statisticInterval = DataSerializer.readPrimitiveInt(in);
       this.multiuserSecureModeEnabled = 
DataSerializer.readPrimitiveBoolean(in);
+      this.socketConnectTimeout = DataSerializer.readPrimitiveInt(in);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java
index bcf78a9..2dd6533 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXml.java
@@ -605,6 +605,7 @@ public abstract class CacheXml implements EntityResolver2, 
ErrorHandler {
   public static final String POOL_NAME = "pool-name";
   public static final String SERVER = "server";
   public static final String LOCATOR = "locator";
+  public static final String SOCKET_CONNECT_TIMEOUT = "socket-connect-timeout";
   public static final String FREE_CONNECTION_TIMEOUT = 
"free-connection-timeout";
   public static final String LOAD_CONDITIONING_INTERVAL = 
"load-conditioning-interval";
   public static final String MIN_CONNECTIONS = "min-connections";

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlGenerator.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlGenerator.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlGenerator.java
index 0cee768..98427ea 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlGenerator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlGenerator.java
@@ -1185,6 +1185,12 @@ public class CacheXmlGenerator extends CacheXml 
implements XMLReader {
     AttributesImpl atts = new AttributesImpl();
     try {
       atts.addAttribute("", "", NAME, "", cp.getName());
+      if (this.version.compareTo(CacheXmlVersion.GEODE_1_0) > 0) {
+        if (generateDefaults()
+            || cp.getSocketConnectTimeout() != 
PoolFactory.DEFAULT_SOCKET_CONNECT_TIMEOUT)
+          atts.addAttribute("", "", SOCKET_CONNECT_TIMEOUT, "",
+              String.valueOf(cp.getSocketConnectTimeout()));
+      }
       if (generateDefaults()
           || cp.getFreeConnectionTimeout() != 
PoolFactory.DEFAULT_FREE_CONNECTION_TIMEOUT)
         atts.addAttribute("", "", FREE_CONNECTION_TIMEOUT, "",

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java
index 04ab020..b1d2929 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java
@@ -400,6 +400,10 @@ public class CacheXmlParser extends CacheXml implements 
ContentHandler {
     stack.push(name);
     stack.push(f);
     String v;
+    v = atts.getValue(SOCKET_CONNECT_TIMEOUT);
+    if (v != null) {
+      f.setSocketConnectTimeout(parseInt(v));
+    }
     v = atts.getValue(FREE_CONNECTION_TIMEOUT);
     if (v != null) {
       f.setFreeConnectionTimeout(parseInt(v));

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/main/resources/META-INF/schemas/geode.apache.org/schema/cache/cache-1.0.xsd
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/resources/META-INF/schemas/geode.apache.org/schema/cache/cache-1.0.xsd
 
b/geode-core/src/main/resources/META-INF/schemas/geode.apache.org/schema/cache/cache-1.0.xsd
index d3d83f1..1bcd83a 100755
--- 
a/geode-core/src/main/resources/META-INF/schemas/geode.apache.org/schema/cache/cache-1.0.xsd
+++ 
b/geode-core/src/main/resources/META-INF/schemas/geode.apache.org/schema/cache/cache-1.0.xsd
@@ -60,7 +60,7 @@ declarative caching XML file elements unless indicated 
otherwise.
 
 - In elements whose value is an "enumerated type", the value is case
   sensitive.
-  
+
   ]]></xsd:documentation>
   </xsd:annotation>
 
@@ -1191,6 +1191,7 @@ As of 6.5 disk-dirs is deprecated on region-attributes. 
Use disk-store-name inst
         </xsd:complexType>
       </xsd:element>
     </xsd:choice>
+    <xsd:attribute name="socket-connect-timeout" type="xsd:string" 
use="optional" />
     <xsd:attribute name="free-connection-timeout" type="xsd:string" 
use="optional" />
     <xsd:attribute name="load-conditioning-interval" type="xsd:string" 
use="optional" />
     <xsd:attribute name="min-connections" type="xsd:string" use="optional" />

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/java/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest.java
index c633a47..f714742 100644
--- 
a/geode-core/src/test/java/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest.java
@@ -103,6 +103,7 @@ public class ClientCacheFactoryJUnitTest {
         Collections.singletonList(
             new InetSocketAddress(InetAddress.getLocalHost(), 
CacheServer.DEFAULT_PORT)),
         defPool.getServers());
+    assertEquals(PoolFactory.DEFAULT_SOCKET_CONNECT_TIMEOUT, 
defPool.getSocketConnectTimeout());
 
     ClientCache cc2 = new ClientCacheFactory().create();
     if (cc2 != this.cc) {
@@ -141,6 +142,7 @@ public class ClientCacheFactoryJUnitTest {
     assertEquals(
         Collections.singletonList(new InetSocketAddress("localhost", 
CacheServer.DEFAULT_PORT)),
         defPool.getServers());
+    assertEquals(PoolFactory.DEFAULT_SOCKET_CONNECT_TIMEOUT, 
defPool.getSocketConnectTimeout());
   }
 
   /**
@@ -152,12 +154,13 @@ public class ClientCacheFactoryJUnitTest {
     dsProps.setProperty(MCAST_PORT, "0");
     DistributedSystem ds = DistributedSystem.connect(dsProps);
     Pool p = 
PoolManager.createFactory().addServer(InetAddress.getLocalHost().getHostName(), 
7777)
-        .create("singlePool");
+        .setSocketConnectTimeout(1400).create("singlePool");
     this.cc = new ClientCacheFactory().create();
     GemFireCacheImpl gfc = (GemFireCacheImpl) this.cc;
     assertEquals(true, gfc.isClient());
     Pool defPool = gfc.getDefaultPool();
     assertEquals(p, defPool);
+    assertEquals(1400, defPool.getSocketConnectTimeout());
 
     // make sure if we can not create a secure user cache when one pool
     // exists that is not multiuser enabled
@@ -175,7 +178,7 @@ public class ClientCacheFactoryJUnitTest {
 
       Pool pool = PoolManager.createFactory()
           .addServer(InetAddress.getLocalHost().getHostName(), 
CacheServer.DEFAULT_PORT)
-          .setMultiuserAuthentication(true).create("pool1");
+          
.setMultiuserAuthentication(true).setSocketConnectTimeout(2345).create("pool1");
       RegionService cc = this.cc.createAuthenticatedView(suProps, 
pool.getName());
       ProxyCache pc = (ProxyCache) cc;
       UserAttributes ua = pc.getUserAttributes();
@@ -185,6 +188,7 @@ public class ClientCacheFactoryJUnitTest {
               new InetSocketAddress(InetAddress.getLocalHost(), 
CacheServer.DEFAULT_PORT)),
           proxyDefPool.getServers());
       assertEquals(true, proxyDefPool.getMultiuserAuthentication());
+      assertEquals(2345, proxyDefPool.getSocketConnectTimeout());
     }
   }
 
@@ -197,14 +201,16 @@ public class ClientCacheFactoryJUnitTest {
     dsProps.setProperty(MCAST_PORT, "0");
     DistributedSystem ds = DistributedSystem.connect(dsProps);
     
PoolManager.createFactory().addServer(InetAddress.getLocalHost().getHostName(), 
7777)
-        .create("p7");
+        .setSocketConnectTimeout(2500).create("p7");
     
PoolManager.createFactory().addServer(InetAddress.getLocalHost().getHostName(), 
6666)
-        .create("p6");
+        .setSocketConnectTimeout(5200).create("p6");
     this.cc = new ClientCacheFactory().create();
     GemFireCacheImpl gfc = (GemFireCacheImpl) this.cc;
     assertEquals(true, gfc.isClient());
     Pool defPool = gfc.getDefaultPool();
     assertEquals(null, defPool);
+    assertEquals(2500, PoolManager.find("p7").getSocketConnectTimeout());
+    assertEquals(5200, PoolManager.find("p6").getSocketConnectTimeout());
 
     // make sure if we can not create a secure user cache when more than one 
pool
     // exists that is not multiuser enabled
@@ -231,18 +237,28 @@ public class ClientCacheFactoryJUnitTest {
               new InetSocketAddress(InetAddress.getLocalHost(), 
CacheServer.DEFAULT_PORT)),
           proxyDefPool.getServers());
       assertEquals(true, proxyDefPool.getMultiuserAuthentication());
+      assertEquals(PoolFactory.DEFAULT_SOCKET_CONNECT_TIMEOUT,
+          proxyDefPool.getSocketConnectTimeout());
     }
   }
 
   @Test
   public void test004SetMethod() throws Exception {
-    this.cc = new ClientCacheFactory().set(LOG_LEVEL, "severe").create();
+    this.cc =
+        new ClientCacheFactory().set(LOG_LEVEL, 
"severe").setPoolSocketConnectTimeout(0).create();
     GemFireCacheImpl gfc = (GemFireCacheImpl) this.cc;
     assertEquals(true, gfc.isClient());
     Properties dsProps = this.cc.getDistributedSystem().getProperties();
     assertEquals("0", dsProps.getProperty(MCAST_PORT));
     assertEquals("", dsProps.getProperty(LOCATORS));
     assertEquals("severe", dsProps.getProperty(LOG_LEVEL));
+    assertEquals(0, this.cc.getDefaultPool().getSocketConnectTimeout());
+
+    try {
+      new ClientCacheFactory().setPoolSocketConnectTimeout(-1).create();
+      fail("expected IllegalArgumentException");
+    } catch (IllegalArgumentException ignore) {
+    }
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
index da3cbdb..3cc3cfc 100644
--- 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
@@ -351,6 +351,10 @@ public class AutoConnectionSourceImplJUnitTest {
       return false;
     }
 
+    public int getSocketConnectTimeout() {
+      return 0;
+    }
+
     public int getFreeConnectionTimeout() {
       return 0;
     }

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
index d99b31a..95b5a92 100644
--- 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/ConnectionPoolImplJUnitTest.java
@@ -101,6 +101,7 @@ public class ConnectionPoolImplJUnitTest {
     PoolImpl pool = (PoolImpl) cpf.create("myfriendlypool");
 
     // check defaults
+    assertEquals(PoolFactory.DEFAULT_SOCKET_CONNECT_TIMEOUT, 
pool.getSocketConnectTimeout());
     assertEquals(PoolFactory.DEFAULT_FREE_CONNECTION_TIMEOUT, 
pool.getFreeConnectionTimeout());
     assertEquals(PoolFactory.DEFAULT_SOCKET_BUFFER_SIZE, 
pool.getSocketBufferSize());
     assertEquals(PoolFactory.DEFAULT_READ_TIMEOUT, pool.getReadTimeout());
@@ -131,14 +132,17 @@ public class ConnectionPoolImplJUnitTest {
   @Test
   public void testProperties() throws Exception {
     int readTimeout = 234234;
+    int socketTimeout = 123123;
 
     PoolFactory cpf = PoolManager.createFactory();
-    cpf.addServer("localhost", 
port).setReadTimeout(readTimeout).setThreadLocalConnections(true);
+    cpf.addServer("localhost", port).setSocketConnectTimeout(socketTimeout)
+        .setReadTimeout(readTimeout).setThreadLocalConnections(true);
 
     PoolImpl pool = (PoolImpl) cpf.create("myfriendlypool");
 
     // check non default
     assertEquals("myfriendlypool", pool.getName());
+    assertEquals(socketTimeout, pool.getSocketConnectTimeout());
     assertEquals(readTimeout, pool.getReadTimeout());
     assertEquals(true, pool.getThreadLocalConnections());
     assertEquals(1, pool.getServers().size());

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/java/org/apache/geode/cache/client/internal/QueueManagerJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/QueueManagerJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/QueueManagerJUnitTest.java
index 6afb501..992a6f0 100644
--- 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/QueueManagerJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/QueueManagerJUnitTest.java
@@ -361,6 +361,10 @@ public class QueueManagerJUnitTest {
 
     public void destroy(boolean keepAlive) {}
 
+    public int getSocketConnectTimeout() {
+      return 0;
+    }
+
     public int getFreeConnectionTimeout() {
       return 0;
     }

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/resources/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest_single_pool.xml
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/resources/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest_single_pool.xml
 
b/geode-core/src/test/resources/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest_single_pool.xml
index 2a7e8f4..f139459 100644
--- 
a/geode-core/src/test/resources/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest_single_pool.xml
+++ 
b/geode-core/src/test/resources/org/apache/geode/cache/client/ClientCacheFactoryJUnitTest_single_pool.xml
@@ -20,11 +20,12 @@
      Configures a region as a client region in a Security cache. The 
      region's pool connects to a server listening on port 40404.
 -->
-<!DOCTYPE client-cache PUBLIC
-  "-//GemStone Systems, Inc.//GemFire Declarative Caching 7.0//EN"
-  "http://www.gemstone.com/dtd/cache7_0.dtd";>
-<client-cache>
+<client-cache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xmlns="http://geode.apache.org/schema/cache";
+  xsi:schemaLocation="http://geode.apache.org/schema/cache 
http://geode.apache.org/schema/cache/cache-1.0.xsd";
+  xsi:noNamespaceSchemaLocation="cache-test.xsd"
+  version="1.0">
   <pool name="my_pool_name" multiuser-authentication="true">
     <server host="localhost" port="40404"/>
   </pool>
-</client-cache>
\ No newline at end of file
+</client-cache>

http://git-wip-us.apache.org/repos/asf/geode/blob/61b1d0c4/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
 
b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
index f54ff74..b69e004 100644
--- 
a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
+++ 
b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -1167,8 +1167,8 @@ 
fromData,207,2a2bb900500100b500162a2bb900510100b80052b500032a2bb80053b500182a2bb
 
toData,178,2b2ab40016b9004702002b2ab40003b40048b9004902002ab400182bb8004a2b2ab40005b9004b02002b2ab4001fb9004b02002ab400042bb8004a2ab400082bb8004c2ab400092bb8004c2ab400072bb8004c2ab4000c2bb8004a2ab4000e2bb8004a2ab4000d2bb8004a2ab400102bb8004a2ab4000f2bb8004a2b2ab40006b9004b02002ab400112bb8004d2ab400142bb8004e2ab40001b9004f010099000b012bb8004da7000b2ab400012bb8004db1
 
 org/apache/geode/internal/cache/PoolFactoryImpl$PoolAttributes,2
-fromData,145,2a2bb80032b500032a2bb80032b500052a2bb80032b500072a2bb80032b500092a2bb80032b5000a2a2bb80032b5000b2a2bb80032b5000f2a2bb80033b5000e2a2bb80033b500122a2bb80032b500162a2bb80032b500182a2bb80034b500082a2bb80034b500142a2bb80035b5001b2a2bb80036b5001f2a2bb80036b500202a2bb80032b500132a2bb80034b5001cb1
-toData,145,2ab400032bb8002d2ab400052bb8002d2ab400072bb8002d2ab400092bb8002d2ab4000a2bb8002d2ab4000b2bb8002d2ab4000f2bb8002d2ab4000e2bb8002e2ab400122bb8002e2ab400162bb8002d2ab400182bb8002d2ab400082bb8002f2ab400142bb8002f2ab4001b2bb800302ab4001f2bb800312ab400202bb800312ab400132bb8002d2ab4001c2bb8002fb1
+fromData,153,2a2bb80034b500052a2bb80034b500072a2bb80034b500092a2bb80034b5000b2a2bb80034b5000c2a2bb80034b5000d2a2bb80034b500112a2bb80035b500102a2bb80035b500142a2bb80034b500182a2bb80034b5001a2a2bb80036b5000a2a2bb80036b500162a2bb80037b5001d2a2bb80038b500212a2bb80038b500222a2bb80034b500152a2bb80036b5001e2a2bb80034b50004b1
+toData,153,2ab400052bb8002f2ab400072bb8002f2ab400092bb8002f2ab4000b2bb8002f2ab4000c2bb8002f2ab4000d2bb8002f2ab400112bb8002f2ab400102bb800302ab400142bb800302ab400182bb8002f2ab4001a2bb8002f2ab4000a2bb800312ab400162bb800312ab4001d2bb800322ab400212bb800332ab400222bb800332ab400152bb8002f2ab4001e2bb800312ab400042bb8002fb1
 
 org/apache/geode/internal/cache/PreferBytesCachedDeserializable,2
 fromData,9,2a2bb8000fb50003b1

Reply via email to