Author: markt Date: Sat Nov 24 18:47:11 2012 New Revision: 1413235 URL: http://svn.apache.org/viewvc?rev=1413235&view=rev Log: Expand the tests to cover blocking and non-blocking
Modified: tomcat/trunk/test/org/apache/coyote/http11/upgrade/TestUpgrade.java Modified: tomcat/trunk/test/org/apache/coyote/http11/upgrade/TestUpgrade.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http11/upgrade/TestUpgrade.java?rev=1413235&r1=1413234&r2=1413235&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/coyote/http11/upgrade/TestUpgrade.java (original) +++ tomcat/trunk/test/org/apache/coyote/http11/upgrade/TestUpgrade.java Sat Nov 24 18:47:11 2012 @@ -47,19 +47,36 @@ import static org.apache.catalina.startu import org.apache.catalina.Context; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.catalina.util.IOTools; public class TestUpgrade extends TomcatBaseTest { private static final String MESSAGE = "This is a test."; @Test - public void testSimpleUpgrade() throws Exception { - doUpgrade(); + public void testSimpleUpgradeBlocking() throws Exception { + doUpgrade(EchoBlocking.class); } @Test - public void testSingleMessage() throws Exception { - UpgradeConnection conn = doUpgrade(); + public void testSimpleUpgradeNonBlocking() throws Exception { + doUpgrade(EchoNonBlocking.class); + } + + @Test + public void testMessagesBlocking() throws Exception { + doTestMessages(EchoBlocking.class); + } + + @Test + public void testMessagesNonBlocking() throws Exception { + doTestMessages(EchoNonBlocking.class); + } + + private void doTestMessages ( + Class<? extends ProtocolHandler> upgradeHandlerClass) + throws Exception { + UpgradeConnection conn = doUpgrade(upgradeHandlerClass); PrintWriter pw = new PrintWriter(conn.getWriter()); BufferedReader reader = conn.getReader(); @@ -79,7 +96,8 @@ public class TestUpgrade extends TomcatB } - private UpgradeConnection doUpgrade() throws Exception { + private UpgradeConnection doUpgrade( + Class<? extends ProtocolHandler> upgradeHandlerClass) throws Exception { // Setup Tomcat instance Tomcat tomcat = getTomcatInstance(); @@ -87,7 +105,7 @@ public class TestUpgrade extends TomcatB Context ctx = tomcat.addContext("", System.getProperty("java.io.tmpdir")); - UpgradeServlet servlet = new UpgradeServlet(); + UpgradeServlet servlet = new UpgradeServlet(upgradeHandlerClass); Tomcat.addServlet(ctx, "servlet", servlet); ctx.addServletMapping("/", "servlet"); @@ -128,11 +146,24 @@ public class TestUpgrade extends TomcatB private static final long serialVersionUID = 1L; + private final Class<? extends ProtocolHandler> upgradeHandlerClass; + + public UpgradeServlet(Class<? extends ProtocolHandler> upgradeHandlerClass) { + this.upgradeHandlerClass = upgradeHandlerClass; + } + @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - req.upgrade(new EchoNonBlocking()); + ProtocolHandler upgradeHandler; + try { + upgradeHandler = upgradeHandlerClass.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + throw new ServletException(e); + } + + req.upgrade(upgradeHandler); } } @@ -154,7 +185,23 @@ public class TestUpgrade extends TomcatB } } - private static class EchoNonBlocking implements ProtocolHandler { + + protected static class EchoBlocking implements ProtocolHandler { + @Override + public void init(WebConnection connection) { + + try (ServletInputStream sis = connection.getInputStream(); + ServletOutputStream sos = connection.getOutputStream()){ + + IOTools.flow(sis, sos); + } catch (IOException ioe) { + throw new IllegalStateException(ioe); + } + } + } + + + protected static class EchoNonBlocking implements ProtocolHandler { private ServletInputStream sis; private ServletOutputStream sos; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org