@Override public int getPort() { if (this.disposableServer != null) { return this.disposableServer.port(); } return 0; }
/** * 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()); } }
private HttpClient createHttpClientForContextWithPort(DisposableServer context, ConnectionProvider pool) { HttpClient client; if (pool == null) { client = HttpClient.create(); } else { client = HttpClient.create(pool); } return client.port(context.port()) .wiretap(true); }
@Test public void portBindingException() { DisposableServer d = HttpServer.create() .port(0) .bindNow(); try { HttpServer.create() .port(d.port()) .bindNow(); Assert.fail("illegal-success"); } catch (ChannelBindException e){ Assert.assertEquals(e.localPort(), d.port()); e.printStackTrace(); } d.disposeNow(); }
private void doTestDropData( BiFunction<? super HttpServerRequest, ? super HttpServerResponse, ? extends Publisher<Void>> serverFn, BiFunction<? super HttpClientRequest, ? super NettyOutbound, ? extends Publisher<Void>> clientFn) { DisposableServer disposableServer = HttpServer.create() .port(0) .handle(serverFn) .wiretap(true) .bindNow(Duration.ofSeconds(30)); String response = HttpClient.create() .port(disposableServer.port()) .wiretap(true) .request(HttpMethod.GET) .uri("/") .send(clientFn) .responseContent() .aggregate() .asString() .switchIfEmpty(Mono.just("Empty")) .block(Duration.ofSeconds(30)); assertThat(response).isEqualTo("Empty"); disposableServer.disposeNow(); }
@Test public void testIssue525() { DisposableServer disposableServer = HttpServer.create() .port(0) .tcpConfiguration(tcpServer -> tcpServer.doOnConnection(c -> c.addHandlerFirst("decompressor", new HttpContentDecompressor()))) .handle((req, res) -> res.send(req.receive() .retain())) .wiretap(true) .bindNow(Duration.ofSeconds(30)); byte[] bytes = "test".getBytes(Charset.defaultCharset()); String response = HttpClient.create() .port(disposableServer.port()) .wiretap(true) .headers(h -> h.add("Content-Encoding", "gzip")) .post() .uri("/") .send(Mono.just(Unpooled.wrappedBuffer(compress(bytes)))) .responseContent() .aggregate() .asString() .block(Duration.ofSeconds(30)); assertThat(response).isEqualTo("test"); disposableServer.disposeNow(); }
.port(server.port()) .cookieCodec(ClientCookieEncoder.LAX, ClientCookieDecoder.LAX) .wiretap(true)
@Test public void clientWithoutCookieGetsANewOneFromServer() { DisposableServer server = HttpServer.create() .port(0) .route(r -> r.get("/test", (req, resp) -> resp.addCookie(new DefaultCookie("cookie1", "test_value")) .send(req.receive() .log("server received")))) .wiretap(true) .bindNow(); Mono<Map<CharSequence, Set<Cookie>>> cookieResponse = HttpClient.create() .port(server.port()) .wiretap(true) .get() .uri("/test") .responseSingle((res, buf) -> Mono.just(res.cookies())) .doOnSuccess(System.out::println) .doOnError(t -> System.err.println("Failed requesting server: " + t.getMessage())); StepVerifier.create(cookieResponse) .expectNextMatches(l -> { Set<Cookie> cookies = l.get("cookie1"); return cookies.stream().anyMatch(e -> e.value().equals("test_value")); }) .expectComplete() .verify(Duration.ofSeconds(30)); server.disposeNow(); }
.port(server.port()) .doOnRequest((req, c) -> { if (req.currentContext().hasKey("test")) {
@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(); }
.port(server.port()) .secure(ssl -> ssl.sslContext( SslContextBuilder.forClient()
@Test // @Ignore public void testHttpToHttp2Ssl() throws Exception { SelfSignedCertificate cert = new SelfSignedCertificate(); SslContextBuilder serverOptions = SslContextBuilder.forServer(cert.certificate(), cert.privateKey()); DisposableServer server = HttpServer.create() .secure(sslContextSpec -> sslContextSpec.sslContext(serverOptions) .defaultConfiguration(SslProvider.DefaultConfigurationType.H2)) .handle((req, res) -> res.sendString(Mono.just("Hello"))) .wiretap(true) .bindNow(); String response = HttpClient.create() .port(server.port()) .secure(ssl -> ssl.sslContext( SslContextBuilder.forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE))) .wiretap(true) .get() .uri("/") .responseContent() .aggregate() .asString() .block(Duration.ofSeconds(30)); server.disposeNow(); }