Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse McConnell2012-08-27 16:31:34 +0000
committerJesse McConnell2012-08-27 16:31:34 +0000
commit94c2dec2e261d144a48b38c24da0146694674c37 (patch)
treebdd911b548a3bebcbf1f481c1fbb3e35d4e95b62
parentad63e3f3f1fa6785e3d65382783d53b47957c860 (diff)
downloadorg.eclipse.jetty.project-94c2dec2e261d144a48b38c24da0146694674c37.tar.gz
org.eclipse.jetty.project-94c2dec2e261d144a48b38c24da0146694674c37.tar.xz
org.eclipse.jetty.project-94c2dec2e261d144a48b38c24da0146694674c37.zip
add some session tests to the hash session manager, and a new one focusing on session cookie processing
-rw-r--r--tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java12
-rw-r--r--tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionCookieTest.java12
-rw-r--r--tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionValueSharedSaving.java12
-rw-r--r--tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCookieTest.java166
4 files changed, 202 insertions, 0 deletions
diff --git a/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java
new file mode 100644
index 0000000000..e57a0378f2
--- /dev/null
+++ b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java
@@ -0,0 +1,12 @@
+package org.eclipse.jetty.server.session;
+
+public class ImmortalSessionTest extends AbstractImmortalSessionTest
+{
+
+ @Override
+ public AbstractTestServer createServer(int port, int max, int scavenge)
+ {
+ return new HashTestServer(port,max,scavenge);
+ }
+
+}
diff --git a/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionCookieTest.java b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionCookieTest.java
new file mode 100644
index 0000000000..83bea12f3f
--- /dev/null
+++ b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionCookieTest.java
@@ -0,0 +1,12 @@
+package org.eclipse.jetty.server.session;
+
+public class SessionCookieTest extends AbstractSessionCookieTest
+{
+
+ @Override
+ public AbstractTestServer createServer(int port, int max, int scavenge)
+ {
+ return new HashTestServer(port, max, scavenge);
+ }
+
+}
diff --git a/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionValueSharedSaving.java b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionValueSharedSaving.java
new file mode 100644
index 0000000000..ceeee387f7
--- /dev/null
+++ b/tests/test-sessions/test-hash-sessions/src/test/java/org/eclipse/jetty/server/session/SessionValueSharedSaving.java
@@ -0,0 +1,12 @@
+package org.eclipse.jetty.server.session;
+
+public class SessionValueSharedSaving extends AbstractSessionValueSavingTest
+{
+
+ @Override
+ public AbstractTestServer createServer(int port, int max, int scavenge)
+ {
+ return new HashTestServer(port,max,scavenge);
+ }
+
+}
diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCookieTest.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCookieTest.java
new file mode 100644
index 0000000000..eb1629d0ff
--- /dev/null
+++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCookieTest.java
@@ -0,0 +1,166 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.server.session;
+
+import java.io.IOException;
+import java.util.Random;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import junit.framework.Assert;
+
+import org.eclipse.jetty.client.Address;
+import org.eclipse.jetty.client.ContentExchange;
+import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.HttpDestination;
+import org.eclipse.jetty.http.HttpCookie;
+import org.eclipse.jetty.http.HttpMethods;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.util.log.Log;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * AbstractNewSessionTest
+ */
+public abstract class AbstractSessionCookieTest
+{
+ public abstract AbstractTestServer createServer(int port, int max, int scavenge);
+
+ public void pause(int scavenge)
+ {
+ try
+ {
+ Thread.sleep(scavenge * 2500L);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ @Ignore("failing because an http cookie with null value is coming over as \"null\"")
+ public void testSessionCookie() throws Exception
+ {
+ String contextPath = "";
+ String servletMapping = "/server";
+ int scavengePeriod = 3;
+ AbstractTestServer server = createServer(0, 1, scavengePeriod);
+ ServletContextHandler context = server.addContext(contextPath);
+ context.addServlet(TestServlet.class, servletMapping);
+ server.start();
+ int port=server.getPort();
+ try
+ {
+ HttpClient client = new HttpClient();
+ client.setConnectorType(HttpClient.CONNECTOR_SOCKET);
+ client.start();
+ try
+ {
+ ContentExchange exchange = new ContentExchange(true);
+ exchange.setMethod(HttpMethods.GET);
+ exchange.setURL("http://localhost:" + port + contextPath + servletMapping + "?action=create");
+ client.send(exchange);
+ exchange.waitForDone();
+ assertEquals(HttpServletResponse.SC_OK,exchange.getResponseStatus());
+ String sessionCookie = exchange.getResponseFields().getStringField("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, waiting 2.5 times the scavenger period
+ //pause(scavengePeriod);
+
+ exchange = new ContentExchange(true);
+ exchange.setMethod(HttpMethods.GET);
+ exchange.setURL("http://localhost:" + port + contextPath + servletMapping + "?action=check-cookie");
+ exchange.getRequestFields().add("Cookie", sessionCookie);
+ client.send(exchange);
+ exchange.waitForDone();
+ assertEquals(HttpServletResponse.SC_OK,exchange.getResponseStatus());
+
+ exchange = new ContentExchange(true);
+ exchange.setMethod(HttpMethods.GET);
+ exchange.setURL("http://localhost:" + port + contextPath + servletMapping + "?action=null-cookie");
+ //exchange.getRequestFields().add("Cookie", "null");
+ HttpDestination dest = client.getDestination(new Address("localhost",port),false);
+
+ dest.addCookie(new HttpCookie("Cookie",null));
+
+ client.send(exchange);
+ exchange.waitForDone();
+ assertEquals(HttpServletResponse.SC_OK,exchange.getResponseStatus());
+ }
+ finally
+ {
+ client.stop();
+ }
+ }
+ finally
+ {
+ server.stop();
+ }
+
+ }
+ public static class TestServlet extends HttpServlet
+ {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+ {
+ String action = request.getParameter("action");
+ if ("create".equals(action))
+ {
+ HttpSession session = request.getSession(true);
+ assertTrue(session.isNew());
+ }
+ else if ("check-cookie".equals(action))
+ {
+ HttpSession session = request.getSession(false);
+
+ Log.info("session {}", session );
+
+ assertTrue(session != null);
+
+ //request.getSession(true);
+ }
+ else if ("null-cookie".equals(action))
+ {
+ HttpSession session = request.getSession(false);
+
+ assertEquals(1, request.getCookies().length);
+
+ Assert.assertFalse("null".equals(request.getCookies()[0].getValue()));
+
+ assertTrue(session == null);
+
+ }
+ else
+ {
+ assertTrue(false);
+ }
+ }
+ }
+}

Back to the top