Skip to content

Commit 8c3bc97

Browse files
ahus1vietj
authored andcommitted
Stabilize test by keeping reference to NetClient
Closes #5853
1 parent 57b9c68 commit 8c3bc97

File tree

1 file changed

+40
-36
lines changed

1 file changed

+40
-36
lines changed

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

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
package io.vertx.tests.http;
1313

14+
import io.netty.buffer.ByteBufUtil;
1415
import io.netty.channel.ConnectTimeoutException;
1516
import io.netty.channel.EventLoop;
1617
import io.netty.handler.codec.compression.DecompressionException;
@@ -4779,46 +4780,49 @@ protected void testHttpConnect(RequestOptions options, int sc) {
47794780
Buffer buffer = TestUtils.randomBuffer(128);
47804781
Buffer received = Buffer.buffer();
47814782
CompletableFuture<Void> closeSocket = new CompletableFuture<>();
4782-
vertx.createNetServer(new NetServerOptions().setPort(1235).setHost("localhost")).connectHandler(socket -> {
4783-
socket.handler(socket::write);
4784-
closeSocket.thenAccept(v -> {
4785-
socket.close();
4786-
});
4787-
}).listen().onComplete(onSuccess(netServer -> {
4788-
server.requestHandler(req -> {
4789-
vertx.createNetClient(new NetClientOptions()).connect(1235, "localhost").onComplete(onSuccess(dst -> {
4783+
NetServer netServer = vertx.createNetServer(new NetServerOptions().setPort(0).setHost("localhost"))
4784+
.connectHandler(socket -> {
4785+
socket.handler(socket::write);
4786+
closeSocket.thenAccept(v -> {
4787+
socket.close();
4788+
});
4789+
}).listen().await();
4790+
// Declare netClient in the main thread to avoid having it randomly garbage collected just after it created the connection
4791+
NetClient netClient = vertx.createNetClient(new NetClientOptions());
47904792

4791-
req.response().setStatusCode(sc);
4792-
req.response().setStatusMessage("Connection established");
4793+
server.requestHandler(req -> {
4794+
netClient.connect(netServer.actualPort(), "localhost").onComplete(onSuccess(dst -> {
47934795

4794-
// Now create a NetSocket
4795-
req.toNetSocket().onComplete(onSuccess(src -> {
4796-
// Create pumps which echo stuff
4797-
src.pipeTo(dst);
4798-
dst.pipeTo(src);
4799-
}));
4800-
}));
4801-
});
4802-
server.listen(testAddress).onComplete(onSuccess(s -> {
4803-
client.request(options).onComplete(onSuccess(req -> {
4804-
req
4805-
.connect().onComplete(onSuccess(resp -> {
4806-
assertEquals(sc, resp.statusCode());
4807-
NetSocket socket = resp.netSocket();
4808-
socket.handler(buff -> {
4809-
received.appendBuffer(buff);
4810-
if (received.length() == buffer.length()) {
4811-
closeSocket.complete(null);
4812-
}
4813-
});
4814-
socket.closeHandler(v -> {
4815-
assertEquals(buffer, received);
4816-
testComplete();
4817-
});
4818-
socket.write(buffer);
4819-
}));
4796+
req.response().setStatusCode(sc);
4797+
req.response().setStatusMessage("Connection established");
4798+
4799+
// Now create a NetSocket
4800+
req.toNetSocket().onComplete(onSuccess(src -> {
4801+
// Create pumps which echo stuff
4802+
src.pipeTo(dst);
4803+
dst.pipeTo(src);
48204804
}));
48214805
}));
4806+
});
4807+
server.listen(testAddress).onComplete(onSuccess(s -> {
4808+
client.request(options).onComplete(onSuccess(req -> {
4809+
req
4810+
.connect().onComplete(onSuccess(resp -> {
4811+
assertEquals(sc, resp.statusCode());
4812+
NetSocket socket = resp.netSocket();
4813+
socket.handler(buff -> {
4814+
received.appendBuffer(buff);
4815+
if (received.length() == buffer.length()) {
4816+
closeSocket.complete(null);
4817+
}
4818+
});
4819+
socket.closeHandler(v -> {
4820+
assertEquals(ByteBufUtil.hexDump(buffer.getBytes()), ByteBufUtil.hexDump(received.getBytes()));
4821+
testComplete();
4822+
});
4823+
socket.write(buffer);
4824+
}));
4825+
}));
48224826
}));
48234827

48244828
await();

0 commit comments

Comments
 (0)