|
11 | 11 |
|
12 | 12 | package io.vertx.tests.http; |
13 | 13 |
|
| 14 | +import io.netty.buffer.ByteBufUtil; |
14 | 15 | import io.netty.channel.ConnectTimeoutException; |
15 | 16 | import io.netty.channel.EventLoop; |
16 | 17 | import io.netty.handler.codec.compression.DecompressionException; |
@@ -4779,46 +4780,49 @@ protected void testHttpConnect(RequestOptions options, int sc) { |
4779 | 4780 | Buffer buffer = TestUtils.randomBuffer(128); |
4780 | 4781 | Buffer received = Buffer.buffer(); |
4781 | 4782 | 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()); |
4790 | 4792 |
|
4791 | | - req.response().setStatusCode(sc); |
4792 | | - req.response().setStatusMessage("Connection established"); |
| 4793 | + server.requestHandler(req -> { |
| 4794 | + netClient.connect(netServer.actualPort(), "localhost").onComplete(onSuccess(dst -> { |
4793 | 4795 |
|
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); |
4820 | 4804 | })); |
4821 | 4805 | })); |
| 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 | + })); |
4822 | 4826 | })); |
4823 | 4827 |
|
4824 | 4828 | await(); |
|
0 commit comments