diff options
author | Jan Bartel | 2015-11-04 09:10:48 +0000 |
---|---|---|
committer | Jan Bartel | 2015-11-04 09:10:48 +0000 |
commit | 883431c2fceb6c599a6319360aeb3e4d0f49a765 (patch) | |
tree | d1c03767a00f03cde97830ba11bec3e1bdd34f75 | |
parent | 0fea6e7bfa3cf7dbf8841c1707b2e1006b3a73c1 (diff) | |
download | org.eclipse.jetty.project-883431c2fceb6c599a6319360aeb3e4d0f49a765.tar.gz org.eclipse.jetty.project-883431c2fceb6c599a6319360aeb3e4d0f49a765.tar.xz org.eclipse.jetty.project-883431c2fceb6c599a6319360aeb3e4d0f49a765.zip |
481075 Infinispan Session statistics are not accurate
14 files changed, 186 insertions, 48 deletions
diff --git a/jetty-infinispan/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionManager.java b/jetty-infinispan/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionManager.java index 9fba0906e0..d2109ec237 100644 --- a/jetty-infinispan/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionManager.java +++ b/jetty-infinispan/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionManager.java @@ -673,7 +673,7 @@ public class InfinispanSessionManager extends AbstractSessionManager Set<String> candidateIds = new HashSet<String>(); long now = System.currentTimeMillis(); - LOG.info("SessionManager for context {} scavenging at {} ", getContextPath(getContext()), now); + LOG.info("SessionManager node="+getSessionIdManager().getWorkerName()+" for context {} scavenging at {} ", getContextPath(getContext()), now); synchronized (_sessions) { for (Map.Entry<String, Session> entry:_sessions.entrySet()) @@ -714,6 +714,7 @@ public class InfinispanSessionManager extends AbstractSessionManager if (LOG.isDebugEnabled()) LOG.debug("Session({}) not local to this session manager, removing from local memory", candidateId); candidateSession.willPassivate(); _sessions.remove(candidateSession.getClusterId()); + _sessionsStats.decrement(); } } @@ -893,6 +894,7 @@ public class InfinispanSessionManager extends AbstractSessionManager { //indicate that the session was reinflated session.didActivate(); + _sessionsStats.increment(); LOG.debug("getSession({}): loaded session from cluster", idInCluster); } return session; diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java index f021a70d62..40def339b3 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java @@ -19,10 +19,6 @@ package org.eclipse.jetty.server.session; -import org.infinispan.Cache; -import org.infinispan.configuration.cache.ConfigurationBuilder; -import org.infinispan.manager.DefaultCacheManager; -import org.infinispan.manager.EmbeddedCacheManager; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSessionServer.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSessionServer.java index c6b21229a5..cb21f20e09 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSessionServer.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSessionServer.java @@ -23,9 +23,7 @@ import org.eclipse.jetty.server.SessionIdManager; import org.eclipse.jetty.server.SessionManager; import org.eclipse.jetty.session.infinispan.InfinispanSessionIdManager; import org.eclipse.jetty.session.infinispan.InfinispanSessionManager; -import org.infinispan.Cache; import org.infinispan.commons.api.BasicCache; -import org.infinispan.commons.util.CloseableIteratorSet; public class InfinispanTestSessionServer extends AbstractTestServer { diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InvalidationSessionTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InvalidationSessionTest.java index 10afc28def..f6e60ca33b 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InvalidationSessionTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InvalidationSessionTest.java @@ -21,6 +21,7 @@ package org.eclipse.jetty.server.session; import org.junit.AfterClass; import org.junit.BeforeClass; +import static org.junit.Assert.assertEquals; /** * InvalidationSessionTest @@ -88,4 +89,22 @@ public class InvalidationSessionTest extends AbstractInvalidationSessionTest } } + public void assertSessionsAfterCreation (AbstractSessionManager m) + { + assertSessions(1,1,1, m); + } + + public void assertSessionsAfterInvalidation (AbstractSessionManager m) + { + assertSessions(0,1,1, m); + } + + public void assertSessions (int count, int max, int total, AbstractSessionManager m) + { + assertEquals(count, m.getSessions()); + assertEquals(max, m.getSessionsMax()); + assertEquals(total, m.getSessionsTotal()); + } + + } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LastAccessTimeTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LastAccessTimeTest.java index 25c0ad2308..9c5eb1d4aa 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LastAccessTimeTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LastAccessTimeTest.java @@ -18,14 +18,7 @@ package org.eclipse.jetty.server.session; -import java.io.File; - -import org.eclipse.jetty.util.IO; -import org.infinispan.Cache; -import org.infinispan.configuration.cache.Configuration; -import org.infinispan.configuration.cache.ConfigurationBuilder; -import org.infinispan.manager.DefaultCacheManager; -import org.infinispan.manager.EmbeddedCacheManager; +import static org.junit.Assert.assertEquals; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -60,6 +53,27 @@ public class LastAccessTimeTest extends AbstractLastAccessTimeTest { super.testLastAccessTime(); } + + @Override + public void assertSessionsAfterCreation (AbstractSessionManager m) + { + assertSessions(1,1,1, m); + } + + public void assertSessions (int count, int max, int total, AbstractSessionManager m) + { + assertEquals(count, m.getSessions()); + assertEquals(max, m.getSessionsMax()); + assertEquals(total, m.getSessionsTotal()); + } + + @Override + public void assertSessionsAfterScavenge(AbstractSessionManager m) + { + //the InfinispanSessionManager will throw a session out of memory if it is checked + //against the cluster during scavenge and found to be managed by another node + assertSessions(0, 1, 1, m); + } } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LocalSessionScavengingTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LocalSessionScavengingTest.java index 58e17de60c..2fd592844e 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LocalSessionScavengingTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LocalSessionScavengingTest.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.server.session; +import static org.junit.Assert.assertEquals; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -56,4 +57,23 @@ public class LocalSessionScavengingTest extends AbstractLocalSessionScavengingTe return new InfinispanTestSessionServer(port, max, scavenge, __testSupport.getCache()); } + @Override + public void assertSessionsAfterCreation(AbstractSessionManager m) + { + assertSessions(1,1,1,m); + } + + @Override + public void assertSessionsAfterScavenge(AbstractSessionManager m) + { + assertSessions(0,1,1,m); + } + + public void assertSessions (int count, int max, int total, AbstractSessionManager m) + { + assertEquals(count, m.getSessions()); + assertEquals(max, m.getSessionsMax()); + assertEquals(total, m.getSessionsTotal()); + } + } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClientCrossContextSessionTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClientCrossContextSessionTest.java index c7fe124e9c..fdc880ced7 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClientCrossContextSessionTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClientCrossContextSessionTest.java @@ -25,7 +25,6 @@ import org.eclipse.jetty.server.session.AbstractTestServer; import org.eclipse.jetty.server.session.InfinispanTestSessionServer; import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; /** diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteImmortalSessionTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteImmortalSessionTest.java index 3654fe02a8..f93d5b01d6 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteImmortalSessionTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteImmortalSessionTest.java @@ -22,10 +22,6 @@ package org.eclipse.jetty.server.session.remote; import org.eclipse.jetty.server.session.AbstractImmortalSessionTest; import org.eclipse.jetty.server.session.AbstractTestServer; import org.eclipse.jetty.server.session.InfinispanTestSessionServer; -import org.infinispan.Cache; -import org.infinispan.configuration.cache.ConfigurationBuilder; -import org.infinispan.manager.DefaultCacheManager; -import org.infinispan.manager.EmbeddedCacheManager; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java index a936e20a4a..cb4a1374ea 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java @@ -19,17 +19,8 @@ package org.eclipse.jetty.server.session.remote; -import java.io.File; - -import org.eclipse.jetty.util.IO; -import org.infinispan.Cache; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; -import org.infinispan.configuration.cache.Configuration; -import org.infinispan.configuration.cache.ConfigurationBuilder; -import org.infinispan.configuration.global.GlobalConfigurationBuilder; -import org.infinispan.manager.DefaultCacheManager; -import org.infinispan.manager.EmbeddedCacheManager; /** * RemoteInfinispanTestSupport diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLastAccessTimeTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLastAccessTimeTest.java index e4e82fa99a..1d1d2e1221 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLastAccessTimeTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLastAccessTimeTest.java @@ -18,17 +18,12 @@ package org.eclipse.jetty.server.session.remote; -import java.io.File; - import org.eclipse.jetty.server.session.AbstractLastAccessTimeTest; +import org.eclipse.jetty.server.session.AbstractSessionManager; import org.eclipse.jetty.server.session.AbstractTestServer; import org.eclipse.jetty.server.session.InfinispanTestSessionServer; -import org.eclipse.jetty.util.IO; -import org.infinispan.Cache; -import org.infinispan.configuration.cache.Configuration; -import org.infinispan.configuration.cache.ConfigurationBuilder; -import org.infinispan.manager.DefaultCacheManager; -import org.infinispan.manager.EmbeddedCacheManager; + +import static org.junit.Assert.assertEquals; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -63,5 +58,26 @@ public class RemoteLastAccessTimeTest extends AbstractLastAccessTimeTest super.testLastAccessTime(); } + + @Override + public void assertSessionsAfterCreation (AbstractSessionManager m) + { + assertSessions(1,1,1, m); + } + + public void assertSessions (int count, int max, int total, AbstractSessionManager m) + { + assertEquals(count, m.getSessions()); + assertEquals(max, m.getSessionsMax()); + assertEquals(total, m.getSessionsTotal()); + } + + @Override + public void assertSessionsAfterScavenge(AbstractSessionManager m) + { + //the InfinispanSessionManager will throw a session out of memory if it is checked + //against the cluster during scavenge and found to be managed by another node + assertSessions(0, 1, 1, m); + } } diff --git a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLocalSessionScavengingTest.java b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLocalSessionScavengingTest.java index 1881ab7bb7..d3e36cc7d3 100644 --- a/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLocalSessionScavengingTest.java +++ b/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLocalSessionScavengingTest.java @@ -20,8 +20,12 @@ package org.eclipse.jetty.server.session.remote; import org.eclipse.jetty.server.session.AbstractLocalSessionScavengingTest; +import org.eclipse.jetty.server.session.AbstractSessionManager; import org.eclipse.jetty.server.session.AbstractTestServer; import org.eclipse.jetty.server.session.InfinispanTestSessionServer; + +import static org.junit.Assert.assertEquals; + import org.junit.AfterClass; import org.junit.BeforeClass; @@ -57,5 +61,25 @@ public class RemoteLocalSessionScavengingTest extends AbstractLocalSessionScaven { return new InfinispanTestSessionServer(port, max, scavenge, __testSupport.getCache()); } + @Override + public void assertSessionsAfterCreation(AbstractSessionManager m) + { + assertSessions(1,1,1,m); + } + + @Override + public void assertSessionsAfterScavenge(AbstractSessionManager m) + { + assertSessions(0,1,1,m); + } + + public void assertSessions (int count, int max, int total, AbstractSessionManager m) + { + assertEquals(count, m.getSessions()); + assertEquals(max, m.getSessionsMax()); + assertEquals(total, m.getSessionsTotal()); + } + + } diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractInvalidationSessionTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractInvalidationSessionTest.java index 001b3e029c..8bc61c042a 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractInvalidationSessionTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractInvalidationSessionTest.java @@ -32,6 +32,7 @@ import javax.servlet.http.HttpSession; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.junit.Test; @@ -51,7 +52,8 @@ public abstract class AbstractInvalidationSessionTest String contextPath = ""; String servletMapping = "/server"; AbstractTestServer server1 = createServer(0); - server1.addContext(contextPath).addServlet(TestServlet.class, servletMapping); + ServletContextHandler context1 = server1.addContext(contextPath); + context1.addServlet(TestServlet.class, servletMapping); try @@ -59,7 +61,8 @@ public abstract class AbstractInvalidationSessionTest server1.start(); int port1 = server1.getPort(); AbstractTestServer server2 = createServer(0); - server2.addContext(contextPath).addServlet(TestServlet.class, servletMapping); + ServletContextHandler context2 = server2.addContext(contextPath); + context2.addServlet(TestServlet.class, servletMapping); try { @@ -81,22 +84,27 @@ public abstract class AbstractInvalidationSessionTest assertEquals(HttpServletResponse.SC_OK,response1.getStatus()); String sessionCookie = response1.getHeaders().getStringField("Set-Cookie"); assertTrue(sessionCookie != null); + assertSessionsAfterCreation((AbstractSessionManager)context1.getSessionHandler().getSessionManager()); + + // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); // Be sure the session is also present in node2 - Request request2 = client.newRequest(urls[1] + "?action=increment"); request2.header("Cookie", sessionCookie); ContentResponse response2 = request2.send(); assertEquals(HttpServletResponse.SC_OK,response2.getStatus()); - + assertSessionsAfterCreation(((AbstractSessionManager)context2.getSessionHandler().getSessionManager())); + + // Invalidate on node1 Request request1 = client.newRequest(urls[0] + "?action=invalidate"); request1.header("Cookie", sessionCookie); response1 = request1.send(); assertEquals(HttpServletResponse.SC_OK, response1.getStatus()); - + assertSessionsAfterInvalidation((AbstractSessionManager)context1.getSessionHandler().getSessionManager()); + pause(); // Be sure on node2 we don't see the session anymore @@ -104,7 +112,8 @@ public abstract class AbstractInvalidationSessionTest request2.header("Cookie", sessionCookie); response2 = request2.send(); assertEquals(HttpServletResponse.SC_OK,response2.getStatus()); - } + assertSessionsAfterInvalidation((AbstractSessionManager)context2.getSessionHandler().getSessionManager()); + } finally { client.stop(); @@ -120,6 +129,21 @@ public abstract class AbstractInvalidationSessionTest server1.stop(); } } + + + + public void assertSessionsAfterCreation(AbstractSessionManager abstractSessionManager) + { + + } + + + public void assertSessionsAfterInvalidation(AbstractSessionManager sessionManager) + { + + } + + public static class TestServlet extends HttpServlet { diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLastAccessTimeTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLastAccessTimeTest.java index 67aa0f7aab..6ba70ec2a3 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLastAccessTimeTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLastAccessTimeTest.java @@ -73,7 +73,8 @@ public abstract class AbstractLastAccessTimeTest server1.start(); int port1=server1.getPort(); AbstractTestServer server2 = createServer(0, maxInactivePeriod, scavengePeriod); - server2.addContext(contextPath).addServlet(TestServlet.class, servletMapping); + ServletContextHandler context2 = server2.addContext(contextPath); + context2.addServlet(TestServlet.class, servletMapping); try { @@ -89,6 +90,9 @@ public abstract class AbstractLastAccessTimeTest assertEquals("test", response1.getContentAsString()); String sessionCookie = response1.getHeaders().getStringField("Set-Cookie"); assertTrue( sessionCookie != null ); + assertSessionsAfterCreation(((AbstractSessionManager)context.getSessionHandler().getSessionManager())); + + // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); @@ -112,13 +116,15 @@ public abstract class AbstractLastAccessTimeTest Thread.sleep(requestInterval); } + assertSessionsAfterCreation((AbstractSessionManager)context2.getSessionHandler().getSessionManager()); + - // At this point, session1 should be eligible for expiration. // Let's wait for the scavenger to run, waiting 2.5 times the scavenger period Thread.sleep(scavengePeriod * 2500L); //check that the session was not scavenged over on server1 by ensuring that the SessionListener destroy method wasn't called assertFalse(listener1.destroyed); + assertSessionsAfterScavenge((AbstractSessionManager)context.getSessionHandler().getSessionManager()); } finally { @@ -135,6 +141,17 @@ public abstract class AbstractLastAccessTimeTest server1.stop(); } } + + public void assertSessionsAfterCreation (AbstractSessionManager m) + { + + } + + public void assertSessionsAfterScavenge (AbstractSessionManager m) + { + } + + public static class TestSessionListener implements HttpSessionListener { diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLocalSessionScavengingTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLocalSessionScavengingTest.java index 5d25542dae..37a61fca49 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLocalSessionScavengingTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLocalSessionScavengingTest.java @@ -33,6 +33,8 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.SessionManager; +import org.eclipse.jetty.server.session.AbstractSessionManager; +import org.eclipse.jetty.servlet.ServletContextHandler; import org.junit.Test; /** @@ -62,14 +64,16 @@ public abstract class AbstractLocalSessionScavengingTest int inactivePeriod = 1; int scavengePeriod = 2; AbstractTestServer server1 = createServer(0, inactivePeriod, scavengePeriod); - server1.addContext(contextPath).addServlet(TestServlet.class, servletMapping); + ServletContextHandler context1 = server1.addContext(contextPath); + context1.addServlet(TestServlet.class, servletMapping); try { server1.start(); int port1 = server1.getPort(); AbstractTestServer server2 = createServer(0, inactivePeriod, scavengePeriod * 3); - server2.addContext(contextPath).addServlet(TestServlet.class, servletMapping); + ServletContextHandler context2 = server2.addContext(contextPath); + context2.addServlet(TestServlet.class, servletMapping); try { @@ -88,6 +92,9 @@ public abstract class AbstractLocalSessionScavengingTest assertEquals(HttpServletResponse.SC_OK,response1.getStatus()); String sessionCookie = response1.getHeaders().getStringField("Set-Cookie"); assertTrue(sessionCookie != null); + assertSessionsAfterCreation(((AbstractSessionManager)context1.getSessionHandler().getSessionManager())); + + // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); @@ -96,7 +103,8 @@ public abstract class AbstractLocalSessionScavengingTest request.header("Cookie", sessionCookie); ContentResponse response2 = request.send(); assertEquals(HttpServletResponse.SC_OK,response2.getStatus()); - + assertSessionsAfterCreation(((AbstractSessionManager)context2.getSessionHandler().getSessionManager())); + // Wait for the scavenger to run on node1, waiting 2.5 times the scavenger period pause(scavengePeriod); @@ -106,6 +114,7 @@ public abstract class AbstractLocalSessionScavengingTest request.header("Cookie", sessionCookie); response1 = request.send(); assertEquals(HttpServletResponse.SC_OK,response1.getStatus()); + assertSessionsAfterScavenge((AbstractSessionManager)context1.getSessionHandler().getSessionManager()); // Wait for the scavenger to run on node2, waiting 2 times the scavenger period @@ -117,6 +126,7 @@ public abstract class AbstractLocalSessionScavengingTest request.header("Cookie", sessionCookie); response2 = request.send(); assertEquals(HttpServletResponse.SC_OK,response2.getStatus()); + assertSessionsAfterScavenge(((AbstractSessionManager)context2.getSessionHandler().getSessionManager())); } finally { @@ -133,6 +143,18 @@ public abstract class AbstractLocalSessionScavengingTest server1.stop(); } } + + + public void assertSessionsAfterCreation (AbstractSessionManager m) + { + + } + + public void assertSessionsAfterScavenge (AbstractSessionManager m) + { + } + + public static class TestServlet extends HttpServlet { |