| 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.net.ConnectException ; 14 import java.net.URL ; 15 import java.util.Date ; 16 17 import javax.servlet.RequestDispatcher ; 18 import javax.servlet.ServletException ; 19 import javax.servlet.http.HttpServlet ; 20 import javax.servlet.http.HttpServletRequest ; 21 import javax.servlet.http.HttpServletResponse ; 22 23 public class RequestForwardTest extends AbstractAppServerTestCase { 24 25 public RequestForwardTest() { 26 } 28 29 public static final class ForwarderServlet extends HttpServlet { 30 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException , ServletException { 31 final String action = req.getParameter("action"); 32 final String target = req.getParameter("target"); 33 String reply = "OK"; 34 RequestDispatcher requestDispatcher = req.getRequestDispatcher(target); 35 System.err.println("### ForwarderServlet.doGet is here..."); 36 if ("s-f-s".equals(action)) { 37 req.getSession(); 38 requestDispatcher.forward(req, resp); 39 req.getSession(); 40 } else if ("n-f-s".equals(action)) { 41 requestDispatcher.forward(req, resp); 42 req.getSession(); 43 } else if ("s-f-n".equals(action)) { 44 req.getSession(); 45 System.err.println("### ForwarderServlet: calling forward ..."); 46 requestDispatcher.forward(req, resp); 47 System.err.println("### ForwarderServlet: returned from forward forward ..."); 48 } else { 49 reply = "INVALID REQUEST"; 50 resp.getWriter().print(reply); 51 resp.flushBuffer(); 52 } 53 } 54 } 55 56 public static final class ForwardeeServlet extends HttpServlet { 57 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 58 final String action = req.getParameter("action"); 59 System.err.println("### ForwardEEServlet.doGet is here..."); 60 String reply = "FORWARD OK"; 61 if (action.endsWith("s")) { 62 req.getSession(); 63 reply= "FORWARD GOT SESSION"; 64 } else if (action.endsWith("n")) { 65 reply= "FORWARD DID NOT GET SESSION"; 66 } else { 67 reply = "INVALID REQUEST"; 68 } 69 resp.getWriter().print(reply); 70 resp.flushBuffer(); 71 } 72 } 73 74 private int port; 75 76 public void testSessionForwardSession() throws Exception { 77 startDsoServer(); 78 79 port = startAppServer(true).serverPort(); 80 81 HttpClient client = HttpUtil.createHttpClient(); 82 83 URL url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0"); 85 checkResponse("INVALID REQUEST", url, client); 86 87 url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) 88 + "?action=s-f-s&target=RequestForwardTest-ForwardeeServlet"); 89 checkResponse("FORWARD GOT SESSION", url, client); 90 } 91 92 public void testForwardSession() throws Exception { 93 startDsoServer(); 94 95 port = startAppServer(true).serverPort(); 96 97 HttpClient client = HttpUtil.createHttpClient(); 98 99 URL url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0"); 101 checkResponse("INVALID REQUEST", url, client); 102 103 url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=n-f-s&target=RequestForwardTest-ForwardeeServlet"); 104 checkResponse("FORWARD GOT SESSION", url, client); 105 } 106 107 public void testSessionForward() throws Exception { 108 startDsoServer(); 109 110 port = startAppServer(true).serverPort(); 111 112 HttpClient client = HttpUtil.createHttpClient(); 113 114 URL url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=0"); 116 checkResponse("INVALID REQUEST", url, client); 117 118 url = new URL (createUrl(port, RequestForwardTest.ForwarderServlet.class) + "?action=s-f-n&target=RequestForwardTest-ForwardeeServlet"); 119 checkResponse("FORWARD DID NOT GET SESSION", url, client); 120 } 121 122 private void checkResponse(String expectedResponse, URL url, HttpClient client) throws ConnectException , IOException { 123 System.err.println("=== Send Request [" + (new Date ()) + "]: url=[" + url + "]"); 124 final String actualResponse = HttpUtil.getResponseBody(url, client); 125 System.err.println("=== Got Response [" + (new Date ()) + "]: url=[" + url + "], response=[" + actualResponse + "]"); 126 assertTimeDirection(); 127 assertEquals(expectedResponse, actualResponse); 128 } 129 } 130 | Popular Tags |