Node implements Closeable { public boolean ping (String name) { return modulePing.ping(name); } @Builder private  Node(@NonNull NodeDescriptor descriptor,
                @NonNull Meta meta,
                @NonNull EpmdClient epmd,
                int creation,
                @NonNull NodeConfig config
  ); RemoteNode lookup(String name); RemoteNode lookup(ErlangPid pid); RemoteNode lookup(NodeDescriptor nodeDescriptor); boolean ping(String name); boolean ping(NodeDescriptor nodeDescriptor); boolean ping(RemoteNode remote); ErlangReference newReference(); ModuleMailbox.NewMailboxBuilder mailbox(); boolean register(Mailbox mailbox, String name); void deregister(String name); Mailbox mailbox(String name); Mailbox mailbox(ErlangPid pid); void remove(Mailbox mailbox); void remove(String name); void remove(ErlangPid pid); Map<ErlangPid, Mailbox> mailboxes(); CompletableFuture<Connection> connectAsync(RemoteNode remote); Connection connect(RemoteNode remote); Connection connect(RemoteNode remote, long timeout, TimeUnit unit); boolean isAvailable(RemoteNode remote); @Override void close();  }
@Test public void ping () throws Exception { val name1 = createName(); val name2 = createName(); node = Nodes.singleNode(name1, NodeConfig.builder() .shortName(true) .cookie("secret") .build() ); assertThat(node.ping(ELIXIR_ECHO_SERVER)) .isTrue(); assertThat(node.ping(ELIXIR_ECHO_SERVER)) .isTrue(); assertThat(node.ping(ELIXIR_ECHO_SERVER)) .isTrue(); assertThat(node.ping(ELIXIR_ECHO_SERVER)) .isTrue(); assertThat(node.ping(name1)) .isTrue(); assertThat(node.ping(name2)) .isFalse(); try (val node2 = Nodes.singleNode(name2, NodeConfig.builder() .shortName(true) .cookie("secret") .build())) { assertThat(node.ping(name2)) .isTrue(); assertThat(node2.ping(name1)) .isTrue(); } }