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 <[email protected]> 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) {} } + }
