X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=cachecontrol%2Fsrc%2Ftest%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2FRequestSizeTest.java;h=2b3fec85cca610d62fc7632d01c0cb62769ba8d2;hp=4c7afa04df35b025b13746b93d6cdee2e08e60b1;hb=d0f92829349bec782236b5ad0ef089b961cd4901;hpb=1bb1a0f0e1d347538ae93c23395bba172cd87342 diff --git a/cachecontrol/src/test/java/de/halbekunst/juplo/cachecontrol/RequestSizeTest.java b/cachecontrol/src/test/java/de/halbekunst/juplo/cachecontrol/RequestSizeTest.java index 4c7afa04..2b3fec85 100644 --- a/cachecontrol/src/test/java/de/halbekunst/juplo/cachecontrol/RequestSizeTest.java +++ b/cachecontrol/src/test/java/de/halbekunst/juplo/cachecontrol/RequestSizeTest.java @@ -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"));