Author: markt Date: Thu Feb 10 19:42:34 2011 New Revision: 1069540 URL: http://svn.apache.org/viewvc?rev=1069540&view=rev Log: Add a test case (already passes) for bug50753
Modified: tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java Modified: tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java?rev=1069540&r1=1069539&r2=1069540&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java Thu Feb 10 19:42:34 2011 @@ -19,6 +19,9 @@ package org.apache.catalina.core; import java.io.File; import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import javax.servlet.AsyncContext; import javax.servlet.AsyncEvent; @@ -805,4 +808,60 @@ public class TestAsyncContextImpl extend }); } } + + public void testBug50753() throws Exception { + // Setup Tomcat instance + Tomcat tomcat = getTomcatInstance(); + + // Must have a real docBase - just use temp + Context ctx = + tomcat.addContext("", System.getProperty("java.io.tmpdir")); + + Bug50753Servlet servlet = new Bug50753Servlet(); + + Wrapper wrapper = Tomcat.addServlet(ctx, "servlet", servlet); + wrapper.setAsyncSupported(true); + ctx.addServletMapping("/", "servlet"); + + tomcat.start(); + + // Call the servlet once + Map<String,List<String>> headers = + new LinkedHashMap<String,List<String>>(); + ByteChunk bc = new ByteChunk(); + int rc = getUrl("http://localhost:" + getPort() + "/", bc, headers); + assertEquals(200, rc); + assertEquals("OK", bc.toString()); + List<String> testHeader = headers.get("A"); + assertNotNull(testHeader); + assertEquals(1, testHeader.size()); + assertEquals("xyz",testHeader.get(0)); + } + + private static class Bug50753Servlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest req, + final HttpServletResponse resp) + throws ServletException, IOException { + final AsyncContext ctx = req.startAsync(); + ctx.start(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(5000); + resp.setHeader("A", "xyz"); + resp.setContentType("text/plain"); + resp.setContentLength("OK".getBytes().length); + resp.getWriter().print("OK"); + ctx.complete(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org