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) {}
}
+
}