Author: markt
Date: Wed Dec 12 17:13:08 2018
New Revision: 1848779
URL: http://svn.apache.org/viewvc?rev=1848779&view=rev
Log:
Add a test case for an issue reported against the servlet spec (works correctly
in Tomcat)
Modified:
tomcat/trunk/test/javax/servlet/http/TestHttpServlet.java
Modified: tomcat/trunk/test/javax/servlet/http/TestHttpServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/servlet/http/TestHttpServlet.java?rev=1848779&r1=1848778&r2=1848779&view=diff
==============================================================================
--- tomcat/trunk/test/javax/servlet/http/TestHttpServlet.java (original)
+++ tomcat/trunk/test/javax/servlet/http/TestHttpServlet.java Wed Dec 12
17:13:08 2018
@@ -111,6 +111,51 @@ public class TestHttpServlet extends Tom
}
+ @Test
+ public void testChunkingWithHead() throws Exception {
+ Tomcat tomcat = getTomcatInstance();
+
+ // No file system docBase required
+ StandardContext ctx = (StandardContext) tomcat.addContext("", null);
+
+ ChunkingServlet s = new ChunkingServlet();
+ Tomcat.addServlet(ctx, "ChunkingServlet", s);
+ ctx.addServletMappingDecoded("/chunking", "ChunkingServlet");
+
+ tomcat.start();
+
+ Map<String,List<String>> getHeaders = new HashMap<>();
+ String path = "http://localhost:" + getPort() + "/chunking";
+ ByteChunk out = new ByteChunk();
+
+ int rc = getUrl(path, out, getHeaders);
+ Assert.assertEquals(HttpServletResponse.SC_OK, rc);
+ out.recycle();
+
+ Map<String,List<String>> headHeaders = new HashMap<>();
+ rc = headUrl(path, out, headHeaders);
+ Assert.assertEquals(HttpServletResponse.SC_OK, rc);
+
+ // Headers should be the same (apart from Date)
+ Assert.assertEquals(getHeaders.size(), headHeaders.size());
+ for (Map.Entry<String, List<String>> getHeader :
getHeaders.entrySet()) {
+ String headerName = getHeader.getKey();
+ if ("date".equalsIgnoreCase(headerName)) {
+ continue;
+ }
+ Assert.assertTrue(headHeaders.containsKey(headerName));
+ List<String> getValues = getHeader.getValue();
+ List<String> headValues = headHeaders.get(headerName);
+ Assert.assertEquals(getValues.size(), headValues.size());
+ for (String value : getValues) {
+ Assert.assertTrue(headValues.contains(value));
+ }
+ }
+
+ tomcat.stop();
+ }
+
+
private static class Bug57602ServletOuter extends HttpServlet {
private static final long serialVersionUID = 1L;
@@ -141,4 +186,21 @@ public class TestHttpServlet extends Tom
pw.println("Included");
}
}
+
+
+ private static class ChunkingServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ resp.setContentType("text/plain");
+ resp.setCharacterEncoding("UTF-8");
+ PrintWriter pw = resp.getWriter();
+ // Force chunking
+ resp.flushBuffer();
+ pw.println("Data");
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]