Skip to content

Commit 65c2d64

Browse files
committed
Http1xClientResponse should be acked its read window when it has been fully received.
Motivation: Porting test from 4.x as this deserves to be in Vert. 5 as well.
1 parent 8ce1eb1 commit 65c2d64

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

vertx-core/src/test/java/io/vertx/tests/http/Http1xTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,6 +2237,43 @@ private void send(HttpClientRequest req, Buffer buffer, int count, int times) {
22372237
}
22382238
}
22392239

2240+
@Test
2241+
public void testAckHttpClientResponseReadWindowOnEnd() throws Exception {
2242+
int highWaterMark = 65536;
2243+
int numRequests = 10;
2244+
waitFor(numRequests);
2245+
Buffer buffer = TestUtils.randomBuffer(highWaterMark);
2246+
server.requestHandler(req -> {
2247+
req.response().end(buffer);
2248+
});
2249+
startServer(testAddress);
2250+
client.close();
2251+
client = vertx.createHttpClient(createBaseClientOptions(), new PoolOptions().setHttp1MaxSize(1));
2252+
List<HttpClientResponse> responses = new ArrayList<>();
2253+
for (int i = 0;i < numRequests;i++) {
2254+
client.request(requestOptions).onComplete(onSuccess(req -> {
2255+
req.send().onComplete(onSuccess(resp -> {
2256+
resp.pause();
2257+
resp.endHandler(v -> {
2258+
complete();
2259+
});
2260+
List<HttpClientResponse> responsesToResume;
2261+
synchronized (responses) {
2262+
responses.add(resp);
2263+
if (responses.size() < 10) {
2264+
return;
2265+
}
2266+
responsesToResume = new ArrayList<>(responses);
2267+
}
2268+
for (HttpClientResponse responseToResume : responsesToResume) {
2269+
responseToResume.resume();
2270+
}
2271+
}));
2272+
}));
2273+
}
2274+
await();
2275+
}
2276+
22402277
@Test
22412278
public void testEndServerResponseResumeTheConnection() throws Exception {
22422279
server.requestHandler(req -> {

0 commit comments

Comments
 (0)