/** * Starts to accept connections on local address. * * @return mono transport */ public Mono<Transport> bind0() { return newTcpServer() .handle(this::onMessage) .bind() .doOnSuccess( server -> LOGGER.debug("Bound cluster transport on {}:{}", server.host(), server.port())) .doOnError( ex -> LOGGER.error( "Failed to bind cluster transport on port={}, cause: {}", config.getPort(), ex.toString())) .map(this::onBind); }
@Test public void getContextAddressAndHost() { DisposableServer c = new TcpServer(){ @Override public Mono<? extends DisposableServer> bind(ServerBootstrap b) { return Mono.just(NEVER_STOP_SERVER); } @Override public ServerBootstrap configure() { return TcpServerBind.INSTANCE.createServerBootstrap(); } }.bindNow(); assertThat(c).isSameAs(NEVER_STOP_SERVER); assertThat(c.port()).isEqualTo(NEVER_STOP_CONTEXT.address().getPort()); assertThat(c.host()).isEqualTo(NEVER_STOP_CONTEXT.address().getHostString()); } }
@Test public void testIssue473() throws Exception { SelfSignedCertificate cert = new SelfSignedCertificate(); SslContextBuilder serverSslContextBuilder = SslContextBuilder.forServer(cert.certificate(), cert.privateKey()); DisposableServer server = HttpServer.create() .port(0) .wiretap(true) .secure(spec -> spec.sslContext(serverSslContextBuilder)) .bindNow(); StepVerifier.create( HttpClient.create(ConnectionProvider.newConnection()) .secure() .websocket() .uri("wss://" + server.host() + ":" + server.port()) .handle((in, out) -> Mono.empty())) .expectErrorMatches(t -> t.getCause() instanceof CertificateException) .verify(Duration.ofSeconds(30)); server.disposeNow(); }