Author: markt Date: Thu Jan 1 17:03:45 2015 New Revision: 1648890 URL: http://svn.apache.org/r1648890 Log: While refactoring the HTTP 1.1 output buffers I spotted a potential issue with expectations and NIO2. This (currently disabled) unit test confirms the issue.
Added: tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java (with props) Added: tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java?rev=1648890&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java (added) +++ tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java Thu Jan 1 17:03:45 2015 @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.coyote.http11; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +import org.apache.catalina.Context; +import org.apache.catalina.startup.SimpleHttpClient; +import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.TomcatBaseTest; + +public class TestInternalOutputBuffer extends TomcatBaseTest { + + @Test + @Ignore // Currently fails for NIO2 since that implementation writes the ACK + // to the buffers rather than directly to the socket. + public void testSendAck() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + // No file system docBase required + Context ctx = tomcat.addContext("", null); + + Tomcat.addServlet(ctx, "echo", new EchoBodyServlet()); + ctx.addServletMapping("/echo", "echo"); + + tomcat.start(); + + ExpectationClient client = new ExpectationClient(); + + client.setPort(tomcat.getConnector().getLocalPort()); + + client.connect(); + + client.doRequestHeaders(); + Assert.assertTrue(client.isResponse100()); + + client.doRequestBody(); + Assert.assertTrue(client.isResponse200()); + Assert.assertTrue(client.isResponseBodyOK()); + } + + private static class ExpectationClient extends SimpleHttpClient { + + private static final String BODY = "foo=bar"; + + public void doRequestHeaders() throws Exception { + StringBuilder requestHeaders = new StringBuilder(); + requestHeaders.append("POST /echo HTTP/1.1").append(CRLF); + requestHeaders.append("Host: localhost").append(CRLF); + requestHeaders.append("Expect: 100-continue").append(CRLF); + requestHeaders.append("Content-Type: application/x-www-form-urlencoded").append(CRLF); + String len = Integer.toString(BODY.length()); + requestHeaders.append("Content-length: ").append(len).append(CRLF); + requestHeaders.append(CRLF); + + setRequest(new String[] {requestHeaders.toString()}); + + processRequest(false); + } + + public void doRequestBody() throws Exception { + setRequest(new String[] { BODY }); + + processRequest(true); + } + + @Override + public boolean isResponseBodyOK() { + return BODY.equals(getResponseBody()); + } + } +} Propchange: tomcat/trunk/test/org/apache/coyote/http11/TestInternalOutputBuffer.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org