Author: violetagg Date: Thu Jun 18 11:15:08 2015 New Revision: 1686185 URL: http://svn.apache.org/r1686185 Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=57530 Reimplement TestAbstractHttp11Processor.testNon2xxResponseWithExpectation test using SimpleHttpClient instead of Java 6
Modified: tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java Modified: tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java?rev=1686185&r1=1686184&r2=1686185&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/SimpleHttpClient.java Thu Jun 18 11:15:08 2015 @@ -50,6 +50,7 @@ public abstract class SimpleHttpClient { public static final String OK_200 = "HTTP/1.1 200"; public static final String REDIRECT_302 = "HTTP/1.1 302"; public static final String FAIL_400 = "HTTP/1.1 400"; + public static final String FORBIDDEN_403 = "HTTP/1.1 403"; public static final String FAIL_404 = "HTTP/1.1 404"; public static final String TIMEOUT_408 = "HTTP/1.1 408"; public static final String FAIL_413 = "HTTP/1.1 413"; @@ -409,6 +410,10 @@ public abstract class SimpleHttpClient { return getResponseLine().startsWith(FAIL_400); } + public boolean isResponse403() { + return getResponseLine().startsWith(FORBIDDEN_403); + } + public boolean isResponse404() { return getResponseLine().startsWith(FAIL_404); } Modified: tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java?rev=1686185&r1=1686184&r2=1686185&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/coyote/http11/TestAbstractHttp11Processor.java Thu Jun 18 11:15:08 2015 @@ -23,10 +23,8 @@ import java.io.PrintWriter; import java.io.Writer; import java.net.Socket; import java.nio.CharBuffer; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -623,27 +621,12 @@ public class TestAbstractHttp11Processor tomcat.start(); - byte[] requestBody = "HelloWorld".getBytes("UTF-8"); - Map<String,List<String>> reqHeaders = null; - if (useExpectation) { - reqHeaders = new HashMap<String,List<String>>(); - List<String> expectation = new ArrayList<String>(); - expectation.add("100-continue"); - reqHeaders.put("Expect", expectation); - } - ByteChunk responseBody = new ByteChunk(); - Map<String,List<String>> responseHeaders = new HashMap<String,List<String>>(); - int rc = postUrl(requestBody, "http://localhost:" + getPort() + "/echo", - responseBody, reqHeaders, responseHeaders); - - Assert.assertEquals(HttpServletResponse.SC_FORBIDDEN, rc); - List<String> connectionHeaders = responseHeaders.get("Connection"); - if (useExpectation) { - Assert.assertEquals(1, connectionHeaders.size()); - Assert.assertEquals("close", connectionHeaders.get(0).toLowerCase(Locale.ENGLISH)); - } else { - Assert.assertNull(connectionHeaders); - } + Non2xxResponseClient client = new Non2xxResponseClient(useExpectation); + client.setPort(getPort()); + client.doResourceRequest("GET http://localhost:" + getPort() + + "/echo HTTP/1.1", "HelloWorld"); + Assert.assertTrue(client.isResponse403()); + Assert.assertTrue(client.checkConnectionHeader()); } @@ -856,4 +839,64 @@ public class TestAbstractHttp11Processor return true; } } + + private static class Non2xxResponseClient extends SimpleHttpClient { + private static final String HEADER_EXPECT = "Expect: 100-continue"; + private static final String HEADER_CONNECTION = "Connection: close"; + private boolean useExpectation; + + Non2xxResponseClient(boolean useExpectation) { + this.useExpectation = useExpectation; + } + + void doResourceRequest(String resourceUri, String requestBody) + throws Exception { + StringBuilder requestHead = new StringBuilder(); + requestHead.append(resourceUri).append(CRLF); + + if (useExpectation) { + requestHead.append(HEADER_EXPECT).append(CRLF); + } + + requestHead.append(CRLF); + requestHead.append(requestBody).append(CRLF); + + String request[] = new String[2]; + request[0] = requestHead.toString(); + request[1] = null; + doRequest(request); + } + + private void doRequest(String request[]) throws Exception { + setRequest(request); + connect(); + processRequest(false); + disconnect(); + } + + @Override + public boolean isResponseBodyOK() { + return true; + } + + boolean checkConnectionHeader() { + List<String> responseHeaders = getResponseHeaders(); + boolean found = false; + for (String header : responseHeaders) { + if (HEADER_CONNECTION.equals(header)) { + found = true; + break; + } + } + if (useExpectation) { + if (found) { + return true; + } + } else if (!found) { + return true; + } + return false; + } + + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org