void registerHandler(EventBus eventBus) { Handler<Message<Buffer>> binaryHandler = msg -> writeBinaryFrameInternal(msg.body()); Handler<Message<String>> textHandler = msg -> writeTextFrameInternal(msg.body()); binaryHandlerRegistration = eventBus.<Buffer>localConsumer(binaryHandlerID).handler(binaryHandler); textHandlerRegistration = eventBus.<String>localConsumer(textHandlerID).handler(textHandler); }
private void testUnregisterationOfRegisteredConsumerCallsEndHandler(MessageConsumer<String> consumer, ReadStream<?> readStream) { consumer.handler(msg -> {}); consumer.endHandler(v -> testComplete()); consumer.unregister(); await(); }
@Test public void testSendWithTimeoutNoTimeoutNoReply() { String str = TestUtils.randomUnicodeString(1000); eb.<String>consumer(ADDRESS1).handler((Message<String> msg) -> { assertEquals(str, msg.body()); testComplete(); }); long timeout = 1000; eb.send(ADDRESS1, str, new DeliveryOptions().setSendTimeout(timeout), ar -> { }); await(); }
@Test public void testLocalOnlyDoesNotApplyToReplies() { startNodes(2); vertices[1].eventBus().consumer(ADDRESS1).handler(msg -> { msg.reply("pong", new DeliveryOptions().setLocalOnly(true)); }).completionHandler(onSuccess(v -> { vertices[0].eventBus().send(ADDRESS1, "ping", new DeliveryOptions().setSendTimeout(500), onSuccess(msg -> testComplete())); })); await(); } }
@Test public void testDefaultCodecReplyExceptionSubclass() throws Exception { MyReplyException myReplyException = new MyReplyException(23, "my exception"); vertx.eventBus().registerDefaultCodec(MyReplyException.class, new MyReplyExceptionMessageCodec()); eb.<ReplyException>consumer(ADDRESS1, msg -> { assertTrue(msg.body() instanceof MyReplyException); testComplete(); }); vertx.eventBus().send(ADDRESS1, myReplyException); await(); }
@Test public void testUnregisterDecoder() throws Exception { MessageCodec codec = new MyPOJOEncoder1(); vertx.eventBus().registerCodec(codec); vertx.eventBus().unregisterCodec(codec.name()); try { vertx.eventBus().send(ADDRESS1, new MyPOJO("foo"), new DeliveryOptions().setCodecName(codec.name())); fail("Should throw exception"); } catch (IllegalArgumentException e) { // OK } }
@Test public void testUnregisterThenUnsetEndHandler() { MessageConsumer<String> consumer = eb.consumer(ADDRESS1); consumer.endHandler(v -> {}); consumer.unregister(res -> { testComplete(); }); consumer.endHandler(null); await(); }
@Test public void testUnregisterationOfRegisteredConsumerCallsEndHandlerWithBodyStream() { MessageConsumer<String> consumer = eb.consumer(ADDRESS1); testUnregisterationOfRegisteredConsumerCallsEndHandler(consumer, consumer.bodyStream()); }
@Test public void testUnregistrationWhenSettingNullHandlerWithBodyStream() { MessageConsumer<String> consumer = eb.consumer(ADDRESS1); testUnregistrationWhenSettingNullHandler(consumer, consumer.bodyStream()); }
@Test public void testDecoderReplySymmetric() throws Exception { startNodes(2); MessageCodec codec = new MyPOJOEncoder2(); vertices[0].eventBus().registerCodec(codec); vertices[1].eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); MyPOJO pojo = new MyPOJO(str); testReply(pojo, pojo, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderSendAsymmetric() throws Exception { startNodes(2); MessageCodec codec = new MyPOJOEncoder1(); vertices[0].eventBus().registerCodec(codec); vertices[1].eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); testSend(new MyPOJO(str), str, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderSendSymmetric() throws Exception { startNodes(2); MessageCodec codec = new MyPOJOEncoder2(); vertices[0].eventBus().registerCodec(codec); vertices[1].eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); MyPOJO pojo = new MyPOJO(str); testSend(pojo, pojo, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderSendSymmetric() throws Exception { MessageCodec codec = new MyPOJOEncoder2(); vertx.eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); MyPOJO pojo = new MyPOJO(str); testSend(pojo, pojo, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderReplyAsymmetric() throws Exception { MessageCodec codec = new MyPOJOEncoder1(); vertx.eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); testReply(new MyPOJO(str), str, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderSendAsymmetric() throws Exception { MessageCodec codec = new MyPOJOEncoder1(); vertx.eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); testSend(new MyPOJO(str), str, null, new DeliveryOptions().setCodecName(codec.name())); }
@Test public void testDecoderReplySymmetric() throws Exception { MessageCodec codec = new MyPOJOEncoder2(); vertx.eventBus().registerCodec(codec); String str = TestUtils.randomAlphaString(100); MyPOJO pojo = new MyPOJO(str); testReply(pojo, pojo, null, new DeliveryOptions().setCodecName(codec.name())); }