use of io.vertx.core.net.NetClient in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testSendMessageWithDuplicateReplyID.
@Test
public void testSendMessageWithDuplicateReplyID(TestContext context) {
// replies must always return to the same origin
NetClient client = vertx.createNetClient();
final Async async = context.async();
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
vertx.eventBus().consumer("third-party-receiver", msg -> context.fail());
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
client.close();
async.complete();
});
socket.handler(parser);
FrameHelper.sendFrame("send", "hello", "third-party-receiver", new JsonObject().put("value", "vert.x"), socket);
}));
}
use of io.vertx.core.net.NetClient in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testUnRegister.
@Test
public void testUnRegister(TestContext context) {
// Send a request and get a response
NetClient client = vertx.createNetClient();
final Async async = context.async();
final String address = "test";
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
// 2 replies will arrive:
// 1). message published to test
// 2). err of NO_HANDLERS because of consumer for 'test' is unregistered.
final AtomicBoolean unregistered = new AtomicBoolean(false);
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
if (unregistered.get()) {
// consumer on 'test' has been unregistered, send message will fail.
context.assertEquals("err", frame.getString("type"));
context.assertEquals("#backtrack", frame.getString("address"));
context.assertEquals("NO_HANDLERS", frame.getString("failureType"));
context.assertEquals("No handlers for address test", frame.getString("message"));
client.close();
async.complete();
} else {
// got message, then unregister the handler
context.assertNotEquals("err", frame.getString("type"));
context.assertEquals(false, frame.getBoolean("send"));
context.assertEquals("Vert.x", frame.getJsonObject("body").getString("value"));
unregistered.compareAndSet(false, true);
FrameHelper.sendFrame("unregister", address, null, socket);
FrameHelper.sendFrame("send", address, "#backtrack", new JsonObject().put("value", "This will fail anyway!"), socket);
}
});
socket.handler(parser);
FrameHelper.sendFrame("register", address, null, socket);
FrameHelper.sendFrame("publish", address, new JsonObject().put("value", "Vert.x"), socket);
}));
}
use of io.vertx.core.net.NetClient in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testReplyFromClient.
@Test
public void testReplyFromClient(TestContext context) {
// Send a request from java and get a response from the client
NetClient client = vertx.createNetClient();
final Async async = context.async();
final String address = "test";
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
if ("message".equals(frame.getString("type"))) {
context.assertEquals(true, frame.getBoolean("send"));
context.assertEquals("Vert.x", frame.getJsonObject("body").getString("value"));
FrameHelper.sendFrame("send", frame.getString("replyAddress"), new JsonObject().put("value", "You got it"), socket);
}
});
socket.handler(parser);
FrameHelper.sendFrame("register", address, null, socket);
// There is now way to know that the register actually happened, wait a bit before sending.
vertx.setTimer(500L, timerId -> {
vertx.eventBus().<JsonObject>request(address, new JsonObject().put("value", "Vert.x"), respMessage -> {
context.assertTrue(respMessage.succeeded());
context.assertEquals("You got it", respMessage.result().body().getString("value"));
client.close();
async.complete();
});
});
}));
}
use of io.vertx.core.net.NetClient in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testSendMessageWithReplyBacktrack.
@Test
public void testSendMessageWithReplyBacktrack(TestContext context) {
// Send a request and get a response
NetClient client = vertx.createNetClient();
final Async async = context.async();
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
context.assertNotEquals("err", frame.getString("type"));
context.assertEquals(true, frame.getBoolean("send"));
context.assertEquals("Hello vert.x", frame.getJsonObject("body").getString("value"));
client.close();
async.complete();
});
socket.handler(parser);
FrameHelper.sendFrame("send", "hello", "#backtrack", new JsonObject().put("value", "vert.x"), socket);
}));
}
use of io.vertx.core.net.NetClient in project vertx-tcp-eventbus-bridge by vert-x3.
the class TcpEventBusBridgeTest method testNoHandlers.
@Test
public void testNoHandlers(TestContext context) {
// Send a request and get a response
NetClient client = vertx.createNetClient();
final Async async = context.async();
client.connect(7000, "localhost", context.asyncAssertSuccess(socket -> {
final FrameParser parser = new FrameParser(parse -> {
context.assertTrue(parse.succeeded());
JsonObject frame = parse.result();
context.assertEquals("err", frame.getString("type"));
context.assertEquals("#backtrack", frame.getString("address"));
client.close();
async.complete();
});
socket.handler(parser);
FrameHelper.sendFrame("send", "test", "#backtrack", new JsonObject().put("value", "vert.x"), socket);
}));
}
Aggregations