FileNetworker implements Networker { @Override public Group lookup(URL url) throws RemotingException { return new FileGroup(url); }  @Override Group lookup(URL url);  }
@Test public void testJoin(@TempDir Path folder) throws RemotingException, InterruptedException { final String groupURL = "file: FileNetworker networker = new FileNetworker(); Group group = networker.lookup(URL.valueOf(groupURL)); final CountDownLatch countDownLatch = new CountDownLatch(1); Peer peer1 = group.join(URL.valueOf("exchange: @Override public void received(Channel channel, Object message) { countDownLatch.countDown(); } }); Peer peer2 = group.join(URL.valueOf("exchange: mock(ChannelHandlerAdapter.class)); while (true) { long count = countDownLatch.getCount(); if (count > 0) { break; } for (Channel channel : peer1.getChannels()) { channel.send(0, false); channel.send("hello world!"); } TimeUnit.MILLISECONDS.sleep(50); } peer2.close(); peer1.close(); }