You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/05/02 22:59:47 UTC

svn commit: r1478543 - /tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java

Author: markt
Date: Thu May  2 20:59:45 2013
New Revision: 1478543

URL: http://svn.apache.org/r1478543
Log:
Fix test. Can't continue writing to output after an async complete

Modified:
    tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java

Modified: tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java?rev=1478543&r1=1478542&r2=1478543&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java (original)
+++ tomcat/trunk/test/org/apache/catalina/connector/TestCoyoteOutputStream.java Thu May  2 20:59:45 2013
@@ -76,16 +76,20 @@ public class TestCoyoteOutputStream exte
 
         Context root = tomcat.addContext("", TEMP_DIR);
         Wrapper w = Tomcat.addServlet(root, "nbWrite",
-                new NonBlockingWriteServlet(asyncWriteTarget, syncWriteTarget));
+                new NonBlockingWriteServlet(asyncWriteTarget));
         w.setAsyncSupported(true);
-        root.addServletMapping("/", "nbWrite");
+        root.addServletMapping("/nbWrite", "nbWrite");
+        Tomcat.addServlet(root, "write",
+                new BlockingWriteServlet(asyncWriteTarget, syncWriteTarget));
+        w.setAsyncSupported(true);
+        root.addServletMapping("/write", "write");
 
         tomcat.start();
 
         ByteChunk bc = new ByteChunk();
         // Extend timeout to 5 mins for debugging
-        int rc = getUrl("http://localhost:" + getPort() + "/", bc, 300000, null,
-                null);
+        int rc = getUrl("http://localhost:" + getPort() + "/nbWrite", bc,
+                300000, null, null);
 
         int totalCount = asyncWriteTarget + syncWriteTarget;
         StringBuilder sb = new StringBuilder(totalCount * 16);
@@ -103,14 +107,12 @@ public class TestCoyoteOutputStream exte
     private static final class NonBlockingWriteServlet extends HttpServlet {
 
         private static final long serialVersionUID = 1L;
+
         private final int asyncWriteTarget;
-        private final int syncWriteTarget;
         private final AtomicInteger asyncWriteCount = new AtomicInteger(0);
 
-        public NonBlockingWriteServlet(int asyncWriteTarget,
-                int syncWriteTarget) {
+        public NonBlockingWriteServlet(int asyncWriteTarget) {
             this.asyncWriteTarget = asyncWriteTarget;
-            this.syncWriteTarget = syncWriteTarget;
         }
 
         @Override
@@ -138,22 +140,12 @@ public class TestCoyoteOutputStream exte
                                     B2CConverter.UTF_8));
                     sos.flush();
                 } else {
-                    doSyncWrite(asyncCtxt, sos);
+                    asyncCtxt.dispatch("/write");
                     break;
                 }
             }
         }
 
-        private void doSyncWrite(AsyncContext asyncCtxt,
-                ServletOutputStream sos) throws IOException {
-            asyncCtxt.complete();
-            for (int i = asyncWriteTarget;
-                    i < syncWriteTarget + asyncWriteTarget; i++) {
-                sos.write(("OK - " + i + System.lineSeparator()).getBytes(
-                        B2CConverter.UTF_8));
-            }
-        }
-
         private class AsyncTask implements Runnable {
 
             private final AsyncContext asyncCtxt;
@@ -197,4 +189,31 @@ public class TestCoyoteOutputStream exte
             }
         }
     }
+
+    private static final class BlockingWriteServlet extends HttpServlet {
+
+        private static final long serialVersionUID = 1L;
+
+        private final int start;
+        private final int len;
+
+        public BlockingWriteServlet(int start, int len) {
+            this.start = start;
+            this.len = len;
+        }
+
+        @Override
+        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+                throws ServletException, IOException {
+
+            resp.setContentType("text/plain");
+            resp.setCharacterEncoding("UTF-8");
+            ServletOutputStream sos = resp.getOutputStream();
+
+            for (int i = start; i < start + len; i++) {
+                sos.write(("OK - " + i + System.lineSeparator()).getBytes(
+                        B2CConverter.UTF_8));
+            }
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org