Author: markt Date: Mon Nov 29 16:58:31 2010 New Revision: 1040190 URL: http://svn.apache.org/viewvc?rev=1040190&view=rev Log: Test case for https://issues.apache.org/bugzilla/show_bug.cgi?id=50352
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=1040190&r1=1040189&r2=1040190&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java Mon Nov 29 16:58:31 2010 @@ -749,4 +749,60 @@ public class TestAsyncContextImpl extend throw new ServletException("Opps."); } } + + public void testBug50352() throws Exception { + // Setup Tomcat instance + Tomcat tomcat = getTomcatInstance(); + + // Must have a real docBase - just use temp + File docBase = new File(System.getProperty("java.io.tmpdir")); + + Context ctx = tomcat.addContext("", docBase.getAbsolutePath()); + + AsyncStartRunnable servlet = new AsyncStartRunnable(); + Wrapper wrapper = Tomcat.addServlet(ctx, "servlet", servlet); + wrapper.setAsyncSupported(true); + ctx.addServletMapping("/", "servlet"); + + ErrorServlet error = new ErrorServlet(); + Tomcat.addServlet(ctx, "error", error); + ctx.addServletMapping("/stage2", "error"); + + tomcat.start(); + + ByteChunk res = getUrl("http://localhost:" + getPort() + "/"); + + assertEquals("Runnable-onComplete-", res.toString()); + } + + private static final class AsyncStartRunnable extends HttpServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException { + + final AsyncContext asyncContext = + request.startAsync(request, response); + + asyncContext.addListener(new TrackingListener(false, false, null)); + + asyncContext.start(new Runnable() { + + @Override + public void run() { + try { + Thread.sleep(3 * 1000); + asyncContext.getResponse().getWriter().write( + "Runnable-"); + asyncContext.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