Author: markt
Date: Wed Jan 11 13:12:05 2012
New Revision: 1229997

URL: http://svn.apache.org/viewvc?rev=1229997&view=rev
Log:
Improve test case

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

Modified: tomcat/trunk/test/org/apache/catalina/connector/TestOutputBuffer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestOutputBuffer.java?rev=1229997&r1=1229996&r2=1229997&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TestOutputBuffer.java 
(original)
+++ tomcat/trunk/test/org/apache/catalina/connector/TestOutputBuffer.java Wed 
Jan 11 13:12:05 2012
@@ -29,7 +29,6 @@ import static org.junit.Assert.assertEqu
 import org.junit.Test;
 
 import org.apache.catalina.Context;
-import org.apache.catalina.Wrapper;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
 import org.apache.tomcat.util.buf.ByteChunk;
@@ -41,45 +40,53 @@ public class TestOutputBuffer extends To
         Tomcat tomcat = getTomcatInstance();
 
         Context root = tomcat.addContext("", TEMP_DIR);
-        SingleCharWritingServlet servlet = new SingleCharWritingServlet();
-        Wrapper w =
-                Tomcat.addServlet(root, "singleCharWritingServlet", servlet);
-        w.setAsyncSupported(true);
-        root.addServletMapping("/", "singleCharWritingServlet");
+
+        for (int i = 1; i <= WritingServlet.EXPECTED_CONTENT_LENGTH; i*=10) {
+            WritingServlet servlet = new WritingServlet(i);
+            Tomcat.addServlet(root, "servlet" + i, servlet);
+            root.addServletMapping("/servlet" + i, "servlet" + i);
+        }
 
         tomcat.start();
 
         ByteChunk bc = new ByteChunk();
-        int rc = getUrl("http://localhost:"; + getPort() + "/", bc, null, null);
-
-        assertEquals(200, rc);
-        assertEquals(SingleCharWritingServlet.ITERATIONS, bc.getLength());
-
-        long noBuffering = servlet.getLastRunNano();
-
-        System.out.println(noBuffering);
-
-        bc.recycle();
-
-        rc = getUrl("http://localhost:"; + getPort() + "/?useBuffering=y", bc,
-                null, null);
-
-        assertEquals(200, rc);
-        assertEquals(SingleCharWritingServlet.ITERATIONS, bc.getLength());
 
-        long buffering = servlet.getLastRunNano();
+        for (int i = 1; i <= WritingServlet.EXPECTED_CONTENT_LENGTH; i*=10) {
+            int rc = getUrl("http://localhost:"; + getPort() +
+                    "/servlet" + i, bc, null, null);
+            assertEquals(HttpServletResponse.SC_OK, rc);
+            assertEquals(
+                    WritingServlet.EXPECTED_CONTENT_LENGTH, bc.getLength());
+
+            bc.recycle();
+
+            rc = getUrl("http://localhost:"; + getPort() +
+                    "/servlet" + i + "?useBuffer=y", bc, null, null);
+            assertEquals(HttpServletResponse.SC_OK, rc);
+            assertEquals(
+                    WritingServlet.EXPECTED_CONTENT_LENGTH, bc.getLength());
 
-        System.out.println(buffering);
+            bc.recycle();
+        }
     }
 
-    private static final class SingleCharWritingServlet extends HttpServlet {
+    private static class WritingServlet extends HttpServlet {
 
         private static final long serialVersionUID = 1L;
 
-        protected static final int ITERATIONS = 100000;
+        protected static final int EXPECTED_CONTENT_LENGTH = 100000;
+
+        private final String writeString;
+        private final int writeCount;
 
-        // Not thread safe but will only be used with single calls.
-        private volatile long lastRunNano = 0;
+        public WritingServlet(int writeLength) {
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < writeLength; i++) {
+                sb.append('x');
+            }
+            writeString = sb.toString();
+            writeCount = EXPECTED_CONTENT_LENGTH / writeLength;
+        }
 
         @Override
         protected void doGet(HttpServletRequest req, HttpServletResponse resp)
@@ -97,20 +104,17 @@ public class TestOutputBuffer extends To
             }
 
             long start = System.nanoTime();
-
-            for (int i = 0; i < ITERATIONS; i++) {
-                w.write('x');
+            for (int i = 0; i < writeCount; i++) {
+                w.write(writeString);
             }
-
-            lastRunNano = System.nanoTime() - start;
-
             if (useBufferStr != null) {
                 w.flush();
             }
-        }
+            long lastRunNano = System.nanoTime() - start;
 
-        public long getLastRunNano() {
-            return lastRunNano;
+            System.out.println("Write length: " + writeString.length() +
+                    ", Buffered: " + (useBufferStr == null ? "n" : "y") +
+                    ", Time: " + lastRunNano + "ns");
         }
     }
 }



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

Reply via email to