Search in sources :

Example 21 with HttpServer

use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.

the class HttpCompressionClientServerTests method serverCompressionPredicateFalse.

@Test
public void serverCompressionPredicateFalse() throws Exception {
    HttpServer server = HttpServer.create(o -> o.port(0).compression((req, res) -> false));
    NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
    // don't activate compression on the client options to avoid auto-handling (which removes the header)
    HttpClient client = HttpClient.create(o -> o.connectAddress(() -> address(nettyContext)));
    HttpClientResponse resp = // edit the header manually to attempt to trigger compression on server side
    client.get("/test", req -> req.header("Accept-Encoding", "gzip")).block();
    // check the server didn't send the gzip header, only transfer-encoding
    HttpHeaders headers = resp.responseHeaders();
    assertThat(headers.get("transFER-encoding")).isEqualTo("chunked");
    assertThat(headers.get("conTENT-encoding")).isNull();
    // check the server sent plain text
    String reply = resp.receive().asString().blockFirst();
    Assert.assertEquals("reply", reply);
    resp.dispose();
    nettyContext.dispose();
    nettyContext.onClose().block();
}
Also used : GZIPInputStream(java.util.zip.GZIPInputStream) HttpHeaders(io.netty.handler.codec.http.HttpHeaders) StepVerifier(reactor.test.StepVerifier) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) Mono(reactor.core.publisher.Mono) InetSocketAddress(java.net.InetSocketAddress) AtomicReference(java.util.concurrent.atomic.AtomicReference) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) Flux(reactor.core.publisher.Flux) ByteArrayInputStream(java.io.ByteArrayInputStream) Ignore(org.junit.Ignore) Duration(java.time.Duration) NettyContext(reactor.ipc.netty.NettyContext) HttpClient(reactor.ipc.netty.http.client.HttpClient) Assert(org.junit.Assert) HttpServer(reactor.ipc.netty.http.server.HttpServer) HttpHeaders(io.netty.handler.codec.http.HttpHeaders) HttpClient(reactor.ipc.netty.http.client.HttpClient) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) HttpServer(reactor.ipc.netty.http.server.HttpServer) NettyContext(reactor.ipc.netty.NettyContext) Test(org.junit.Test)

Example 22 with HttpServer

use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.

the class HttpCompressionClientServerTests method compressionActivatedOnClientAddsHeader.

@Test
public void compressionActivatedOnClientAddsHeader() {
    AtomicReference<String> zip = new AtomicReference<>("fail");
    HttpServer server = HttpServer.create(o -> o.port(0).compression(true));
    NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just("reply"))).block(Duration.ofMillis(10_000));
    HttpClient client = HttpClient.create(opt -> opt.compression(true).connectAddress(() -> address(nettyContext)));
    HttpClientResponse resp = client.get("/test", req -> {
        zip.set(req.requestHeaders().get("accept-encoding"));
        return req;
    }).block();
    assertThat(zip.get()).isEqualTo("gzip");
    resp.dispose();
    nettyContext.dispose();
    nettyContext.onClose().block();
}
Also used : GZIPInputStream(java.util.zip.GZIPInputStream) HttpHeaders(io.netty.handler.codec.http.HttpHeaders) StepVerifier(reactor.test.StepVerifier) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) Mono(reactor.core.publisher.Mono) InetSocketAddress(java.net.InetSocketAddress) AtomicReference(java.util.concurrent.atomic.AtomicReference) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) Flux(reactor.core.publisher.Flux) ByteArrayInputStream(java.io.ByteArrayInputStream) Ignore(org.junit.Ignore) Duration(java.time.Duration) NettyContext(reactor.ipc.netty.NettyContext) HttpClient(reactor.ipc.netty.http.client.HttpClient) Assert(org.junit.Assert) HttpServer(reactor.ipc.netty.http.server.HttpServer) HttpClient(reactor.ipc.netty.http.client.HttpClient) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) HttpServer(reactor.ipc.netty.http.server.HttpServer) AtomicReference(java.util.concurrent.atomic.AtomicReference) NettyContext(reactor.ipc.netty.NettyContext) Test(org.junit.Test)

Example 23 with HttpServer

use of reactor.ipc.netty.http.server.HttpServer in project reactor-netty by reactor.

the class HttpCompressionClientServerTests method compressionServerEnabledClientDisabledIsNone.

@Test
public void compressionServerEnabledClientDisabledIsNone() throws Exception {
    HttpServer server = HttpServer.create(o -> o.port(0).compression(true));
    String serverReply = "reply";
    NettyContext nettyContext = server.newHandler((in, out) -> out.sendString(Mono.just(serverReply))).block(Duration.ofMillis(10_000));
    HttpClient client = HttpClient.create(o -> o.compression(false).connectAddress(() -> address(nettyContext)));
    HttpClientResponse resp = client.get("/test").block();
    String reply = resp.receive().asString().blockFirst();
    assertThat(resp.responseHeaders().get("Content-Encoding")).isNull();
    assertThat(reply).isEqualTo(serverReply);
    resp.dispose();
    nettyContext.dispose();
    nettyContext.onClose().block();
}
Also used : GZIPInputStream(java.util.zip.GZIPInputStream) HttpHeaders(io.netty.handler.codec.http.HttpHeaders) StepVerifier(reactor.test.StepVerifier) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Test(org.junit.Test) Mono(reactor.core.publisher.Mono) InetSocketAddress(java.net.InetSocketAddress) AtomicReference(java.util.concurrent.atomic.AtomicReference) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) Flux(reactor.core.publisher.Flux) ByteArrayInputStream(java.io.ByteArrayInputStream) Ignore(org.junit.Ignore) Duration(java.time.Duration) NettyContext(reactor.ipc.netty.NettyContext) HttpClient(reactor.ipc.netty.http.client.HttpClient) Assert(org.junit.Assert) HttpServer(reactor.ipc.netty.http.server.HttpServer) HttpClient(reactor.ipc.netty.http.client.HttpClient) HttpClientResponse(reactor.ipc.netty.http.client.HttpClientResponse) HttpServer(reactor.ipc.netty.http.server.HttpServer) NettyContext(reactor.ipc.netty.NettyContext) Test(org.junit.Test)

Aggregations

HttpServer (reactor.ipc.netty.http.server.HttpServer)23 Test (org.junit.Test)21 Mono (reactor.core.publisher.Mono)21 Duration (java.time.Duration)20 Flux (reactor.core.publisher.Flux)20 NettyContext (reactor.ipc.netty.NettyContext)20 AtomicReference (java.util.concurrent.atomic.AtomicReference)18 Ignore (org.junit.Ignore)17 StepVerifier (reactor.test.StepVerifier)16 InetSocketAddress (java.net.InetSocketAddress)15 Assert (org.junit.Assert)15 HttpClient (reactor.ipc.netty.http.client.HttpClient)14 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)13 HttpHeaders (io.netty.handler.codec.http.HttpHeaders)12 ByteArrayInputStream (java.io.ByteArrayInputStream)11 GZIPInputStream (java.util.zip.GZIPInputStream)11 HttpClientResponse (reactor.ipc.netty.http.client.HttpClientResponse)11 CountDownLatch (java.util.concurrent.CountDownLatch)7 TimeUnit (java.util.concurrent.TimeUnit)5 After (org.junit.After)5