This is an automated email from the ASF dual-hosted git repository.
mhanson pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new abd0f54 GEODE-7098: Tomcat8SessionsClientServerDUnitTest Tests were
getting bind failures (#4903)
abd0f54 is described below
commit abd0f54dd280b64473a4ef36149d31de4a74da1d
Author: mhansonp <[email protected]>
AuthorDate: Mon Apr 6 09:22:38 2020 -0700
GEODE-7098: Tomcat8SessionsClientServerDUnitTest Tests were getting bind
failures (#4903)
* GEODE-7098: Tests were getting bind failures using
SocketUtils.getAvailableTCPPort
- Moved tests to use AvailablePortHelper class
- Added Sanity check to setup
- Rename testSanity call to basicConnectivityCheck
- Inline testSanity
Co-authored-by: Mark Hanson <[email protected]>
---
.../modules/session/TestSessionsTomcat8Base.java | 23 +++++-----
.../Tomcat8SessionsClientServerDUnitTest.java | 52 ++++++++++++++++++----
.../modules/session/Tomcat8SessionsDUnitTest.java | 5 ++-
3 files changed, 59 insertions(+), 21 deletions(-)
diff --git
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/TestSessionsTomcat8Base.java
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/TestSessionsTomcat8Base.java
index eedd635..e7cec09 100644
---
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/TestSessionsTomcat8Base.java
+++
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/TestSessionsTomcat8Base.java
@@ -27,13 +27,14 @@ import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import org.apache.catalina.core.StandardWrapper;
+import org.apache.logging.log4j.Logger;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.apache.geode.cache.Region;
+import org.apache.geode.logging.internal.log4j.api.LogService;
import org.apache.geode.modules.session.catalina.DeltaSessionManager;
-import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.rules.CacheRule;
import org.apache.geode.test.dunit.rules.DistributedRule;
@@ -44,26 +45,26 @@ public abstract class TestSessionsTomcat8Base implements
Serializable {
@Rule
public CacheRule cacheRule = new CacheRule();
+ protected Logger logger = LogService.getLogger();
- VM vm0;
int port;
EmbeddedTomcat8 server;
StandardWrapper servlet;
Region<String, HttpSession> region;
DeltaSessionManager sessionManager;
- /**
- * Check that the basics are working
- */
- @Test
- public void testSanity() throws Exception {
+ public void basicConnectivityCheck() throws Exception {
WebConversation wc = new WebConversation();
+ assertThat(wc).describedAs("WebConversation was").isNotNull();
+ logger.debug("Sending request to http://localhost:{}/test", port);
WebRequest req = new
GetMethodWebRequest(String.format("http://localhost:%d/test", port));
+ assertThat(req).describedAs("WebRequest was").isNotNull();
req.setParameter("cmd", QueryCommand.GET.name());
req.setParameter("param", "null");
-
WebResponse response = wc.getResponse(req);
- assertThat(response.getNewCookieNames()[0]).isEqualTo("JSESSIONID");
+ assertThat(response).describedAs("WebResponse was").isNotNull();
+ assertThat(response.getNewCookieNames()[0]).describedAs("SessionID was")
+ .isEqualTo("JSESSIONID");
}
/**
@@ -356,7 +357,7 @@ public abstract class TestSessionsTomcat8Base implements
Serializable {
assertThat(region.get(sessionId).getAttribute(key)).isEqualTo("999");
}
- /*
+ /**
* Test for issue #38 CommitSessionValve throws exception on invalidated
sessions
*/
@Test
@@ -399,7 +400,7 @@ public abstract class TestSessionsTomcat8Base implements
Serializable {
WebResponse response = wc.getResponse(req);
assertThat(response.getText()).isEqualTo("done");
- assertThat(region.size()).as("The region should be empty").isEqualTo(0);
+ assertThat(region.size()).as("The region should contain one
entry").isEqualTo(1);
}
/**
diff --git
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsClientServerDUnitTest.java
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsClientServerDUnitTest.java
index 683ae5c..276a4c2 100644
---
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsClientServerDUnitTest.java
+++
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsClientServerDUnitTest.java
@@ -16,17 +16,20 @@ package org.apache.geode.modules.session;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
+import static org.assertj.core.api.Assertions.assertThat;
import javax.security.auth.message.config.AuthConfigFactory;
+import org.apache.catalina.LifecycleState;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.experimental.categories.Category;
-import org.springframework.util.SocketUtils;
import org.apache.geode.cache.client.ClientCache;
import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.internal.AvailablePortHelper;
import
org.apache.geode.modules.session.catalina.ClientServerCacheLifecycleListener;
import org.apache.geode.modules.session.catalina.DeltaSessionManager;
import org.apache.geode.modules.session.catalina.Tomcat8DeltaSessionManager;
@@ -34,50 +37,83 @@ import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.categories.SessionTest;
+
+
@Category(SessionTest.class)
public class Tomcat8SessionsClientServerDUnitTest extends
TestSessionsTomcat8Base {
+
@Rule
public ClusterStartupRule clusterStartupRule = new ClusterStartupRule(2);
private ClientCache clientCache;
- private MemberVM locatorVM;
- private MemberVM serverVM;
@Before
public void setUp() throws Exception {
- locatorVM = clusterStartupRule.startLocatorVM(0, 0);
+ int locatorPortSuggestion =
AvailablePortHelper.getRandomAvailableTCPPort();
+ MemberVM locatorVM = clusterStartupRule.startLocatorVM(0,
locatorPortSuggestion);
+ assertThat(locatorVM).isNotNull();
+
Integer locatorPort = locatorVM.getPort();
- serverVM = clusterStartupRule.startServerVM(1, locatorPort);
+ assertThat(locatorPort).isGreaterThan(0);
+
+ MemberVM serverVM = clusterStartupRule.startServerVM(1, locatorPort);
+ assertThat(serverVM).isNotNull();
+
+ port = AvailablePortHelper.getRandomAvailableTCPPort();
+ assertThat(port).isGreaterThan(0);
- port = SocketUtils.findAvailableTcpPort();
server = new EmbeddedTomcat8(port, "JVM-1");
+ assertThat(server).isNotNull();
ClientCacheFactory cacheFactory = new ClientCacheFactory();
+ assertThat(cacheFactory).isNotNull();
+
cacheFactory.addPoolServer("localhost",
serverVM.getPort()).setPoolSubscriptionEnabled(true);
clientCache = cacheFactory.create();
+ assertThat(clientCache).isNotNull();
+
DeltaSessionManager manager = new Tomcat8DeltaSessionManager();
+ assertThat(manager).isNotNull();
ClientServerCacheLifecycleListener listener = new
ClientServerCacheLifecycleListener();
+ assertThat(listener).isNotNull();
+
listener.setProperty(MCAST_PORT, "0");
listener.setProperty(LOG_LEVEL, "config");
server.addLifecycleListener(listener);
+
sessionManager = manager;
sessionManager.setEnableCommitValve(true);
server.getRootContext().setManager(sessionManager);
+
AuthConfigFactory.setFactory(null);
servlet = server.addServlet("/test/*", "default",
CommandServlet.class.getName());
- server.startContainer();
-
+ assertThat(servlet).isNotNull();
+ server.startContainer();
// Can only retrieve the region once the container has started up (& the
cache has started too).
region = sessionManager.getSessionCache().getSessionRegion();
+ assertThat(region).isNotNull();
+
sessionManager.getTheContext().setSessionTimeout(30);
+ await().until(() -> sessionManager.getState() == LifecycleState.STARTED);
+
+ basicConnectivityCheck();
}
@After
public void tearDown() {
clientCache.close();
+ clientCache = null;
+ port = -1;
+
server.stopContainer();
+ server = null;
+ servlet = null;
+
+ sessionManager = null;
+ region = null;
+
}
}
diff --git
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsDUnitTest.java
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsDUnitTest.java
index 7a26b22..67db322 100644
---
a/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsDUnitTest.java
+++
b/extensions/geode-modules-tomcat8/src/distributedTest/java/org/apache/geode/modules/session/Tomcat8SessionsDUnitTest.java
@@ -22,8 +22,8 @@ import javax.security.auth.message.config.AuthConfigFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.experimental.categories.Category;
-import org.springframework.util.SocketUtils;
+import org.apache.geode.internal.AvailablePortHelper;
import
org.apache.geode.modules.session.catalina.PeerToPeerCacheLifecycleListener;
import org.apache.geode.modules.session.catalina.Tomcat8DeltaSessionManager;
import org.apache.geode.test.junit.categories.SessionTest;
@@ -33,7 +33,7 @@ public class Tomcat8SessionsDUnitTest extends
TestSessionsTomcat8Base {
@Before
public void setUp() throws Exception {
- port = SocketUtils.findAvailableTcpPort();
+ port = AvailablePortHelper.getRandomAvailableTCPPort();
server = new EmbeddedTomcat8(port, "JVM-1");
PeerToPeerCacheLifecycleListener p2pListener = new
PeerToPeerCacheLifecycleListener();
@@ -53,6 +53,7 @@ public class Tomcat8SessionsDUnitTest extends
TestSessionsTomcat8Base {
sessionManager.getTheContext().setSessionTimeout(30);
region.clear();
+ basicConnectivityCheck();
}
@After