You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2015/06/18 13:15:08 UTC
svn commit: r1686185 - in /tomcat/tc7.0.x/trunk/test/org/apache:
catalina/startup/SimpleHttpClient.java
coyote/http11/TestAbstractHttp11Processor.java
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org