Maven-Plugin "Hibernate 4" implementiert
[percentcodec] / cachecontrol / src / test / java / de / halbekunst / juplo / cachecontrol / RequestSizeTest.java
index 4c7afa0..2b3fec8 100644 (file)
@@ -1,6 +1,8 @@
 package de.halbekunst.juplo.cachecontrol;
 
 import com.meterware.httpunit.WebResponse;
+import de.halbekunst.juplo.test.HttpTestCase;
+import de.halbekunst.juplo.test.LoggingHttpServletResponseWrapper;
 import java.net.URLEncoder;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -26,6 +28,11 @@ public class RequestSizeTest extends HttpTestCase {
   private final static Logger log = LoggerFactory.getLogger(RequestSizeTest.class);
 
 
+  public RequestSizeTest() {
+    super("src/test/resources/web.xml");
+  }
+
+
   @Test
   public void testSimpleRequestWithGzip() throws Exception {
 
@@ -84,12 +91,23 @@ public class RequestSizeTest extends HttpTestCase {
 
     client.getClientProperties().setAcceptGzip(true);
 
+    /**
+     * Auf den Fehler bei einem Forward nach Überschreitung der Puffer-Größe
+     * des ursprünglichen Requests wird hier nicht geprüft, weil der Puffer
+     * durch die Komprimierung bei den hier gewählten Test-Parametern nie
+     * vollgeschrieben wird, so dass er stets ohne Fehler zurückgesetzt
+     * werden kann...
+     *
+     * Dafür wird hier zusätzlich geprüft, ob die Komprimierung korrekt nur
+     * dann unterdrückt wird, wenn die gesamte Antwort leer ist (und nicht nur
+     * der initiale Request, der geforwarded wird).
+     */
     for (int i=0; i<33; i++) {
       /** 33 requests ranging from 0 B to 4 KB - response ist buffered up to 1 KB */
       StringBuilder uri = new StringBuilder();
       uri.append("http://localhost/request-size");
       uri.append("?n=");
-      uri.append(i*128);
+      uri.append(i%7*128);
       uri.append("&f=");
       uri.append(URLEncoder.encode("/forwarded?n=" + i*128, "UTF-8"));
       WebResponse response = executeRequest(uri.toString());
@@ -127,7 +145,7 @@ public class RequestSizeTest extends HttpTestCase {
       uri.append(URLEncoder.encode("/forwarded?n=" + i*128, "UTF-8"));
       try {
         WebResponse response = executeRequest(uri.toString());
-        if (i*128 > 2048)
+        if (i*128 > LoggingHttpServletResponseWrapper.DEFAULT_BUFFER_SIZE)
           Assert.fail("Error expected while forwarding after " + i*128 + " bytes written!");
         Assert.assertEquals("W/\"Hallo Welt!\"", response.getHeaderField(Headers.HEADER_ETAG));
         Assert.assertEquals("Thu, 01 Jan 1970 00:00:00 GMT", response.getHeaderField(Headers.HEADER_LAST_MODIFIED));
@@ -142,7 +160,7 @@ public class RequestSizeTest extends HttpTestCase {
         Assert.assertTrue("Expires-Header passt nicht zum Date-Header! Unterschied: " + (expires-date)/1000 + " Sekunden.", date + 3600000 == expires);
       }
       catch (IllegalStateException e) {
-        if (i*128 > 2048)
+        if (i*128 > LoggingHttpServletResponseWrapper.DEFAULT_BUFFER_SIZE)
           log.debug("Expected error while forwarding after {} bytes written: {}", i*128, e.getMessage());
         else
           Assert.fail("Unexpected error while forwarding after " + i*128 + " bytes written: " + e.getMessage());
@@ -162,7 +180,7 @@ public class RequestSizeTest extends HttpTestCase {
       StringBuilder uri = new StringBuilder();
       uri.append("http://localhost/request-size");
       uri.append("?n=");
-      uri.append(i*128);
+      uri.append(i%7*128);
       for (int j=0; j < i%4+1; j++) {
         uri.append("&i=");
         uri.append(URLEncoder.encode("/included?n=" + i*32*(4-j), "UTF-8"));
@@ -197,7 +215,7 @@ public class RequestSizeTest extends HttpTestCase {
       StringBuilder uri = new StringBuilder();
       uri.append("http://localhost/request-size");
       uri.append("?n=");
-      uri.append(i*128);
+      uri.append(i%7*128);
       for (int j=0; j < i%4+1; j++) {
         uri.append("&i=");
         uri.append(URLEncoder.encode("/included?n=" + i*32*(4-j), "UTF-8"));