Skip to content

Commit

Permalink
Improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
vietj committed Oct 29, 2018
1 parent b059104 commit 200e281
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 61 deletions.
32 changes: 9 additions & 23 deletions src/test/java/io/vertx/core/http/Http2ServerTest.java
Expand Up @@ -2276,14 +2276,7 @@ public void onHeadersRead(ChannelHandlerContext ctx, int streamId, Http2Headers
@Test @Test
public void testNetSocketConnect() throws Exception { public void testNetSocketConnect() throws Exception {
waitFor(2); waitFor(2);
final AtomicInteger writeHandlerCounter = new AtomicInteger(0); List<Integer> callbacks = Collections.synchronizedList(new ArrayList<>());
Handler<AsyncResult<Void>> writeHandler = (result) -> {
if(result.succeeded()) {
assertTrue(writeHandlerCounter.incrementAndGet() >= 1);
} else {
fail(result.cause());
}
};


server.requestHandler(req -> { server.requestHandler(req -> {
NetSocket socket = req.netSocket(); NetSocket socket = req.netSocket();
Expand All @@ -2292,7 +2285,7 @@ public void testNetSocketConnect() throws Exception {
switch (status.getAndIncrement()) { switch (status.getAndIncrement()) {
case 0: case 0:
assertEquals(Buffer.buffer("some-data"), buff); assertEquals(Buffer.buffer("some-data"), buff);
socket.write(buff, writeHandler); socket.write(buff, onSuccess(v2 -> callbacks.add(0)));
break; break;
case 1: case 1:
assertEquals(Buffer.buffer("last-data"), buff); assertEquals(Buffer.buffer("last-data"), buff);
Expand All @@ -2302,14 +2295,14 @@ public void testNetSocketConnect() throws Exception {
break; break;
} }
}); });
socket.endHandler(v -> { socket.endHandler(v1 -> {
assertEquals(2, status.getAndIncrement()); assertEquals(2, status.getAndIncrement());
socket.write(Buffer.buffer("last-data"), writeHandler); socket.write(Buffer.buffer("last-data"), onSuccess(v2 -> callbacks.add(1)));
}); });
socket.closeHandler(v -> { socket.closeHandler(v -> {
assertEquals(3, status.getAndIncrement()); assertEquals(2, callbacks.size());
assertEquals(Arrays.asList(0, 1), callbacks);
complete(); complete();
assertEquals(2, writeHandlerCounter.get());
}); });
}); });


Expand Down Expand Up @@ -2413,22 +2406,15 @@ public int onDataRead(ChannelHandlerContext ctx, int streamId, ByteBuf data, int
@Test @Test
public void testServerCloseNetSocket() throws Exception { public void testServerCloseNetSocket() throws Exception {
waitFor(2); waitFor(2);
final AtomicInteger writeHandlerCounter = new AtomicInteger(0); final AtomicInteger writeAcks = new AtomicInteger(0);
Handler<AsyncResult<Void>> writeHandler = (result) -> {
if(result.succeeded()) {
assertTrue(writeHandlerCounter.incrementAndGet() >= 1);
} else {
fail(result.cause());
}
};
AtomicInteger status = new AtomicInteger(); AtomicInteger status = new AtomicInteger();
server.requestHandler(req -> { server.requestHandler(req -> {
NetSocket socket = req.netSocket(); NetSocket socket = req.netSocket();
socket.handler(buff -> { socket.handler(buff -> {
switch (status.getAndIncrement()) { switch (status.getAndIncrement()) {
case 0: case 0:
assertEquals(Buffer.buffer("some-data"), buff); assertEquals(Buffer.buffer("some-data"), buff);
socket.write(buff, writeHandler); socket.write(buff, onSuccess(v -> writeAcks.incrementAndGet()));
socket.close(); socket.close();
break; break;
case 1: case 1:
Expand All @@ -2445,7 +2431,7 @@ public void testServerCloseNetSocket() throws Exception {
socket.closeHandler(v -> { socket.closeHandler(v -> {
assertEquals(3, status.getAndIncrement()); assertEquals(3, status.getAndIncrement());
complete(); complete();
assertEquals(1, writeHandlerCounter.get()); assertEquals(1, writeAcks.get());
}); });
}); });


Expand Down
79 changes: 41 additions & 38 deletions src/test/java/io/vertx/core/net/NetTest.java
Expand Up @@ -789,51 +789,54 @@ public void testSocketAddress() throws Exception {
} }


@Test @Test
public void testWriteHandlerSuccess() { public void testWriteHandlerSuccess() throws Exception {
final AtomicInteger writeHandlerCounter = new AtomicInteger(0); CompletableFuture<Void> close = new CompletableFuture<>();
Handler<AsyncResult<Void>> writeHandler = (v) -> { server.connectHandler(socket -> {
if(v.succeeded()) { socket.pause();
assertEquals(1, writeHandlerCounter.incrementAndGet()); close.thenAccept(v -> {
} else { socket.resume();
fail(v.cause()); });
} });
testComplete(); startServer();
}; client.connect(testAddress, onSuccess(so -> {
Buffer sent = TestUtils.randomBuffer(100); writeUntilFull(so, v -> {
testEcho(sock -> sock.write(sent, writeHandler), buff -> assertEquals(sent, buff), sent.length()); so.write(Buffer.buffer("lost buffer"), onSuccess(ack -> testComplete()));
assertEquals(1, writeHandlerCounter.get()); close.complete(null);
});
}));
await();
} }


@Test @Test
public void testWriteHandlerFailure() { public void testWriteHandlerFailure() throws Exception {
Handler<AsyncResult<Void>> writeHandler = (asyncResult) -> { CompletableFuture<Void> close = new CompletableFuture<>();
assertFalse(asyncResult.succeeded()); server.connectHandler(socket -> {
assertTrue(asyncResult.failed());
testComplete();
};

Handler<AsyncResult<NetSocket>> clientHandler = (asyncResult) -> {
assert(asyncResult.succeeded());
NetSocket socket = asyncResult.result();
socket.handler(socket::write);
socket.setWriteQueueMaxSize(100);
Buffer sent = TestUtils.randomBuffer(1000);
socket.write(sent);
socket.write(sent);
assertTrue(socket.writeQueueFull());
socket.write(sent, writeHandler);
};

Handler<AsyncResult<NetServer>> listenHandler = s -> client.connect(testAddress, clientHandler);
Handler<NetSocket> serverHandler = socket -> {
socket.pause(); socket.pause();
socket.close(); close.thenAccept(v -> {
}; socket.close();

});
server.connectHandler(serverHandler).listen(testAddress, listenHandler); });
startServer();
client.connect(testAddress, onSuccess(so -> {
writeUntilFull(so, v -> {
so.write(Buffer.buffer("lost buffer"), onFailure(err -> {
testComplete();
}));
close.complete(null);
});
}));
await(); await();
} }


private void writeUntilFull(NetSocket so, Handler<Void> handler) {
if (so.writeQueueFull()) {
handler.handle(null);
} else {
so.write(TestUtils.randomBuffer(256));
vertx.runOnContext(v -> writeUntilFull(so, handler));
}
}

@Test @Test
public void testEchoBytes() { public void testEchoBytes() {
Buffer sent = TestUtils.randomBuffer(100); Buffer sent = TestUtils.randomBuffer(100);
Expand Down

0 comments on commit 200e281

Please sign in to comment.