KickJava   Java API By Example, From Geeks To Geeks.

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


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

29 public class SynchronousWriteTest extends AbstractAppServerTestCase {
30
31   private static final int INTENSITY = 100;
32
33   public final void testSessions() throws Exception JavaDoc {
34     setSynchronousWrite(true);
35     startDsoServer();
36
37     HttpClient client = HttpUtil.createHttpClient();
38
39     int port0 = startAppServer(true).serverPort();
40     int port1 = startAppServer(true).serverPort();
41
42     createTransactions(client, port0, SynchronousWriteTest.DsoPingPongServlet.class, "server=0");
43     URL JavaDoc url1 = new URL JavaDoc(createUrl(port1, SynchronousWriteTest.DsoPingPongServlet.class) + "?server=1&data=" + (INTENSITY-1));
44
45     assertEquals("99", HttpUtil.getResponseBody(url1, client));
46   }
47
48   private void createTransactions(HttpClient client, int port, Class JavaDoc klass, String JavaDoc params) throws Exception JavaDoc {
49     File JavaDoc dataFile = new File JavaDoc(this.getTempDirectory(), "synchwrite.txt");
50     PrintWriter JavaDoc out = new PrintWriter JavaDoc(new FileWriter JavaDoc(dataFile));
51
52     for (int i = 0; i < INTENSITY; i++) {
53       out.println("data" + i + "=" + i);
54       URL JavaDoc url0 = new URL JavaDoc(createUrl(port, klass) + "?" + params + "&data=" + i);
55       assertEquals("OK", HttpUtil.getResponseBody(url0, client));
56     }
57
58     out.close();
59   }
60
61   public static final class DsoPingPongServlet extends HttpServlet JavaDoc {
62     public void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws IOException JavaDoc {
63       HttpSession JavaDoc session = request.getSession(true);
64       response.setContentType("text/html");
65       PrintWriter JavaDoc out = response.getWriter();
66
67       String JavaDoc serverParam = request.getParameter("server");
68       String JavaDoc dataParam = request.getParameter("data");
69
70       switch (Integer.parseInt(serverParam)) {
71         case 0:
72           hit0(session, out, dataParam);
73           break;
74         case 1:
75           hit1(session, out, "data"+dataParam);
76           break;
77         default:
78           out.print("unknown value for server param: " + serverParam);
79       }
80     }
81
82     private void hit1(HttpSession JavaDoc session, PrintWriter JavaDoc out, String JavaDoc attrName) {
83       System.err.println("### hit1: sessionId = " + session.getId());
84       String JavaDoc value = (String JavaDoc) session.getAttribute(attrName);
85       System.err.println(attrName + "=" + value);
86       if (value == null) {
87         out.print(attrName + " is null");
88       } else {
89         out.print(value);
90       }
91     }
92
93     private void hit0(HttpSession JavaDoc session, PrintWriter JavaDoc out, String JavaDoc dataParam) {
94       System.err.println("### hit0: sessionId = " + session.getId());
95       System.err.println("setAttribute: " + "data" + dataParam);
96       session.setAttribute("data" + dataParam, dataParam);
97       out.print("OK");
98     }
99   }
100 }
101
Popular Tags