Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2015-11-04 09:10:48 +0000
committerJan Bartel2015-11-04 09:10:48 +0000
commit883431c2fceb6c599a6319360aeb3e4d0f49a765 (patch)
treed1c03767a00f03cde97830ba11bec3e1bdd34f75
parent0fea6e7bfa3cf7dbf8841c1707b2e1006b3a73c1 (diff)
downloadorg.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
-rw-r--r--jetty-infinispan/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionManager.java4
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java4
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSessionServer.java2
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InvalidationSessionTest.java19
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LastAccessTimeTest.java30
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/LocalSessionScavengingTest.java20
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClientCrossContextSessionTest.java1
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteImmortalSessionTest.java4
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java9
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLastAccessTimeTest.java32
-rw-r--r--tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteLocalSessionScavengingTest.java24
-rw-r--r--tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractInvalidationSessionTest.java36
-rw-r--r--tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLastAccessTimeTest.java21
-rw-r--r--tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractLocalSessionScavengingTest.java28
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
{

Back to the top