You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2020/03/11 21:55:53 UTC

[geode] 01/01: GEODE-7867 Add more unit tests to geode-tcp-server

This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-7867
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 3746afcb623e6072211591be35f69834c3ed1a63
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Wed Mar 11 14:52:52 2020 -0700

    GEODE-7867 Add more unit tests to geode-tcp-server
    
    Cleaned up a distributedTest that no longer needs to reference
    geode-core 7 moved it to the unit test source set.
    
    Added additional tests.
---
 .../apache/geode/distributed/LocatorLauncher.java  |   2 +-
 .../distributed/internal/InternalLocator.java      |   2 +-
 .../internal/membership/api/MembershipLocator.java |   2 +-
 .../gms/locator/MembershipLocatorImpl.java         |   9 +-
 .../TcpServerProductVersionDUnitTest.java          |   3 +
 .../internal/tcpserver/HostAndPort.java            |   7 +-
 .../distributed/internal/tcpserver/TcpServer.java  |   6 +-
 .../internal/tcpserver/HostAndPortTest.java        |  94 ++++++++++++-
 .../tcpserver/TcpServerDependenciesTest.java       |   3 +
 .../internal/tcpserver/TcpServerJUnitTest.java     | 147 ++++++---------------
 10 files changed, 145 insertions(+), 130 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
index 49f9ece..26886dc 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
@@ -661,7 +661,7 @@ public class LocatorLauncher extends AbstractLauncher<String> {
 
   /**
    * Starts a Locator running on the specified port and bind address, as determined by getPort and
-   * getBindAddress respectively, defaulting to 10334 and 'localhost' if not specified, with both
+   * getSocketAddress respectively, defaulting to 10334 and 'localhost' if not specified, with both
    * peer and server location enabled.
    *
    * 'start' is an asynchronous invocation of the Locator. As such, this method makes no guarantees
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
index f912924..38d114c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
@@ -1323,7 +1323,7 @@ public class InternalLocator extends Locator implements ConnectListener, LogConf
     try {
       locatorStats.hookupStats(sys,
           LocalHostUtil.getCanonicalLocalHostName() + '-' + membershipLocator
-              .getBindAddress());
+              .getSocketAddress());
     } catch (UnknownHostException e) {
       logger.warn(e);
     }
diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipLocator.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipLocator.java
index fd81e92..913e068 100644
--- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipLocator.java
+++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipLocator.java
@@ -38,7 +38,7 @@ public interface MembershipLocator<ID extends MemberIdentifier> {
 
   void restarting() throws IOException;
 
-  SocketAddress getBindAddress();
+  SocketAddress getSocketAddress();
 
   void setMembership(Membership<ID> membership);
 
diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java
index 7cb5b6a..fb555c1 100644
--- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java
+++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/MembershipLocatorImpl.java
@@ -140,8 +140,8 @@ public class MembershipLocatorImpl<ID extends MemberIdentifier> implements Membe
   }
 
   @Override
-  public SocketAddress getBindAddress() {
-    return server.getBindAddress();
+  public SocketAddress getSocketAddress() {
+    return server.getSocketAddress();
   }
 
   @Override
@@ -179,7 +179,8 @@ public class MembershipLocatorImpl<ID extends MemberIdentifier> implements Membe
       try {
         locatorClient
             .stop(
-                new HostAndPort(((InetSocketAddress) getBindAddress()).getHostString(), getPort()));
+                new HostAndPort(((InetSocketAddress) getSocketAddress()).getHostString(),
+                    getPort()));
       } catch (ConnectException ignore) {
         // must not be running
       }
@@ -211,6 +212,6 @@ public class MembershipLocatorImpl<ID extends MemberIdentifier> implements Membe
 
   @Override
   public String toString() {
-    return "Locator on " + getBindAddress() + ":" + getPort();
+    return "Locator on " + getSocketAddress() + ":" + getPort();
   }
 }
diff --git a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java
index 6035b17..ee15ae6 100644
--- a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java
+++ b/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerProductVersionDUnitTest.java
@@ -36,6 +36,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
@@ -56,6 +57,7 @@ import org.apache.geode.test.dunit.SerializableRunnableIF;
 import org.apache.geode.test.dunit.VM;
 import org.apache.geode.test.dunit.internal.DUnitLauncher;
 import org.apache.geode.test.dunit.rules.DistributedRule;
+import org.apache.geode.test.junit.categories.MembershipTest;
 import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
 import org.apache.geode.test.version.TestVersion;
 import org.apache.geode.test.version.VersionManager;
@@ -67,6 +69,7 @@ import org.apache.geode.test.version.VersionManager;
  * This test verifies that the current version (1.12 or later) is compatible with the latest
  * version before 1.12
  */
+@Category({MembershipTest.class})
 @RunWith(Parameterized.class)
 @Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
 public class TcpServerProductVersionDUnitTest implements Serializable {
diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java
index 91c4391..1c5b93e 100644
--- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java
+++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/HostAndPort.java
@@ -108,11 +108,6 @@ public class HostAndPort implements DataSerializableFixedID {
     return getClass().getSimpleName() + " [socketInetAddress=" + socketInetAddress + "]";
   }
 
-  private InetSocketAddress cloneUnresolved(final InetSocketAddress inetSocketAddress) {
-    return InetSocketAddress.createUnresolved(inetSocketAddress.getHostString(),
-        inetSocketAddress.getPort());
-  }
-
   public InetAddress getAddress() {
     return getSocketInetAddress().getAddress();
   }
@@ -157,7 +152,7 @@ public class HostAndPort implements DataSerializableFixedID {
 
   @Override
   public Version[] getSerializationVersions() {
-    return new Version[0];
+    return null;
   }
 
 
diff --git a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
index 7ed30b7..3b5c159 100755
--- a/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
+++ b/geode-tcp-server/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
@@ -224,7 +224,7 @@ public class TcpServer {
    * @param millis how long to wait
    */
   public void join(long millis) throws InterruptedException {
-    if (serverThread != null) {
+    if (isAlive()) {
       serverThread.join(millis);
     }
   }
@@ -233,7 +233,7 @@ public class TcpServer {
    * Wait on the server-socket thread using {@link Thread#join()}
    */
   public void join() throws InterruptedException {
-    if (serverThread != null) {
+    if (isAlive()) {
       serverThread.join();
     }
   }
@@ -258,7 +258,7 @@ public class TcpServer {
    *
    * @see ServerSocket#getLocalSocketAddress()
    */
-  public SocketAddress getBindAddress() {
+  public SocketAddress getSocketAddress() {
     return srv_sock.getLocalSocketAddress();
   }
 
diff --git a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java
index 1381721..55a01af 100644
--- a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java
+++ b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/HostAndPortTest.java
@@ -14,19 +14,30 @@
  */
 package org.apache.geode.distributed.internal.tcpserver;
 
+import static org.apache.geode.internal.serialization.DataSerializableFixedID.HOST_AND_PORT;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.IOException;
 import java.net.InetSocketAddress;
 
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
+import org.apache.geode.internal.serialization.BufferDataOutputStream;
+import org.apache.geode.internal.serialization.ByteArrayDataInput;
+import org.apache.geode.internal.serialization.DSFIDSerializer;
+import org.apache.geode.internal.serialization.DSFIDSerializerFactory;
+import org.apache.geode.internal.serialization.Version;
+import org.apache.geode.test.junit.categories.MembershipTest;
+
+@Category({MembershipTest.class})
 public class HostAndPortTest {
 
   /**
    * Test that getSocketInentAddress returns resolved InetSocketAddress
    */
   @Test
-  public void Test_getSocketInentAddress_returns_resolved_SocketAddress() {
+  public void getSocketInentAddress_returns_resolved_SocketAddress() {
     HostAndPort locator1 = new HostAndPort("localhost", 8080);
 
     InetSocketAddress actual = locator1.getSocketInetAddress();
@@ -38,7 +49,7 @@ public class HostAndPortTest {
    * Test that getSocketInentAddress returns unresolved InetSocketAddress
    */
   @Test
-  public void Test_getSocketInentAddress_returns_unresolved_SocketAddress() {
+  public void getSocketInentAddress_returns_unresolved_SocketAddress() {
     HostAndPort locator1 = new HostAndPort("fakelocalhost", 8090);
 
     InetSocketAddress actual = locator1.getSocketInetAddress();
@@ -51,7 +62,7 @@ public class HostAndPortTest {
    * InetSocketAddress
    */
   @Test
-  public void Test_equals_LocatorAddress_from_resolved_and_unresolved_SocketAddress() {
+  public void equals_LocatorAddress_from_resolved_and_unresolved_SocketAddress() {
     HostAndPort locator1 = new HostAndPort("localhost", 8080);
 
     InetSocketAddress host2address = locator1.getSocketInetAddress();
@@ -62,28 +73,97 @@ public class HostAndPortTest {
   }
 
   @Test
-  public void Test_getPort_returns_port() {
+  public void getPort_returns_port() {
     HostAndPort locator1 = new HostAndPort("localhost", 8090);
     assertThat(locator1.getPort()).isEqualTo(8090);
   }
 
   @Test
-  public void Test_getHostName_returns_hostname() {
+  public void getHostName_returns_hostname() {
     HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091);
     assertThat(locator1.getHostName()).isEqualTo("fakelocalhost");
   }
 
   @Test
-  public void Test_hashCode_of_SocketAddress() {
+  public void hashCode_of_SocketAddress() {
     InetSocketAddress host1address = InetSocketAddress.createUnresolved("fakelocalhost", 8091);
     HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091);
     assertThat(locator1.hashCode()).isEqualTo(host1address.hashCode());
   }
 
   @Test
-  public void Test_toString_LocatorAddress() {
+  public void toString_LocatorAddress() {
     HostAndPort locator1 = new HostAndPort("fakelocalhost", 8091);
     assertThat(locator1.toString()).contains("socketInetAddress");
   }
 
+  @Test
+  public void constructorWithNoHostName() {
+    HostAndPort hostAndPort = new HostAndPort(null, 8091);
+    assertThat(hostAndPort.getAddress()).isNotNull();
+    assertThat(hostAndPort.getHostName()).isEqualTo("0.0.0.0");
+    assertThat(hostAndPort.getPort()).isEqualTo(8091);
+    assertThat(hostAndPort.getSocketInetAddress()).isNotNull();
+  }
+
+  @Test
+  public void testEquality() {
+    HostAndPort hostAndPort1 = new HostAndPort("127.0.0.1", 8091);
+    HostAndPort hostAndPort2 = new HostAndPort("127.0.0.1", 8091);
+    HostAndPort hostAndPort3 = new HostAndPort("127.0.0.1", 8092);
+    assertThat(hostAndPort1.getSocketInetAddress()).isSameAs(hostAndPort1.getSocketInetAddress());
+    assertThat(hostAndPort1).isEqualTo(hostAndPort1);
+    assertThat(hostAndPort1).isEqualTo(hostAndPort2);
+    assertThat(hostAndPort1).isNotEqualTo(hostAndPort3);
+    assertThat(hostAndPort1.equals(null)).isFalse();
+  }
+
+  @Test
+  public void testSerializationWithNumericAddress() throws IOException, ClassNotFoundException {
+    DSFIDSerializer dsfidSerializer = new DSFIDSerializerFactory().create();
+    dsfidSerializer.registerDSFID(HOST_AND_PORT, HostAndPort.class);
+    HostAndPort hostAndPort1 = new HostAndPort("127.0.0.1", 8091);
+    BufferDataOutputStream out = new BufferDataOutputStream(100, Version.CURRENT);
+    dsfidSerializer.getObjectSerializer().writeObject(hostAndPort1, out);
+    HostAndPort hostAndPort2 = dsfidSerializer.getObjectDeserializer()
+        .readObject(new ByteArrayDataInput(out.toByteArray()));
+    assertThat(hostAndPort1).isEqualTo(hostAndPort2);
+    assertThat(hostAndPort2).isEqualTo(hostAndPort1);
+  }
+
+  @Test
+  public void testSerializationWithUnresolvableHostName()
+      throws IOException, ClassNotFoundException {
+    DSFIDSerializer dsfidSerializer = new DSFIDSerializerFactory().create();
+    dsfidSerializer.registerDSFID(HOST_AND_PORT, HostAndPort.class);
+    HostAndPort hostAndPort1 = new HostAndPort("unresolvable host name", 8091);
+    BufferDataOutputStream out = new BufferDataOutputStream(100, Version.CURRENT);
+    dsfidSerializer.getObjectSerializer().writeObject(hostAndPort1, out);
+    HostAndPort hostAndPort2 = dsfidSerializer.getObjectDeserializer()
+        .readObject(new ByteArrayDataInput(out.toByteArray()));
+    assertThat(hostAndPort1).isEqualTo(hostAndPort2);
+    assertThat(hostAndPort2).isEqualTo(hostAndPort1);
+    assertThat(hostAndPort1.getAddress()).isNull();
+    assertThat(hostAndPort2.getAddress()).isNull();
+    assertThat(hostAndPort2.getSocketInetAddress()).isNotNull();
+    assertThat(hostAndPort1.getSocketInetAddress().isUnresolved()).isTrue();
+    assertThat(hostAndPort2.getSocketInetAddress().isUnresolved()).isTrue();
+  }
+
+  @Test
+  public void testSerializationWithNoHostName() throws IOException, ClassNotFoundException {
+    DSFIDSerializer dsfidSerializer = new DSFIDSerializerFactory().create();
+    dsfidSerializer.registerDSFID(HOST_AND_PORT, HostAndPort.class);
+    HostAndPort hostAndPort1 = new HostAndPort(null, 8091);
+    BufferDataOutputStream out = new BufferDataOutputStream(100, Version.CURRENT);
+    dsfidSerializer.getObjectSerializer().writeObject(hostAndPort1, out);
+    HostAndPort hostAndPort2 = dsfidSerializer.getObjectDeserializer()
+        .readObject(new ByteArrayDataInput(out.toByteArray()));
+    assertThat(hostAndPort1).isEqualTo(hostAndPort2);
+    assertThat(hostAndPort2).isEqualTo(hostAndPort1);
+    assertThat(hostAndPort2.getHostName()).isEqualTo("0.0.0.0");
+    assertThat(hostAndPort2.getSocketInetAddress()).isNotNull();
+    assertThat(hostAndPort1.getSocketInetAddress().isUnresolved()).isFalse();
+    assertThat(hostAndPort2.getSocketInetAddress().isUnresolved()).isFalse();
+  }
 }
diff --git a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerDependenciesTest.java b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerDependenciesTest.java
index 8b873f3..e04ae7f 100644
--- a/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerDependenciesTest.java
+++ b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerDependenciesTest.java
@@ -24,10 +24,13 @@ import com.tngtech.archunit.junit.ArchTest;
 import com.tngtech.archunit.junit.ArchUnitRunner;
 import com.tngtech.archunit.junit.CacheMode;
 import com.tngtech.archunit.lang.ArchRule;
+import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
+import org.apache.geode.test.junit.categories.MembershipTest;
 
 
+@Category({MembershipTest.class})
 @RunWith(ArchUnitRunner.class)
 @AnalyzeClasses(packages = "org.apache.geode.distributed.internal.tcpserver",
     cacheMode = CacheMode.PER_CLASS,
diff --git a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java
similarity index 70%
rename from geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java
rename to geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java
index 7252c53..6e43f47 100644
--- a/geode-tcp-server/src/distributedTest/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java
+++ b/geode-tcp-server/src/test/java/org/apache/geode/distributed/internal/tcpserver/TcpServerJUnitTest.java
@@ -33,39 +33,23 @@ import java.net.ConnectException;
 import java.net.InetAddress;
 import java.net.SocketException;
 import java.net.UnknownHostException;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 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 org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
-import org.apache.geode.distributed.internal.DistributionConfigImpl;
-import org.apache.geode.distributed.internal.DistributionStats;
-import org.apache.geode.distributed.internal.InfoRequestHandler;
-import org.apache.geode.distributed.internal.PoolStatHelper;
-import org.apache.geode.distributed.internal.ProtocolCheckerImpl;
-import org.apache.geode.distributed.internal.membership.gms.Services;
-import org.apache.geode.internal.AvailablePort;
-import org.apache.geode.internal.cache.client.protocol.ClientProtocolServiceLoader;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
-import org.apache.geode.internal.net.SocketCreatorFactory;
 import org.apache.geode.internal.serialization.BasicSerializable;
 import org.apache.geode.internal.serialization.DSFIDSerializer;
 import org.apache.geode.internal.serialization.DSFIDSerializerFactory;
 import org.apache.geode.internal.serialization.DeserializationContext;
 import org.apache.geode.internal.serialization.SerializationContext;
+import org.apache.geode.logging.internal.executors.LoggingExecutors;
 import org.apache.geode.test.junit.categories.MembershipTest;
-import org.apache.geode.util.internal.GeodeGlossary;
 
 @Category({MembershipTest.class})
 public class TcpServerJUnitTest {
@@ -73,59 +57,33 @@ public class TcpServerJUnitTest {
   private static final int TIMEOUT = 60 * 1000;
   private InetAddress localhost;
   private int port;
-  private SimpleStats stats;
   private TcpServer server;
 
-  @Before
-  public void setup() {
-    SocketCreatorFactory.setDistributionConfig(new DistributionConfigImpl(new Properties()));
-  }
-
-  @After
-  public void teardown() {
-    SocketCreatorFactory.close();
-  }
-
-  private void start(TcpHandler handler) throws IOException {
+  private void startTcpServerWithHandler(TcpHandler handler) throws IOException {
     localhost = InetAddress.getLocalHost();
-    port = getNeverUsedPort();
-
-    stats = new SimpleStats();
 
     DSFIDSerializer serializer = new DSFIDSerializerFactory().create();
-    Services.registerSerializables(serializer);
     server = new TcpServer(port, localhost, handler,
-        "server thread", new ProtocolCheckerImpl(null, new ClientProtocolServiceLoader()),
-        DistributionStats::getStatTime,
-        () -> CoreLoggingExecutors.newThreadPoolWithSynchronousFeed("locator request thread ",
-            100, stats, TIMEOUT,
-            new ThreadPoolExecutor.CallerRunsPolicy()),
+        "server thread",
+        (x, y, z) -> false, // protobuf hook - not needed here
+        () -> 0, // stats time
+        () -> LoggingExecutors.newCachedThreadPool("test thread", true),
         null,
         serializer.getObjectSerializer(),
         serializer.getObjectDeserializer(),
-        GeodeGlossary.GEMFIRE_PREFIX + "TcpServer.READ_TIMEOUT",
-        GeodeGlossary.GEMFIRE_PREFIX + "TcpServer.BACKLOG");
+        "blahblahblah",
+        "blahblahblah");
     server.start();
+    port = server.getPort();
+    assertThat(port).isGreaterThan(0);
+    assertThat(server.isShuttingDown()).isFalse();
+    assertThat(server.getSocketAddress()).isNotNull();
+    assertThat(server.isAlive()).isTrue();
   }
 
-  /*
-   * TcpClient keeps a static map of server port to server version. If a test happens to reuse a
-   * port
-   * (as happens sometimes in stress test, which runs a test many times) the number of requests
-   * to the server will vary, since TcpClient elides the VersionRequest if there is already an
-   * entry in the map for the given server.
-   *
-   * Make sure we never reuse a server port, so we never encounter this nondeterminism.
-   */
-  private static Set<Integer> ports = new HashSet<>();
-
-  private static int getNeverUsedPort() {
-    int port;
-    do {
-      port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-    } while (ports.contains(port));
-    ports.add(port);
-    return port;
+  @Before
+  public void setup() {
+    TcpClient.clearStaticData();
   }
 
   @Test
@@ -139,7 +97,7 @@ public class TcpServerJUnitTest {
   @Test
   public void testClientGetInfo() throws Exception {
     TcpHandler handler = new InfoRequestHandler();
-    start(handler);
+    startTcpServerWithHandler(handler);
 
     final TcpClient tcpClient = createTcpClient();
 
@@ -152,18 +110,15 @@ public class TcpServerJUnitTest {
     String[] requestedInfo = tcpClient.getInfo(new HostAndPort(localhost.getHostAddress(), port));
     assertNotNull(requestedInfo);
     assertTrue(requestedInfo.length > 1);
+    assertThat(requestedInfo[0]).contains("geode-tcp-server");
 
     stopServer(tcpClient);
-
-    assertEquals(4, stats.started.get());
-    assertEquals(4, stats.ended.get());
-
   }
 
   private TcpClient createTcpClient() {
     DSFIDSerializer serializer = new DSFIDSerializerFactory().create();
-    Services.registerSerializables(serializer);
-    return new TcpClient(new TcpSocketCreatorImpl(),
+    TcpSocketCreator socketCreator = new TcpSocketCreatorImpl();
+    return new TcpClient(socketCreator,
         serializer.getObjectSerializer(),
         serializer.getObjectDeserializer());
   }
@@ -172,7 +127,7 @@ public class TcpServerJUnitTest {
   public void testConcurrency() throws Exception {
     CountDownLatch latch = new CountDownLatch(1);
     DelayHandler handler = new DelayHandler(latch);
-    start(handler);
+    startTcpServerWithHandler(handler);
     final TcpClient tcpClient = createTcpClient();
 
     final AtomicBoolean done = new AtomicBoolean();
@@ -218,7 +173,7 @@ public class TcpServerJUnitTest {
     // can recover and serve new client requests after a SocketException is thrown.
     TcpHandler mockTcpHandler = mock(TcpHandler.class);
     doThrow(SocketException.class).when(mockTcpHandler).processRequest(any(Object.class));
-    start(mockTcpHandler);
+    startTcpServerWithHandler(mockTcpHandler);
     final TcpClient tcpClient = createTcpClient();
 
     // Due to the mocked handler, an EOFException will be thrown on the client. This is expected.
@@ -245,9 +200,6 @@ public class TcpServerJUnitTest {
     assertEquals(test.id, result.id);
 
     stopServer(tcpClient);
-
-    assertEquals(4, stats.started.get());
-    assertEquals(4, stats.ended.get());
   }
 
   private void stopServer(final TcpClient tcpClient) throws InterruptedException {
@@ -281,35 +233,6 @@ public class TcpServerJUnitTest {
 
   }
 
-  private static class EchoHandler implements TcpHandler {
-
-    protected boolean shutdown;
-
-
-    @Override
-    public void init(TcpServer tcpServer) {
-      // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public Object processRequest(Object request) throws IOException {
-      return request;
-    }
-
-    @Override
-    public void shutDown() {
-      shutdown = true;
-    }
-
-    @Override
-    public void endRequest(Object request, long startTime) {}
-
-    @Override
-    public void endResponse(Object request, long startTime) {}
-
-  }
-
   private static class DelayHandler implements TcpHandler {
 
     private CountDownLatch latch;
@@ -344,19 +267,29 @@ public class TcpServerJUnitTest {
     public void endResponse(Object request, long startTime) {}
   }
 
-  private/* GemStoneAddition */ static class SimpleStats implements PoolStatHelper {
-    AtomicInteger ended = new AtomicInteger();
-    AtomicInteger started = new AtomicInteger();
 
+  public class InfoRequestHandler implements TcpHandler {
+    public InfoRequestHandler() {}
 
     @Override
-    public void endJob() {
-      ended.incrementAndGet();
+    public Object processRequest(final Object request) throws IOException {
+      String[] info = new String[2];
+      info[0] = System.getProperty("user.dir");
+      info[1] = System.getProperty("java.version");
+      return new InfoResponse(info);
     }
 
     @Override
-    public void startJob() {
-      started.incrementAndGet();
-    }
+    public void endRequest(final Object request, final long startTime) {}
+
+    @Override
+    public void endResponse(final Object request, final long startTime) {}
+
+    @Override
+    public void shutDown() {}
+
+    @Override
+    public void init(final TcpServer tcpServer) {}
   }
+
 }