@Test public void testListenSamePortMultipleTimes() { peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.listen(1234, "127.0.0.1", ar1 -> { assertTrue(ar1.succeeded()); peer1.listen(1234, "127.0.0.1", ar2 -> { assertTrue(ar2.failed()); testComplete(); }); }); await(); }
@Test public void testDummyDatagramSocketMetrics() { DatagramSocket sock = vertx.createDatagramSocket(new DatagramSocketOptions()); assertFalse(sock.isMetricsEnabled()); } }
@Test public void testListenHostPort() { peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); testComplete(); }); await(); }
@Test public void testBroadcastFailsIfNotConfigured() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer1.send("test", 1234, "255.255.255.255", ar -> { assertTrue(ar.failed()); testComplete(); }); await(); }
@Test public void testListenInetSocketAddress() { peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); testComplete(); }); await(); }
@Test public void testListenPort() { peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.listen(1234, "localhost", ar -> { assertTrue(ar.succeeded()); testComplete(); }); await(); }
private TestLoggerFactory testLogging(DatagramSocketOptions sendOptions, DatagramSocketOptions listenOptions) throws Exception { return TestUtils.testLogging(() -> { peer1 = vertx.createDatagramSocket(sendOptions); peer2 = vertx.createDatagramSocket(listenOptions); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); Buffer buffer = TestUtils.randomBuffer(128); peer2.handler(packet -> { assertEquals(buffer, packet.data()); testComplete(); }); peer1.send(buffer, 1234, "127.0.0.1", ar2 -> assertTrue(ar2.succeeded())); }); await(); }); } }
@Test public void testSendAfterCloseFails() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer1.close(ar -> { assertTrue(ar.succeeded()); peer1.send("Test", 1234, "127.0.0.1", ar2 -> { assertTrue(ar2.failed()); peer1 = null; peer2.close(ar3 -> { assertTrue(ar3.succeeded()); peer2.send("Test", 1234, "127.0.0.1", ar4 -> { assertTrue(ar4.failed()); peer2 = null; testComplete(); }); }); }); }); await(); }
expectedThread.set(Thread.currentThread()); expectedContext.set(Vertx.currentContext()); DatagramSocket socket = vertx.createDatagramSocket(); socket.listen(1234, "localhost", ar1 -> { assertTrue(ar1.succeeded());
@Test public void testEndHandler() { ThreadLocal<Object> stack = new ThreadLocal<>(); stack.set(true); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); peer2.endHandler(v -> { assertTrue(Vertx.currentContext().isEventLoopContext()); assertNull(stack.get()); testComplete(); }); peer2.close(); }); await(); }
@Test public void testSendReceive() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); Buffer buffer = TestUtils.randomBuffer(128); peer2.handler(packet -> { assertFalse(Thread.holdsLock(peer2)); Buffer data = packet.data(); ByteBuf buff = data.getByteBuf(); while (buff != buff.unwrap() && buff.unwrap() != null) { buff = buff.unwrap(); } assertTrue("Was expecting an unpooled buffer instead of " + buff.getClass().getSimpleName(), buff.getClass().getSimpleName().contains("Unpooled")); assertEquals(buffer, data); testComplete(); }); peer1.send(buffer, 1234, "127.0.0.1", ar2 -> { assertFalse(Thread.holdsLock(peer1)); assertTrue(ar2.succeeded()); }); }); await(); }
@Test public void testSendReceiveLargePacket() { int packetSize = 10000; peer1 = vertx.createDatagramSocket(new DatagramSocketOptions().setSendBufferSize(packetSize)); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions().setReceiveBufferSize(packetSize + 16)); // OSX needs 16 more peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); Buffer buffer = TestUtils.randomBuffer(packetSize); peer2.handler(packet -> { assertEquals(buffer, packet.data()); testComplete(); }); peer1.send(buffer, 1234, "127.0.0.1", ar2 -> assertTrue(ar2.succeeded())); }); await(); }
@Test public void testOptionsCopied() { DatagramSocketOptions options = new DatagramSocketOptions(); options.setReuseAddress(true); options.setReusePort(true); // Seems needed only for native on OSX peer1 = vertx.createDatagramSocket(options); peer2 = vertx.createDatagramSocket(options); // Listening on same address:port so will only work if reuseAddress = true // Set to false, but because options are copied internally should still work options.setReuseAddress(false); peer1.listen(1234, "127.0.0.1", onSuccess(v1 -> { peer2.listen(1234, "127.0.0.1", onSuccess(v2 -> { testComplete(); })); })); await(); }
@Test public void testSender() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> { Buffer buffer = TestUtils.randomBuffer(128); peer2.handler(packet -> { assertEquals(buffer, packet.data()); testComplete(); }); WriteStream<Buffer> sender1 = peer1.sender(1234, "127.0.0.1"); sender1.write(buffer); }); await(); }
String iface = NetworkInterface.getByInetAddress(InetAddress.getByName("127.0.0.1")).getName(); AtomicBoolean received = new AtomicBoolean(); peer1 = vertx.createDatagramSocket(new DatagramSocketOptions().setMulticastNetworkInterface(iface)); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions().setMulticastNetworkInterface(iface));
@Test public void testBroadcast() { if (USE_NATIVE_TRANSPORT) { return; } peer1 = vertx.createDatagramSocket(new DatagramSocketOptions().setBroadcast(true)); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions().setBroadcast(true)); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "0.0.0.0", ar1 -> { assertTrue(ar1.succeeded()); Buffer buffer = TestUtils.randomBuffer(128); peer2.handler(packet -> { assertEquals(buffer, packet.data()); testComplete(); }); peer1.send(buffer, 1234, "255.255.255.255", ar2 -> { assertTrue(ar2.succeeded()); }); }); await(); }
private void testDatagram(String host, Consumer<PacketMetric> checker) throws Exception { DatagramSocket peer1 = vertx.createDatagramSocket(); DatagramSocket peer2 = vertx.createDatagramSocket(); try { CountDownLatch latch = new CountDownLatch(1);
@Test public void testPauseResume() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> {
@Test public void testEcho() { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer2 = vertx.createDatagramSocket(new DatagramSocketOptions()); peer1.exceptionHandler(t -> fail(t.getMessage())); peer2.exceptionHandler(t -> fail(t.getMessage())); peer2.listen(1234, "127.0.0.1", ar -> { assertTrue(ar.succeeded()); Buffer buffer = TestUtils.randomBuffer(128); peer2.handler(packet -> { assertEquals("127.0.0.1", packet.sender().host()); assertEquals(1235, packet.sender().port()); assertEquals(buffer, packet.data()); peer2.send(packet.data(), 1235, "127.0.0.1", ar2 -> assertTrue(ar2.succeeded())); }); peer1.listen(1235, "127.0.0.1", ar2 -> { peer1.handler(packet -> { assertEquals(buffer, packet.data()); assertEquals("127.0.0.1", packet.sender().host()); assertEquals(1234, packet.sender().port()); testComplete(); }); peer1.send(buffer, 1234, "127.0.0.1", ar3 -> assertTrue(ar3.succeeded())); }); }); await(); }
@Test public void testDatagramSocket() throws Exception { peer1 = vertx.createDatagramSocket(new DatagramSocketOptions()); assertNullPointerException(() -> peer1.send((Buffer) null, 1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send(Buffer.buffer(), -1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send(Buffer.buffer(), 65536, "127.0.0.1", ar -> {})); assertNullPointerException(() -> peer1.send((String) null, 1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send("", -1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send("", 65536, "127.0.0.1", ar -> {})); assertNullPointerException(() -> peer1.send((String) null, "UTF-8", 1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send("", "UTF-8", -1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.send("", "UTF-8", 65536, "127.0.0.1", ar -> {})); assertNullPointerException(() -> peer1.send("", null, 1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.sender(-1, "127.0.0.1")); assertIllegalArgumentException(() -> peer1.sender(65536, "127.0.0.1")); assertNullPointerException(() -> peer1.sender(1, null)); assertIllegalArgumentException(() -> peer1.listen(-1, "127.0.0.1", ar -> {})); assertIllegalArgumentException(() -> peer1.listen(65536, "127.0.0.1", ar -> {})); assertNullPointerException(() -> peer1.listen(1, null, ar -> {})); assertNullPointerException(() -> peer1.listen(1, "127.0.0.1", null)); }