Skip to content

Commit 8bc1b89

Browse files
committed
Ensure the HTTP/2 client connection expiration timestamp before recycle gets called.
Motivation: Port test from 4.x branch.
1 parent c24eec9 commit 8bc1b89

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.util.concurrent.TimeUnit;
4040
import java.util.concurrent.atomic.AtomicBoolean;
4141
import java.util.concurrent.atomic.AtomicInteger;
42+
import java.util.concurrent.atomic.AtomicReference;
4243
import java.util.stream.Collectors;
4344
import java.util.stream.Stream;
4445

@@ -1096,4 +1097,36 @@ private void request() {
10961097

10971098
await();
10981099
}
1100+
1101+
@Test
1102+
public void testClientKeepAliveTimeoutNoStreams() throws Exception {
1103+
server.close();
1104+
server = vertx.createHttpServer(createBaseServerOptions().setInitialSettings(new Http2Settings().setMaxConcurrentStreams(0)));
1105+
server.requestHandler(req -> {
1106+
req.response().end();
1107+
});
1108+
startServer();
1109+
client.close();
1110+
AtomicBoolean closed = new AtomicBoolean();
1111+
client = vertx
1112+
.httpClientBuilder()
1113+
.withConnectHandler(conn -> {
1114+
conn.closeHandler(v -> {
1115+
// We will have retry when the connection is closed
1116+
if (closed.compareAndSet(false, true)) {
1117+
client.close().onComplete(v2 -> {
1118+
testComplete();
1119+
});
1120+
}
1121+
});
1122+
})
1123+
.with(createBaseClientOptions().setHttp2KeepAliveTimeout(1))
1124+
.build();
1125+
client.request(requestOptions).onComplete(ar -> {
1126+
if (ar.succeeded()) {
1127+
ar.result().send();
1128+
}
1129+
});
1130+
await();
1131+
}
10991132
}

0 commit comments

Comments
 (0)