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:52 UTC

[geode] branch feature/GEODE-7867 created (now 3746afc)

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

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


      at 3746afc  GEODE-7867 Add more unit tests to geode-tcp-server

This branch includes the following new commits:

     new 3746afc  GEODE-7867 Add more unit tests to geode-tcp-server

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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

Posted by bs...@apache.org.
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) {}
   }
+
 }