Search in sources :

Example 1 with EmptyPublisher

use of software.amazon.awssdk.http.EmptyPublisher in project aws-sdk-java-v2 by aws.

the class ConnectionReaperTest method makeRequest.

private void makeRequest(SdkAsyncHttpClient client) {
    stubFor(WireMock.any(anyUrl()).willReturn(aResponse().withBody(randomAlphabetic(10))));
    RecordingResponseHandler handler = new RecordingResponseHandler();
    URI uri = URI.create("http://localhost:" + mockServer.port());
    client.execute(AsyncExecuteRequest.builder().request(SdkHttpRequest.builder().uri(uri).method(SdkHttpMethod.GET).encodedPath("/").putHeader("Host", uri.getHost()).putHeader("Content-Length", "0").build()).requestContentPublisher(new EmptyPublisher()).responseHandler(handler).build()).join();
    assertThat(handler.fullResponseAsString()).hasSize(10);
}
Also used : RecordingResponseHandler(software.amazon.awssdk.http.nio.netty.RecordingResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) URI(java.net.URI)

Example 2 with EmptyPublisher

use of software.amazon.awssdk.http.EmptyPublisher in project aws-sdk-java-v2 by aws.

the class Http2MetricsTest method createExecuteRequest.

private AsyncExecuteRequest createExecuteRequest(MetricCollector metricCollector) {
    URI uri = URI.create("http://localhost:" + SERVER.port());
    SdkHttpRequest request = createRequest(uri);
    return AsyncExecuteRequest.builder().request(request).requestContentPublisher(new EmptyPublisher()).responseHandler(new RecordingResponseHandler()).metricCollector(metricCollector).build();
}
Also used : SdkHttpRequest(software.amazon.awssdk.http.SdkHttpRequest) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) URI(java.net.URI)

Example 3 with EmptyPublisher

use of software.amazon.awssdk.http.EmptyPublisher in project aws-sdk-java-v2 by aws.

the class NettyNioAsyncHttpClientSpiVerificationTest method signalsErrorViaOnErrorAndFuture.

// CONNECTION_RESET_BY_PEER does not work on JDK 11. See https://github.com/tomakehurst/wiremock/issues/1009
@Test
public void signalsErrorViaOnErrorAndFuture() throws Exception {
    stubFor(any(urlEqualTo("/")).willReturn(aResponse().withFault(Fault.RANDOM_DATA_THEN_CLOSE)));
    CompletableFuture<Boolean> errorSignaled = new CompletableFuture<>();
    SdkAsyncHttpResponseHandler handler = new TestResponseHandler() {

        @Override
        public void onError(Throwable error) {
            errorSignaled.complete(true);
        }
    };
    SdkHttpRequest request = createRequest(URI.create("http://localhost:" + mockServer.port()));
    CompletableFuture<Void> executeFuture = client.execute(AsyncExecuteRequest.builder().request(request).responseHandler(handler).requestContentPublisher(new EmptyPublisher()).build());
    assertThat(errorSignaled.get(1, TimeUnit.SECONDS)).isTrue();
    assertThatThrownBy(executeFuture::join).hasCauseInstanceOf(IOException.class);
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) SdkHttpRequest(software.amazon.awssdk.http.SdkHttpRequest) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Test(org.junit.Test)

Example 4 with EmptyPublisher

use of software.amazon.awssdk.http.EmptyPublisher in project aws-sdk-java-v2 by aws.

the class PingTimeoutTest method makeRequest.

private CompletableFuture<Void> makeRequest(Duration healthCheckPingPeriod) {
    netty = NettyNioAsyncHttpClient.builder().protocol(Protocol.HTTP2).http2Configuration(Http2Configuration.builder().healthCheckPingPeriod(healthCheckPingPeriod).build()).build();
    SdkHttpFullRequest request = SdkHttpFullRequest.builder().protocol("http").host("localhost").port(server.port()).method(SdkHttpMethod.GET).build();
    AsyncExecuteRequest executeRequest = AsyncExecuteRequest.builder().fullDuplex(false).request(request).requestContentPublisher(new EmptyPublisher()).responseHandler(new SdkAsyncHttpResponseHandler() {

        @Override
        public void onHeaders(SdkHttpResponse headers) {
        }

        @Override
        public void onStream(Publisher<ByteBuffer> stream) {
            stream.subscribe(new Subscriber<ByteBuffer>() {

                @Override
                public void onSubscribe(Subscription s) {
                    s.request(Integer.MAX_VALUE);
                }

                @Override
                public void onNext(ByteBuffer byteBuffer) {
                }

                @Override
                public void onError(Throwable t) {
                }

                @Override
                public void onComplete() {
                }
            });
        }

        @Override
        public void onError(Throwable error) {
        }
    }).build();
    return netty.execute(executeRequest);
}
Also used : AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) SdkHttpFullRequest(software.amazon.awssdk.http.SdkHttpFullRequest) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Publisher(org.reactivestreams.Publisher) Subscription(org.reactivestreams.Subscription) ByteBuffer(java.nio.ByteBuffer)

Example 5 with EmptyPublisher

use of software.amazon.awssdk.http.EmptyPublisher in project aws-sdk-java-v2 by aws.

the class WindowSizeTest method execute_noExplicitValueSet_sendsDefaultValueInSettings.

@Test
public void execute_noExplicitValueSet_sendsDefaultValueInSettings() throws InterruptedException {
    ConcurrentLinkedQueue<Http2Frame> receivedFrames = new ConcurrentLinkedQueue<>();
    server = new TestH2Server(() -> new StreamHandler(receivedFrames));
    server.init();
    netty = NettyNioAsyncHttpClient.builder().protocol(Protocol.HTTP2).build();
    AsyncExecuteRequest req = AsyncExecuteRequest.builder().requestContentPublisher(new EmptyPublisher()).request(SdkHttpFullRequest.builder().method(SdkHttpMethod.GET).protocol("http").host("localhost").port(server.port()).build()).responseHandler(new SdkAsyncHttpResponseHandler() {

        @Override
        public void onHeaders(SdkHttpResponse headers) {
        }

        @Override
        public void onStream(Publisher<ByteBuffer> stream) {
        }

        @Override
        public void onError(Throwable error) {
        }
    }).build();
    netty.execute(req).join();
    List<Http2Settings> receivedSettings = receivedFrames.stream().filter(f -> f instanceof Http2SettingsFrame).map(f -> (Http2SettingsFrame) f).map(Http2SettingsFrame::settings).collect(Collectors.toList());
    assertThat(receivedSettings.size()).isGreaterThan(0);
    for (Http2Settings s : receivedSettings) {
        assertThat(s.initialWindowSize()).isEqualTo(DEFAULT_INIT_WINDOW_SIZE);
    }
}
Also used : ChannelOption(io.netty.channel.ChannelOption) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ChannelInboundHandlerAdapter(io.netty.channel.ChannelInboundHandlerAdapter) Protocol(software.amazon.awssdk.http.Protocol) Http2FrameCodecBuilder(io.netty.handler.codec.http2.Http2FrameCodecBuilder) Supplier(java.util.function.Supplier) ByteBuffer(java.nio.ByteBuffer) Http2Frame(io.netty.handler.codec.http2.Http2Frame) ServerSocketChannel(io.netty.channel.socket.ServerSocketChannel) NettyNioAsyncHttpClient(software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) After(org.junit.After) Http2DataFrame(io.netty.handler.codec.http2.Http2DataFrame) SdkHttpMethod(software.amazon.awssdk.http.SdkHttpMethod) SdkHttpFullRequest(software.amazon.awssdk.http.SdkHttpFullRequest) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) SdkAsyncHttpClient(software.amazon.awssdk.http.async.SdkAsyncHttpClient) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) SocketChannel(io.netty.channel.socket.SocketChannel) ExpectedException(org.junit.rules.ExpectedException) Http2Configuration(software.amazon.awssdk.http.nio.netty.Http2Configuration) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) ChannelInitializer(io.netty.channel.ChannelInitializer) Publisher(org.reactivestreams.Publisher) DefaultHttp2HeadersFrame(io.netty.handler.codec.http2.DefaultHttp2HeadersFrame) NioServerSocketChannel(io.netty.channel.socket.nio.NioServerSocketChannel) Http2FrameCodec(io.netty.handler.codec.http2.Http2FrameCodec) Test(org.junit.Test) Collectors(java.util.stream.Collectors) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) Http2HeadersFrame(io.netty.handler.codec.http2.Http2HeadersFrame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) Http2Settings(io.netty.handler.codec.http2.Http2Settings) List(java.util.List) Rule(org.junit.Rule) ReferenceCountUtil(io.netty.util.ReferenceCountUtil) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) ChannelHandler(io.netty.channel.ChannelHandler) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) Queue(java.util.Queue) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Publisher(org.reactivestreams.Publisher) Http2Frame(io.netty.handler.codec.http2.Http2Frame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Http2Settings(io.netty.handler.codec.http2.Http2Settings) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Test(org.junit.Test)

Aggregations

EmptyPublisher (software.amazon.awssdk.http.EmptyPublisher)9 Test (org.junit.Test)5 AsyncExecuteRequest (software.amazon.awssdk.http.async.AsyncExecuteRequest)5 SdkAsyncHttpResponseHandler (software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler)5 Publisher (org.reactivestreams.Publisher)4 ByteBuffer (java.nio.ByteBuffer)3 SdkHttpFullRequest (software.amazon.awssdk.http.SdkHttpFullRequest)3 SdkHttpResponse (software.amazon.awssdk.http.SdkHttpResponse)3 ServerBootstrap (io.netty.bootstrap.ServerBootstrap)2 ChannelHandler (io.netty.channel.ChannelHandler)2 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)2 ChannelInboundHandlerAdapter (io.netty.channel.ChannelInboundHandlerAdapter)2 ChannelInitializer (io.netty.channel.ChannelInitializer)2 ChannelOption (io.netty.channel.ChannelOption)2 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)2 ServerSocketChannel (io.netty.channel.socket.ServerSocketChannel)2 SocketChannel (io.netty.channel.socket.SocketChannel)2 NioServerSocketChannel (io.netty.channel.socket.nio.NioServerSocketChannel)2 DefaultHttp2Headers (io.netty.handler.codec.http2.DefaultHttp2Headers)2 DefaultHttp2HeadersFrame (io.netty.handler.codec.http2.DefaultHttp2HeadersFrame)2