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