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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to