Author: rjung
Date: Sat Dec 13 21:32:36 2014
New Revision: 1645358
URL: http://svn.apache.org/r1645358
Log:
- Add lots of info the SnooServlet output.
- Add SnoopResult class to parse SnoopServlet
response body.
- Adjust TestRewriteValve to use the new
SnoopServlet / SnoopResult
The more powerful SnoopServlet will be used in
forthcoming AJP protocol tests.
Modified:
tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
Modified: tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java?rev=1645358&r1=1645357&r2=1645358&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java Sat Dec
13 21:32:36 2014
@@ -25,13 +25,17 @@ import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import static org.junit.Assert.fail;
@@ -232,21 +236,225 @@ public abstract class TomcatBaseTest ext
}
+ public final class SnoopResult {
+
+ private final HashMap<String, String> request =
+ new HashMap<String, String>();
+ private final HashMap<String, String> contextInitParameters =
+ new HashMap<String, String>();
+ private final HashMap<String, String> contextAttributes =
+ new HashMap<String, String>();
+ private final HashMap<String, String> headers =
+ new HashMap<String, String>();
+ private final HashMap<String, String> attributes =
+ new HashMap<String, String>();
+ private final HashMap<String, String> params =
+ new HashMap<String, String>();
+ private final HashMap<String, String> sessionAttributes =
+ new HashMap<String, String>();
+
+ public HashMap<String, String> getRequest() {
+ return request;
+ }
+
+ public HashMap<String, String> getContextInitParameters() {
+ return contextInitParameters;
+ }
+
+ public HashMap<String, String> getContextAttributes() {
+ return contextAttributes;
+ }
+
+ public HashMap<String, String> getHeaders() {
+ return headers;
+ }
+
+ public HashMap<String, String> getAttributes() {
+ return attributes;
+ }
+
+ public HashMap<String, String> getParams() {
+ return params;
+ }
+
+ public HashMap<String, String> getSessionAttributes() {
+ return sessionAttributes;
+ }
+
+ public SnoopResult(String body) {
+
+ int n;
+ int m;
+ String key;
+ String value;
+ String name;
+
+ for (String line: body.split("\n")) {
+ n = line.indexOf(": ");
+ if (n > 0) {
+ key = line.substring(0, n);
+ value = line.substring(n + 2);
+ m = key.indexOf(':');
+ if (m > 0) {
+ name = key.substring(m + 1);
+ key = key.substring(0, m);
+ if (key.equals("CONTEXT-PARAM")) {
+ contextInitParameters.put(name, value);
+ } else if (key.equals("CONTEXT-ATTRIBUTE")) {
+ contextAttributes.put(name, value);
+ } else if (key.equals("HEADER")) {
+ headers.put(name, value);
+ } else if (key.equals("ATTRIBUTE")) {
+ attributes.put(name, value);
+ } else if (key.equals("PARAM")) {
+ params.put(name, value);
+ } else if (key.equals("SESSION-ATTRIBUTE")) {
+ sessionAttributes.put(name, value);
+ } else {
+ request.put(key + ":" + name, value);
+ }
+ } else {
+ request.put(key, value);
+ }
+ }
+ }
+ }
+ }
+
/**
* Simple servlet that dumps request information. Tests using this should
* note that additional information may be added to in the future and
should
- * therefore test return values accordingly.
+ * therefore test return values using SnoopResult.
*/
public static final class SnoopServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ public void service(HttpServletRequest request,
+ HttpServletResponse response)
throws ServletException, IOException {
- resp.setContentType("text/plain");
- PrintWriter out = resp.getWriter();
- out.println("00-RequestURI-" + req.getRequestURI());
+
+ String name;
+ StringBuilder value;
+ Object attribute;
+
+ ServletContext ctx = this.getServletContext();
+ HttpSession session = request.getSession(false);
+ PrintWriter out = response.getWriter();
+
+ response.setContentType("text/plain");
+
+ out.println("CONTEXT-NAME: " + ctx.getServletContextName());
+ out.println("CONTEXT-PATH: " + ctx.getContextPath());
+ out.println("CONTEXT-MAJOR-VERSION: " + ctx.getMajorVersion());
+ out.println("CONTEXT-MINOR-VERSION: " + ctx.getMinorVersion());
+ out.println("CONTEXT-SERVER-INFO: " + ctx.getServerInfo());
+ for (Enumeration<String> e = ctx.getInitParameterNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ out.println("CONTEXT-INIT-PARAM:" + name + ": " +
+ ctx.getInitParameter(name));
+ }
+ for (Enumeration<String> e = ctx.getAttributeNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ out.println("CONTEXT-ATTRIBUTE:" + name + ": " +
+ ctx.getAttribute(name));
+ }
+ out.println("REQUEST-CONTEXT-PATH: " + request.getContextPath());
+ out.println("REQUEST-SERVER-NAME: " + request.getServerName());
+ out.println("REQUEST-SERVER-PORT: " + request.getServerPort());
+ out.println("REQUEST-LOCAL-NAME: " + request.getLocalName());
+ out.println("REQUEST-LOCAL-ADDR: " + request.getLocalAddr());
+ out.println("REQUEST-LOCAL-PORT: " + request.getLocalPort());
+ out.println("REQUEST-REMOTE-HOST: " + request.getRemoteHost());
+ out.println("REQUEST-REMOTE-ADDR: " + request.getRemoteAddr());
+ out.println("REQUEST-REMOTE-PORT: " + request.getRemotePort());
+ out.println("REQUEST-PROTOCOL: " + request.getProtocol());
+ out.println("REQUEST-SCHEME: " + request.getScheme());
+ out.println("REQUEST-IS-SECURE: " + request.isSecure());
+ out.println("REQUEST-URI: " + request.getRequestURI());
+ out.println("REQUEST-URL: " + request.getRequestURL());
+ out.println("REQUEST-SERVLET-PATH: " + request.getServletPath());
+ out.println("REQUEST-METHOD: " + request.getMethod());
+ out.println("REQUEST-PATH-INFO: " + request.getPathInfo());
+ out.println("REQUEST-PATH-TRANSLATED: " +
+ request.getPathTranslated());
+ out.println("REQUEST-QUERY-STRING: " + request.getQueryString());
+ out.println("REQUEST-REMOTE-USER: " + request.getRemoteUser());
+ out.println("REQUEST-USER-PRINCIPAL: " +
+ request.getUserPrincipal());
+ out.println("REQUEST-CHARACTER-ENCODING: " +
+ request.getCharacterEncoding());
+ out.println("REQUEST-CONTENT-LENGTH: " +
+ request.getContentLength());
+ out.println("REQUEST-CONTENT-TYPE: " + request.getContentType());
+ out.println("REQUEST-LOCALE: " + request.getLocale());
+
+ for (Enumeration<String> e = request.getHeaderNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ value = new StringBuilder();
+ for (Enumeration<String> h = request.getHeaders(name);
+ h.hasMoreElements();) {
+ value.append(h.nextElement());
+ if (h.hasMoreElements()) {
+ value.append(";");
+ }
+ }
+ out.println("HEADER:" + name + ": " + value);
+ }
+
+ for (Enumeration<String> e = request.getAttributeNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ attribute = request.getAttribute(name);
+ out.println("ATTRIBUTE:" + name + ": " +
+ (attribute != null ? attribute : "(null)"));
+ }
+
+ for (Enumeration<String> e = request.getParameterNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ value = new StringBuilder();
+ String values[] = request.getParameterValues(name);
+ int m = values.length;
+ for (int j = 0; j < m; j++) {
+ value.append(values[j]);
+ if (j < m - 1) {
+ value.append(";");
+ }
+ }
+ out.println("PARAM/" + name + ": " + value);
+ }
+
+ out.println("SESSION-REQUESTED-ID: " +
+ request.getRequestedSessionId());
+ out.println("SESSION-REQUESTED-ID-COOKIE: " +
+ request.isRequestedSessionIdFromCookie());
+ out.println("SESSION-REQUESTED-ID-URL: " +
+ request.isRequestedSessionIdFromUrl());
+ out.println("SESSION-REQUESTED-ID-VALID: " +
+ request.isRequestedSessionIdValid());
+
+ if (session != null) {
+ out.println("SESSION-ID: " + session.getId());
+ out.println("SESSION-CREATION-TIME: " +
+ session.getCreationTime());
+ out.println("SESSION-LAST-ACCESSED-TIME: " +
+ session.getLastAccessedTime());
+ out.println("SESSION-MAX-INACTIVE-INTERVAL: " +
+ session.getMaxInactiveInterval());
+ out.println("SESSION-IS-NEW: " + session.isNew());
+ for (Enumeration<String> e = session.getAttributeNames();
+ e.hasMoreElements();) {
+ name = e.nextElement();
+ attribute = session.getAttribute(name);
+ out.println("SESSION-ATTRIBUTE:" + name + ": " +
+ (attribute != null ? attribute : "(null)"));
+ }
+ }
}
}
Modified:
tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java?rev=1645358&r1=1645357&r2=1645358&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
(original)
+++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
Sat Dec 13 21:32:36 2014
@@ -67,6 +67,8 @@ public class TestRewriteValve extends To
ByteChunk res = getUrl("http://localhost:" + getPort() + request);
String body = res.toString();
- Assert.assertTrue(body, body.contains(expectedURI));
+ SnoopResult parsedBody = new SnoopResult(body);
+ String requestURI = parsedBody.getRequest().get("REQUEST-URI");
+ Assert.assertEquals(expectedURI, requestURI);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]