| 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.File ; 13 import java.io.FileWriter ; 14 import java.io.IOException ; 15 import java.io.PrintWriter ; 16 import java.net.URL ; 17 18 import javax.servlet.http.HttpServlet ; 19 import javax.servlet.http.HttpServletRequest ; 20 import javax.servlet.http.HttpServletResponse ; 21 import javax.servlet.http.HttpSession ; 22 23 29 public class SynchronousWriteTest extends AbstractAppServerTestCase { 30 31 private static final int INTENSITY = 100; 32 33 public final void testSessions() throws Exception { 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 url1 = new URL (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 klass, String params) throws Exception { 49 File dataFile = new File (this.getTempDirectory(), "synchwrite.txt"); 50 PrintWriter out = new PrintWriter (new FileWriter (dataFile)); 51 52 for (int i = 0; i < INTENSITY; i++) { 53 out.println("data" + i + "=" + i); 54 URL url0 = new URL (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 { 62 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 63 HttpSession session = request.getSession(true); 64 response.setContentType("text/html"); 65 PrintWriter out = response.getWriter(); 66 67 String serverParam = request.getParameter("server"); 68 String 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 session, PrintWriter out, String attrName) { 83 System.err.println("### hit1: sessionId = " + session.getId()); 84 String value = (String ) 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 session, PrintWriter out, String 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 |