diff options
Diffstat (limited to 'tests')
7 files changed, 21 insertions, 224 deletions
diff --git a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/InvalidateSessionTest.java b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/InvalidateSessionTest.java index c1e1c0fdc4..510c8eccd9 100644 --- a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/InvalidateSessionTest.java +++ b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/InvalidateSessionTest.java @@ -37,11 +37,10 @@ public class InvalidateSessionTest extends AbstractInvalidationSessionTest { try { - Thread.currentThread().sleep(2000); + Thread.sleep(2 * MongoTestServer.STALE_INTERVAL * 1000); } - catch (Exception e) + catch (InterruptedException e) { - e.printStackTrace(); } } diff --git a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoTestServer.java b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoTestServer.java index f8c8cd369b..f85451ceb6 100644 --- a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoTestServer.java +++ b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoTestServer.java @@ -23,8 +23,10 @@ import java.net.UnknownHostException; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.SessionIdManager; import org.eclipse.jetty.server.SessionManager; +import org.eclipse.jetty.server.session.AbstractSessionStore; import org.eclipse.jetty.server.session.AbstractTestServer; import org.eclipse.jetty.server.session.SessionHandler; +import org.eclipse.jetty.server.session.StalePeriodStrategy; import com.mongodb.BasicDBObject; import com.mongodb.DBCursor; @@ -37,6 +39,7 @@ import com.mongodb.MongoException; */ public class MongoTestServer extends AbstractTestServer { + public static final int STALE_INTERVAL = 1; static int __workers=0; @@ -100,6 +103,10 @@ public class MongoTestServer extends AbstractTestServer try { manager = new MongoSessionManager(); + manager.getSessionDataStore().setGracePeriodSec(_scavengePeriod); + StalePeriodStrategy staleStrategy = new StalePeriodStrategy(); + staleStrategy.setStaleSec(STALE_INTERVAL); + ((AbstractSessionStore)manager.getSessionStore()).setStaleStrategy(staleStrategy); } catch (Exception e) { diff --git a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/SessionSavingValueTest.java b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/SessionSavingValueTest.java index 61b4db120d..52fe20cb52 100644 --- a/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/SessionSavingValueTest.java +++ b/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/SessionSavingValueTest.java @@ -18,229 +18,26 @@ package org.eclipse.jetty.nosql.mongodb; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.io.PrintWriter; -import java.io.Serializable; -import java.lang.management.ManagementFactory; -import java.net.MalformedURLException; - -import javax.management.remote.JMXServiceURL; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.jmx.ConnectorServer; -import org.eclipse.jetty.jmx.MBeanContainer; -import org.eclipse.jetty.nosql.NoSqlSessionDataStore.NoSqlSessionData; -import org.eclipse.jetty.server.session.Session; import org.eclipse.jetty.server.session.AbstractSessionValueSavingTest; import org.eclipse.jetty.server.session.AbstractTestServer; -import org.junit.Ignore; import org.junit.Test; public class SessionSavingValueTest extends AbstractSessionValueSavingTest { - - + @Override public AbstractTestServer createServer(int port, int max, int scavenge) { - ConnectorServer srv = null; - try - { - srv = new ConnectorServer( - new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:0/jettytest"), - "org.eclipse.jetty:name=rmiconnectorserver"); - srv.start(); - - MongoTestServer server = new MongoTestServer(port,max,scavenge,true); - - MBeanContainer mbean = new MBeanContainer(ManagementFactory.getPlatformMBeanServer()); - - //server.getServer().getContainer().addEventListener(mbean); - server.getServer().addBean(mbean); - - //mbean.start(); - - return server; - - } - catch (MalformedURLException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - catch (Exception e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return null; + return new MongoTestServer(port, max, scavenge); } - - @Ignore ("requires mongodb server") + @Test public void testSessionValueSaving() throws Exception { - String contextPath = ""; - String servletMapping = "/server"; - int maxInactivePeriod = 10000; - int scavengePeriod = 20000; - AbstractTestServer server1 = createServer(0,maxInactivePeriod,scavengePeriod); - server1.addContext(contextPath).addServlet(TestServlet.class,servletMapping); - server1.start(); - int port1 = server1.getPort(); - try - { - - HttpClient client = new HttpClient(); - client.start(); - try - { - String[] sessionTestValue = new String[] - { "0", "null" }; - - // Perform one request to server1 to create a session - ContentResponse response = client.GET("http://localhost:" + port1 + contextPath + servletMapping + "?action=init"); - - assertEquals(HttpServletResponse.SC_OK,response.getStatus()); - - String[] sessionTestResponse = response.getContentAsString().split("/"); - assertTrue(Long.parseLong(sessionTestValue[0]) < Long.parseLong(sessionTestResponse[0])); - - sessionTestValue = sessionTestResponse; - - 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="); - - // Perform some request to server2 using the session cookie from the previous request - // This should migrate the session from server1 to server2, and leave server1's - // session in a very stale state, while server2 has a very fresh session. - // We want to test that optimizations done to the saving of the shared lastAccessTime - // do not break the correct working - int requestInterval = 500; - - for (int i = 0; i < 10; ++i) - { - Request request2 = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping); - request2.header("Cookie",sessionCookie); - ContentResponse response2 = request2.send(); - - assertEquals(HttpServletResponse.SC_OK,response2.getStatus()); - - sessionTestResponse = response2.getContentAsString().split("/"); - - assertTrue(Long.parseLong(sessionTestValue[0]) < Long.parseLong(sessionTestResponse[0])); - assertTrue(Long.parseLong(sessionTestValue[1]) < Long.parseLong(sessionTestResponse[1])); - - sessionTestValue = sessionTestResponse; - - String setCookie = response2.getHeaders().get("Set-Cookie"); - if (setCookie != null) - sessionCookie = setCookie.replaceFirst("(\\W)(P|p)ath=","$1\\$Path="); - - Thread.sleep(requestInterval); - } - - // Thread.sleep(320000); - } - finally - { - client.stop(); - } - } - finally - { - server1.stop(); - } - } - - public static class TestServlet extends HttpServlet - { - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse httpServletResponse) throws ServletException, IOException - { - String action = request.getParameter("action"); - if ("init".equals(action)) - { - Session session = (Session)request.getSession(true); - session.setAttribute("test",System.currentTimeMillis()); - session.setAttribute("objectTest", new Pojo("foo","bar")); - - sendResult(session,httpServletResponse.getWriter()); - - } - else - { - Session session = (Session)request.getSession(false); - if (session != null) - { - long value = System.currentTimeMillis(); - session.setAttribute("test",value); - - } - - sendResult(session,httpServletResponse.getWriter()); - - Pojo p = (Pojo)session.getAttribute("objectTest"); - - //System.out.println(p.getName() + " / " + p.getValue() ); - } - - } - - private void sendResult(Session session, PrintWriter writer) - { - /* if (session != null) - { - if ((NoSqlSessionData)(session.getSessionData()).getVersion() == null) - { - writer.print(session.getAttribute("test") + "/-1"); - } - else - { - writer.print(session.getAttribute("test") + "/" + session.getVersion()); - } - } - else - { - writer.print("0/-1"); - }*/ - } - - public class Pojo implements Serializable - { - private String _name; - private String _value; - - public Pojo( String name, String value ) - { - _name = name; - _value = value; - } - - public String getName() - { - return _name; - } - - public String getValue() - { - return _value; - } - } - + super.testSessionValueSaving(); } + + } diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionExpiryTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionExpiryTest.java index 5c11f8b35c..0deae61b04 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionExpiryTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionExpiryTest.java @@ -175,7 +175,7 @@ public abstract class AbstractSessionExpiryTest port1 = server1.getPort(); url = "http://localhost:" + port1 + contextPath + servletMapping; - + //make another request, the session should have expired Request request = client.newRequest(url + "?action=test"); request.getHeaders().add("Cookie", sessionCookie); diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionRenewTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionRenewTest.java index 0899fac669..c5dc7121e4 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionRenewTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionRenewTest.java @@ -78,6 +78,7 @@ public abstract class AbstractSessionRenewTest Request request = client.newRequest("http://localhost:" + port + contextPath + servletMapping + "?action=renew"); request.header("Cookie", sessionCookie); ContentResponse renewResponse = request.send(); + assertEquals(HttpServletResponse.SC_OK,renewResponse.getStatus()); String renewSessionCookie = renewResponse.getHeaders().get("Set-Cookie"); assertNotNull(renewSessionCookie); @@ -130,7 +131,6 @@ public abstract class AbstractSessionRenewTest assertTrue(beforeSession != null); String beforeSessionId = beforeSession.getId(); - ((Session)beforeSession).renewId(request); HttpSession afterSession = request.getSession(false); diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionValueSavingTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionValueSavingTest.java index 8b0851b00c..f2c8ebb18e 100644 --- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionValueSavingTest.java +++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionValueSavingTest.java @@ -77,9 +77,6 @@ public abstract class AbstractSessionValueSavingTest // Mangle the cookie, replacing Path with $Path, etc. sessionCookie = sessionCookie.replaceFirst("(\\W)(P|p)ath=", "$1\\$Path="); - // Perform some request to server2 using the session cookie from the previous request - // This should migrate the session from server1 to server2, and leave server1's - // session in a very stale state, while server2 has a very fresh session. // We want to test that optimizations done to the saving of the shared lastAccessTime // do not break the correct working int requestInterval = 500; @@ -130,13 +127,10 @@ public abstract class AbstractSessionValueSavingTest else { HttpSession session = request.getSession(false); - System.out.println("not init call " + session); if (session!=null) { - long value = System.currentTimeMillis(); - System.out.println("Setting test to : " + value); + long value = System.currentTimeMillis(); session.setAttribute("test", value); - } sendResult(session, httpServletResponse.getWriter()); diff --git a/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java b/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java index a1d0f6bf74..3818694b1a 100644 --- a/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java +++ b/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java @@ -44,7 +44,7 @@ import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.HandlerWrapper; import org.eclipse.jetty.server.handler.RequestLogHandler; import org.eclipse.jetty.server.handler.ResourceHandler; -import org.eclipse.jetty.server.session.HashSessionManager; +import org.eclipse.jetty.server.session.FileSessionManager; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; import org.eclipse.jetty.util.log.StdErrLog; @@ -131,8 +131,8 @@ public class TestServer sessiondir.delete(); sessiondir.mkdir(); sessiondir.deleteOnExit(); - ((HashSessionManager)webapp.getSessionHandler().getSessionManager()).setStoreDirectory(sessiondir); - ((HashSessionManager)webapp.getSessionHandler().getSessionManager()).setSavePeriod(10); + ((FileSessionManager)webapp.getSessionHandler().getSessionManager()).getSessionDataStore().setStoreDir(sessiondir); + //((HashSessionManager)webapp.getSessionHandler().getSessionManager()).setSavePeriod(10); contexts.addHandler(webapp); |