Search in sources :

Example 1 with GrpcServerBuilder

use of io.servicetalk.grpc.api.GrpcServerBuilder in project servicetalk by apple.

the class ExecutionStrategyTest method setUp.

private void setUp(ContextExecutionStrategy contextStrategy, RouteExecutionStrategy routeStrategy, RouteApi routeApi) throws Exception {
    this.contextStrategy = contextStrategy;
    this.routeStrategy = routeStrategy;
    this.routeApi = routeApi;
    GrpcServerBuilder builder = GrpcServers.forAddress(localAddress(0));
    contextStrategy.configureContextExecutionStrategy(builder);
    ServiceFactory serviceFactory = routeStrategy.getServiceFactory();
    serverContext = builder.listenAndAwait(serviceFactory);
    client = GrpcClients.forAddress(serverHostAndPort(serverContext)).initializeHttp(b -> b.executionStrategy(HttpExecutionStrategies.offloadNever())).buildBlocking(new ClientFactory());
}
Also used : GrpcServerBuilder(io.servicetalk.grpc.api.GrpcServerBuilder) ServiceFactory(io.servicetalk.grpc.netty.TesterProto.Tester.ServiceFactory) ClientFactory(io.servicetalk.grpc.netty.TesterProto.Tester.ClientFactory)

Example 2 with GrpcServerBuilder

use of io.servicetalk.grpc.api.GrpcServerBuilder in project servicetalk by apple.

the class KeepAliveTest method setUp.

private void setUp(final boolean keepAlivesFromClient, final Duration keepAliveIdleFor, final Duration idleTimeout) throws Exception {
    this.idleTimeoutMillis = idleTimeout.toMillis();
    GrpcServerBuilder serverBuilder = forAddress(localAddress(0)).initializeHttp(builder -> {
        builder.executor(SERVER_CTX.executor()).ioExecutor(SERVER_CTX.ioExecutor()).executionStrategy(defaultStrategy());
        if (!keepAlivesFromClient) {
            builder.protocols(h2Config(keepAliveIdleFor));
        } else {
            builder.socketOption(IDLE_TIMEOUT, idleTimeoutMillis).protocols(h2Config(null));
        }
    });
    ctx = serverBuilder.listenAndAwait(new ServiceFactory(new InfiniteStreamsService()));
    GrpcClientBuilder<HostAndPort, InetSocketAddress> clientBuilder = GrpcClients.forAddress(serverHostAndPort(ctx)).initializeHttp(builder -> builder.executor(CLIENT_CTX.executor()).ioExecutor(CLIENT_CTX.ioExecutor()).executionStrategy(defaultStrategy()));
    if (keepAlivesFromClient) {
        clientBuilder.initializeHttp(builder -> builder.protocols(h2Config(keepAliveIdleFor)));
    } else {
        clientBuilder.initializeHttp(builder -> builder.socketOption(IDLE_TIMEOUT, idleTimeoutMillis).protocols(h2Config(null)));
    }
    client = clientBuilder.build(new ClientFactory());
}
Also used : GrpcServerBuilder(io.servicetalk.grpc.api.GrpcServerBuilder) AddressUtils.serverHostAndPort(io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort) HostAndPort(io.servicetalk.transport.api.HostAndPort) ServiceFactory(io.servicetalk.grpc.netty.TesterProto.Tester.ServiceFactory) InetSocketAddress(java.net.InetSocketAddress) ClientFactory(io.servicetalk.grpc.netty.TesterProto.Tester.ClientFactory)

Example 3 with GrpcServerBuilder

use of io.servicetalk.grpc.api.GrpcServerBuilder in project servicetalk by apple.

the class TrailersOnlyErrorTest method testServiceFilterThrows.

@Test
void testServiceFilterThrows() throws Exception {
    final BlockingQueue<Throwable> asyncErrors = new LinkedBlockingDeque<>();
    final TesterService service = mockTesterService();
    final GrpcServerBuilder serverBuilder = GrpcServers.forAddress(localAddress(0)).initializeHttp(builder -> builder.appendServiceFilter(svc -> new StreamingHttpServiceFilter(svc) {

        @Override
        public Single<StreamingHttpResponse> handle(final HttpServiceContext ctx, final StreamingHttpRequest request, final StreamingHttpResponseFactory responseFactory) {
            throw DELIBERATE_EXCEPTION;
        }
    }));
    try (ServerContext serverContext = serverBuilder.listenAndAwait(new Tester.ServiceFactory(service))) {
        final GrpcClientBuilder<HostAndPort, InetSocketAddress> clientBuilder = GrpcClients.forAddress(serverHostAndPort(serverContext)).initializeHttp(builder -> builder.appendClientFilter(__ -> true, setupResponseVerifierFilter(asyncErrors)));
        try (TesterClient client = clientBuilder.build(new Tester.ClientFactory())) {
            verifyException(client.test(TestRequest.newBuilder().build()).toFuture(), UNKNOWN);
            assertNoAsyncErrors(asyncErrors);
            verifyException(client.testRequestStream(Publisher.from(TestRequest.newBuilder().build())).toFuture(), UNKNOWN);
            assertNoAsyncErrors(asyncErrors);
            verifyException(client.testResponseStream(TestRequest.newBuilder().build()).toFuture(), UNKNOWN);
            assertNoAsyncErrors(asyncErrors);
            verifyException(client.testBiDiStream(from(TestRequest.newBuilder().build()).concat(never())).toFuture(), UNKNOWN);
            assertNoAsyncErrors(asyncErrors);
            verifyException(client.testBiDiStream(from(TestRequest.newBuilder().build())).toFuture(), UNKNOWN);
            assertNoAsyncErrors(asyncErrors);
        }
    }
}
Also used : GrpcServerBuilder(io.servicetalk.grpc.api.GrpcServerBuilder) TestUtils.assertNoAsyncErrors(io.servicetalk.test.resources.TestUtils.assertNoAsyncErrors) FilterableStreamingHttpClient(io.servicetalk.http.api.FilterableStreamingHttpClient) UNKNOWN(io.servicetalk.grpc.api.GrpcStatusCode.UNKNOWN) GrpcStatusCode(io.servicetalk.grpc.api.GrpcStatusCode) HelloRequest(io.grpc.examples.helloworld.HelloRequest) HttpResponseMetaData(io.servicetalk.http.api.HttpResponseMetaData) GreeterClient(io.grpc.examples.helloworld.Greeter.GreeterClient) GrpcStatusException(io.servicetalk.grpc.api.GrpcStatusException) Future(java.util.concurrent.Future) UNIMPLEMENTED(io.servicetalk.grpc.api.GrpcStatusCode.UNIMPLEMENTED) TesterClient(io.servicetalk.grpc.netty.TesterProto.Tester.TesterClient) Greeter(io.grpc.examples.helloworld.Greeter) Matchers.notNullValue(org.hamcrest.Matchers.notNullValue) BlockingQueue(java.util.concurrent.BlockingQueue) StreamingHttpClientFilter(io.servicetalk.http.api.StreamingHttpClientFilter) InetSocketAddress(java.net.InetSocketAddress) Test(org.junit.jupiter.api.Test) Matchers.equalTo(org.hamcrest.Matchers.equalTo) GrpcClientBuilder(io.servicetalk.grpc.api.GrpcClientBuilder) Mockito.mock(org.mockito.Mockito.mock) Publisher.never(io.servicetalk.concurrent.api.Publisher.never) Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) StreamingHttpResponse(io.servicetalk.http.api.StreamingHttpResponse) Publisher(io.servicetalk.concurrent.api.Publisher) StreamingHttpRequester(io.servicetalk.http.api.StreamingHttpRequester) StreamingHttpServiceFilter(io.servicetalk.http.api.StreamingHttpServiceFilter) HttpServiceContext(io.servicetalk.http.api.HttpServiceContext) GrpcServerBuilder(io.servicetalk.grpc.api.GrpcServerBuilder) StreamingHttpRequest(io.servicetalk.http.api.StreamingHttpRequest) AddressUtils.serverHostAndPort(io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Publisher.from(io.servicetalk.concurrent.api.Publisher.from) DELIBERATE_EXCEPTION(io.servicetalk.concurrent.internal.DeliberateException.DELIBERATE_EXCEPTION) AddressUtils.localAddress(io.servicetalk.transport.netty.internal.AddressUtils.localAddress) ServerContext(io.servicetalk.transport.api.ServerContext) Single(io.servicetalk.concurrent.api.Single) TesterService(io.servicetalk.grpc.netty.TesterProto.Tester.TesterService) TestRequest(io.servicetalk.grpc.netty.TesterProto.TestRequest) Mockito.when(org.mockito.Mockito.when) ExecutionException(java.util.concurrent.ExecutionException) GRPC_STATUS(io.servicetalk.grpc.api.GrpcHeaderNames.GRPC_STATUS) Completable.completed(io.servicetalk.concurrent.api.Completable.completed) StreamingHttpResponseFactory(io.servicetalk.http.api.StreamingHttpResponseFactory) LinkedBlockingDeque(java.util.concurrent.LinkedBlockingDeque) StreamingHttpClientFilterFactory(io.servicetalk.http.api.StreamingHttpClientFilterFactory) Tester(io.servicetalk.grpc.netty.TesterProto.Tester) HostAndPort(io.servicetalk.transport.api.HostAndPort) LinkedBlockingDeque(java.util.concurrent.LinkedBlockingDeque) Tester(io.servicetalk.grpc.netty.TesterProto.Tester) InetSocketAddress(java.net.InetSocketAddress) StreamingHttpResponseFactory(io.servicetalk.http.api.StreamingHttpResponseFactory) TesterService(io.servicetalk.grpc.netty.TesterProto.Tester.TesterService) AddressUtils.serverHostAndPort(io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort) HostAndPort(io.servicetalk.transport.api.HostAndPort) StreamingHttpServiceFilter(io.servicetalk.http.api.StreamingHttpServiceFilter) TesterClient(io.servicetalk.grpc.netty.TesterProto.Tester.TesterClient) ServerContext(io.servicetalk.transport.api.ServerContext) HttpServiceContext(io.servicetalk.http.api.HttpServiceContext) StreamingHttpRequest(io.servicetalk.http.api.StreamingHttpRequest) StreamingHttpResponse(io.servicetalk.http.api.StreamingHttpResponse) Test(org.junit.jupiter.api.Test)

Aggregations

GrpcServerBuilder (io.servicetalk.grpc.api.GrpcServerBuilder)3 ClientFactory (io.servicetalk.grpc.netty.TesterProto.Tester.ClientFactory)2 ServiceFactory (io.servicetalk.grpc.netty.TesterProto.Tester.ServiceFactory)2 HostAndPort (io.servicetalk.transport.api.HostAndPort)2 AddressUtils.serverHostAndPort (io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort)2 InetSocketAddress (java.net.InetSocketAddress)2 Greeter (io.grpc.examples.helloworld.Greeter)1 GreeterClient (io.grpc.examples.helloworld.Greeter.GreeterClient)1 HelloRequest (io.grpc.examples.helloworld.HelloRequest)1 Completable.completed (io.servicetalk.concurrent.api.Completable.completed)1 Publisher (io.servicetalk.concurrent.api.Publisher)1 Publisher.from (io.servicetalk.concurrent.api.Publisher.from)1 Publisher.never (io.servicetalk.concurrent.api.Publisher.never)1 Single (io.servicetalk.concurrent.api.Single)1 DELIBERATE_EXCEPTION (io.servicetalk.concurrent.internal.DeliberateException.DELIBERATE_EXCEPTION)1 GrpcClientBuilder (io.servicetalk.grpc.api.GrpcClientBuilder)1 GRPC_STATUS (io.servicetalk.grpc.api.GrpcHeaderNames.GRPC_STATUS)1 GrpcStatusCode (io.servicetalk.grpc.api.GrpcStatusCode)1 UNIMPLEMENTED (io.servicetalk.grpc.api.GrpcStatusCode.UNIMPLEMENTED)1 UNKNOWN (io.servicetalk.grpc.api.GrpcStatusCode.UNKNOWN)1