--- old/test/java/net/httpclient/RequestBodyTest.java 2017-08-12 14:14:44.000000000 +0100 +++ new/test/java/net/httpclient/RequestBodyTest.java 2017-08-12 14:14:44.000000000 +0100 @@ -42,6 +42,7 @@ import jdk.incubator.http.HttpClient; import jdk.incubator.http.HttpRequest; import jdk.incubator.http.HttpResponse; +import jdk.incubator.http.HttpResponse.BodyHandler; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -53,6 +54,7 @@ import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.function.Consumer; import java.util.function.Supplier; import javax.net.ssl.SSLContext; import jdk.test.lib.util.FileUtils; @@ -128,8 +130,9 @@ for (String file : new String[] { smallFilename, midSizedFilename }) for (RequestBody requestBodyType : RequestBody.values()) for (ResponseBody responseBodyType : ResponseBody.values()) - values.add(new Object[] - {uri, requestBodyType, responseBodyType, file, async}); + for (boolean bufferResponseBody : new boolean[] { false, true }) + values.add(new Object[] + {uri, requestBodyType, responseBodyType, file, async, bufferResponseBody}); return values.stream().toArray(Object[][]::new); } @@ -139,7 +142,8 @@ RequestBody requestBodyType, ResponseBody responseBodyType, String file, - boolean async) + boolean async, + boolean bufferResponseBody) throws Exception { Path filePath = Paths.get(fileroot + file); @@ -147,7 +151,7 @@ HttpRequest request = createRequest(uri, requestBodyType, filePath); - checkResponse(client, request, requestBodyType, responseBodyType, filePath, async); + checkResponse(client, request, requestBodyType, responseBodyType, filePath, async, bufferResponseBody); } static final int DEFAULT_OFFSET = 10; @@ -198,7 +202,8 @@ RequestBody requestBodyType, ResponseBody responseBodyType, Path file, - boolean async) + boolean async, + boolean bufferResponseBody) throws InterruptedException, IOException { String filename = file.toFile().getAbsolutePath(); @@ -215,43 +220,57 @@ switch (responseBodyType) { case BYTE_ARRAY: - HttpResponse bar = getResponse(client, request, asByteArray(), async); + BodyHandler bh = asByteArray(); + if (bufferResponseBody) bh = buffering(bh, 50); + HttpResponse bar = getResponse(client, request, bh, async); assertEquals(bar.statusCode(), 200); assertEquals(bar.body(), fileAsBytes); break; case BYTE_ARRAY_CONSUMER: ByteArrayOutputStream baos = new ByteArrayOutputStream(); - HttpResponse v = getResponse(client, request, - asByteArrayConsumer(o -> consumerBytes(o, baos) ), async); + Consumer> consumer = o -> consumerBytes(o, baos); + BodyHandler bh1 = asByteArrayConsumer(consumer); + if (bufferResponseBody) bh1 = buffering(bh1, 49); + HttpResponse v = getResponse(client, request, bh1, async); byte[] ba = baos.toByteArray(); assertEquals(v.statusCode(), 200); assertEquals(ba, fileAsBytes); break; case DISCARD: Object o = new Object(); - HttpResponse or = getResponse(client, request, discard(o), async); + BodyHandler bh2 = discard(o); + if (bufferResponseBody) bh2 = buffering(bh2, 51); + HttpResponse or = getResponse(client, request, bh2, async); assertEquals(or.statusCode(), 200); assertSame(or.body(), o); break; case FILE: - HttpResponse fr = getResponse(client, request, asFile(tempFile), async); + BodyHandler bh3 = asFile(tempFile); + if (bufferResponseBody) bh3 = buffering(bh3, 48); + HttpResponse fr = getResponse(client, request, bh3, async); assertEquals(fr.statusCode(), 200); assertEquals(Files.size(tempFile), fileAsString.length()); assertEquals(Files.readAllBytes(tempFile), fileAsBytes); break; case FILE_WITH_OPTION: - fr = getResponse(client, request, asFile(tempFile, CREATE_NEW, WRITE), async); + BodyHandler bh4 = asFile(tempFile, CREATE_NEW, WRITE); + if (bufferResponseBody) bh4 = buffering(bh4, 52); + fr = getResponse(client, request, bh4, async); assertEquals(fr.statusCode(), 200); assertEquals(Files.size(tempFile), fileAsString.length()); assertEquals(Files.readAllBytes(tempFile), fileAsBytes); break; case STRING: - HttpResponse sr = getResponse(client, request, asString(), async); + BodyHandler bh5 = asString(); + if(bufferResponseBody) bh5 = buffering(bh5, 47); + HttpResponse sr = getResponse(client, request, bh5, async); assertEquals(sr.statusCode(), 200); assertEquals(sr.body(), fileAsString); break; case STRING_WITH_CHARSET: - HttpResponse r = getResponse(client, request, asString(StandardCharsets.UTF_8), async); + BodyHandler bh6 = asString(StandardCharsets.UTF_8); + if (bufferResponseBody) bh6 = buffering(bh6, 53); + HttpResponse r = getResponse(client, request, bh6, async); assertEquals(r.statusCode(), 200); assertEquals(r.body(), fileAsString); break;