KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > server > appserver > unit > SimpleDsoSessionsTest


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
3  * notice. All rights reserved.
4  */

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 JavaDoc;
13 import java.io.PrintWriter JavaDoc;
14 import java.net.URL JavaDoc;
15
16 import javax.servlet.http.HttpServlet JavaDoc;
17 import javax.servlet.http.HttpServletRequest JavaDoc;
18 import javax.servlet.http.HttpServletResponse JavaDoc;
19 import javax.servlet.http.HttpSession JavaDoc;
20
21 /**
22  * Simplest test case for DSO. This class should be used as a model for building container based tests. A feature which
23  * was omitted in this test is the overloaded startAppServer() method which also takes a properties file. These
24  * properties will then be available to the innerclass servlet below as system properties. View the superclass
25  * description for more information about general usage.
26  */

27 public class SimpleDsoSessionsTest extends AbstractAppServerTestCase {
28
29   public final void testSessions() throws Exception JavaDoc {
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 JavaDoc url0 = new URL JavaDoc(createUrl(port0, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=0");
39     URL JavaDoc url1 = new URL JavaDoc(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 JavaDoc {
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 JavaDoc url0 = new URL JavaDoc(createUrl(port0, SimpleDsoSessionsTest.DsoPingPongServlet.class) + "?server=0");
56     URL JavaDoc url1 = new URL JavaDoc(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 JavaDoc {
63
64     private static final String JavaDoc ATTR_NAME = "test-attribute";
65
66     public void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc {
67       HttpSession JavaDoc session = request.getSession(true);
68       response.setContentType("text/html");
69       PrintWriter JavaDoc out = response.getWriter();
70
71       String JavaDoc 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 JavaDoc session, PrintWriter JavaDoc 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 JavaDoc value = (String JavaDoc) 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 JavaDoc session, PrintWriter JavaDoc 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 JavaDoc value = (String JavaDoc) 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