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

Reply via email to