1 5 package com.tctest.server.appserver.unit; 6 7 import org.apache.commons.httpclient.HttpClient; 8 9 import com.tc.test.server.appserver.unit.AbstractAppServerTestCase; 10 import com.tc.test.server.util.HttpUtil; 11 12 import java.io.IOException ; 13 import java.io.PrintWriter ; 14 import java.net.URL ; 15 16 import javax.servlet.http.HttpServlet ; 17 import javax.servlet.http.HttpServletRequest ; 18 import javax.servlet.http.HttpServletResponse ; 19 import javax.servlet.http.HttpSession ; 20 21 27 public class SimpleDsoSessionsTest extends AbstractAppServerTestCase { 28 29 public final void testSessions() throws Exception { 30 31 startDsoServer(); 32 33 HttpClient client = HttpUtil.createHttpClient(); 34 35 int port0 = startAppServer(true).serverPort(); 36 int port1 = startAppServer(true).serverPort(); 37 38 URL url0 = new URL (createUrl(port0, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=0"); 39 URL url1 = new URL (createUrl(port1, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=1"); 40 41 assertEquals("OK", HttpUtil.getResponseBody(url0, client)); 42 assertEquals("OK", HttpUtil.getResponseBody(url1, client)); 43 } 44 45 public final void testSynchronousWriteSessions() throws Exception { 46 47 setSynchronousWrite(true); 48 startDsoServer(); 49 50 HttpClient client = HttpUtil.createHttpClient(); 51 52 int port0 = startAppServer(true).serverPort(); 53 int port1 = startAppServer(true).serverPort(); 54 55 URL url0 = new URL (createUrl(port0, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=0"); 56 URL url1 = new URL (createUrl(port1, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=1"); 57 58 assertEquals("OK", HttpUtil.getResponseBody(url0, client)); 59 assertEquals("OK", HttpUtil.getResponseBody(url1, client)); 60 } 61 62 public static final class DsoPingPongServlet extends HttpServlet { 63 64 private static final String ATTR_NAME = "test-attribute"; 65 66 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 67 HttpSession session = request.getSession(true); 68 response.setContentType("text/html"); 69 PrintWriter out = response.getWriter(); 70 71 String serverParam = request.getParameter("server"); 72 if ("0".equals(serverParam)) { 73 hit0(session, out); 74 } else if ("1".equals(serverParam)) { 75 hit1(session, out); 76 } else { 77 out.print("unknown value for server param: " + serverParam); 78 } 79 } 80 81 private void hit1(HttpSession session, PrintWriter out) { 82 System.err.println("### hit1: sessionId = " + session.getId()); 83 if (session.isNew()) { 84 out.print("session is new for server 1; sessionId=" + session.getId()); 85 } else { 86 String value = (String ) session.getAttribute(ATTR_NAME); 87 if (value == null) { 88 out.print("attribute is null"); 89 } else { 90 if (value.equals("0")) { 91 out.print("OK"); 92 } else { 93 out.print("unexpected value: " + value); 94 } 95 } 96 } 97 } 98 99 private void hit0(HttpSession session, PrintWriter out) { 100 if (!session.isNew()) { 101 out.print("session is not new for server 0; sessionId=" + session.getId()); 102 return; 103 } 104 105 System.err.println("### hit0: sessionId = " + session.getId()); 106 107 String value = (String ) session.getAttribute(ATTR_NAME); 108 if (value == null) { 109 out.print("OK"); 110 session.setAttribute(ATTR_NAME, "0"); 111 } else { 112 out.print("attribute already exists: " + value); 113 } 114 } 115 } 116 } 117 | Popular Tags |