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

Reply via email to