From 58f3855ef5135f1ed9143d4e5ece3bdd112ef269 Mon Sep 17 00:00:00 2001 From: Jan Bartel Date: Wed, 8 Mar 2017 17:22:47 +1100 Subject: [PATCH] Issue #1377 Add extra test to ensure immortal session never scavenged --- .../NonClusteredSessionScavengingTest.java | 7 +-- .../NonClusteredSessionScavengingTest.java | 6 -- .../NonClusteredSessionScavengingTest.java | 8 --- .../NonClusteredSessionScavengingTest.java | 9 --- .../NonClusteredSessionScavengingTest.java | 6 -- .../NonClusteredSessionScavengingTest.java | 7 --- ...ractNonClusteredSessionScavengingTest.java | 62 ++++++++++++++++++- 7 files changed, 62 insertions(+), 43 deletions(-) diff --git a/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java index 90255936ffe..501ac030a73 100644 --- a/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java @@ -50,10 +50,5 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi { return FileTestHelper.newSessionDataStoreFactory(); } - - @Test - public void testNewSession() throws Exception - { - super.testNewSession(); - } + } diff --git a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/NonClusteredSessionScavengingTest.java index 49aa10a1ae4..b6ddd4d3939 100644 --- a/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/NonClusteredSessionScavengingTest.java @@ -50,10 +50,4 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi return GCloudSessionTestSupport.newSessionDataStoreFactory(GCloudTestSuite.__testSupport.getDatastore()); } - - @Test - public void testNewSession() throws Exception - { - super.testNewSession(); - } } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java index 4f5659ba0e9..638b55db617 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java @@ -59,12 +59,4 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi factory.setCache(__testSupport.getCache()); return factory; } - - @Override - public void testNewSession() throws Exception - { - super.testNewSession(); - } - - } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/NonClusteredSessionScavengingTest.java index 06cd5c31295..3dd85f88486 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/NonClusteredSessionScavengingTest.java @@ -59,13 +59,4 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi factory.setCache(__testSupport.getCache()); return factory; } - - - @Override - public void testNewSession() throws Exception - { - super.testNewSession(); - } - - } diff --git a/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java index d320b2e0f83..bdfa87c903f 100644 --- a/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java @@ -35,13 +35,7 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi { return JdbcTestHelper.newSessionDataStoreFactory(); } - - @Test - public void testNewSession() throws Exception - { - super.testNewSession(); - } @After public void tearDown() throws Exception diff --git a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/NonClusteredSessionScavengingTest.java b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/NonClusteredSessionScavengingTest.java index 90259b64963..6d49d8f5281 100644 --- a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/NonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/NonClusteredSessionScavengingTest.java @@ -22,7 +22,6 @@ import org.eclipse.jetty.server.session.AbstractNonClusteredSessionScavengingTes import org.eclipse.jetty.server.session.SessionDataStoreFactory; import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Test; /** * NonClusteredSessionScavengingTest @@ -51,10 +50,4 @@ public class NonClusteredSessionScavengingTest extends AbstractNonClusteredSessi { return MongoTestHelper.newSessionDataStoreFactory(); } - - @Test - public void testNewSession() throws Exception - { - super.testNewSession(); - } } diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractNonClusteredSessionScavengingTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractNonClusteredSessionScavengingTest.java index 74fc056aed1..7f3224c8a39 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractNonClusteredSessionScavengingTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractNonClusteredSessionScavengingTest.java @@ -111,8 +111,62 @@ public abstract class AbstractNonClusteredSessionScavengingTest extends Abstract { server.stop(); } - } + + @Test + public void testImmortalSession() throws Exception + { + String servletMapping = "/server"; + int scavengePeriod = 3; + int maxInactivePeriod = 0; + + DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); + cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); + SessionDataStoreFactory storeFactory = createSessionDataStoreFactory(); + ((AbstractSessionDataStoreFactory)storeFactory).setGracePeriodSec(scavengePeriod); + + TestServer server = new TestServer(0, maxInactivePeriod, scavengePeriod, + cacheFactory, storeFactory); + ServletContextHandler context = server.addContext("/"); + context.addServlet(TestServlet.class, servletMapping); + String contextPath = ""; + + try + { + server.start(); + int port=server.getPort(); + HttpClient client = new HttpClient(); + client.start(); + try + { + //create an immortal session + ContentResponse response = client.GET("http://localhost:" + port + contextPath + servletMapping + "?action=create"); + assertEquals(HttpServletResponse.SC_OK,response.getStatus()); + String sessionCookie = response.getHeaders().get("Set-Cookie"); + assertTrue(sessionCookie != null); + // Mangle the cookie, replacing Path with $Path, etc. + sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); + + // Let's wait for the scavenger to run + pause(2*scavengePeriod); + + // Test that the session is still there + Request request = client.newRequest("http://localhost:" + port + contextPath + servletMapping + "?action=old-test"); + request.header("Cookie", sessionCookie); + response = request.send(); + assertEquals(HttpServletResponse.SC_OK,response.getStatus()); + } + finally + { + client.stop(); + } + } + finally + { + server.stop(); + } + } + public static class TestServlet extends HttpServlet { String id; @@ -135,6 +189,12 @@ public abstract class AbstractNonClusteredSessionScavengingTest extends Abstract assertNotNull(s); assertFalse(s.getId().equals(id)); } + else if ("old-test".equals(action)) + { + HttpSession s = request.getSession(false); + assertNotNull(s); + assertTrue(s.getId().equals(id)); + } else { assertTrue(false);