Class GrpcServerRule

  • All Implemented Interfaces:
    org.junit.rules.TestRule

    public final class GrpcServerRule
    extends org.junit.rules.ExternalResource
    GrpcServerRule is a JUnit TestRule that starts an in-process gRPC service with a MutableHandlerRegistry for adding services. Prefer GrpcCleanupRule in new code.

    GrpcServerRule is useful for testing gRPC-based clients and services. However, because GrpcServerRule does not support useful features such as transport types other than in-process, multiple channels per server, custom channel or server builder options, and configuration inside individual test methods, users would end up to a difficult situation when later they want to make extensions to their tests that were using GrpcServerRule. Little benefit comes from proactively migrating existing code from GrpcServerRule, but new code is better served by explicit channel and server creation with GrpcCleanupRule managing resource lifetimes.

    An AbstractStub can be created against this service by using the ManagedChannel provided by getChannel().

    • Constructor Summary

      Constructors 
      Constructor Description
      GrpcServerRule()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void after()
      After the test has completed, clean up the channel and server.
      protected void before()
      Before the test has started, create the server and channel.
      GrpcServerRule directExecutor()
      Returns this configured to use a direct executor for the ManagedChannel and Server.
      io.grpc.ManagedChannel getChannel()
      Returns a ManagedChannel connected to this service.
      io.grpc.Server getServer()
      Returns the underlying gRPC Server for this service.
      java.lang.String getServerName()
      Returns the randomly generated server name for this service.
      io.grpc.util.MutableHandlerRegistry getServiceRegistry()
      Returns the service registry for this service.
      • Methods inherited from class org.junit.rules.ExternalResource

        apply
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • channel

        private io.grpc.ManagedChannel channel
      • server

        private io.grpc.Server server
      • serverName

        private java.lang.String serverName
      • serviceRegistry

        private io.grpc.util.MutableHandlerRegistry serviceRegistry
      • useDirectExecutor

        private boolean useDirectExecutor
    • Constructor Detail

      • GrpcServerRule

        public GrpcServerRule()
    • Method Detail

      • directExecutor

        public final GrpcServerRule directExecutor()
        Returns this configured to use a direct executor for the ManagedChannel and Server. This can only be called at the rule instantiation.
      • getChannel

        public final io.grpc.ManagedChannel getChannel()
        Returns a ManagedChannel connected to this service.
      • getServer

        public final io.grpc.Server getServer()
        Returns the underlying gRPC Server for this service.
      • getServerName

        public final java.lang.String getServerName()
        Returns the randomly generated server name for this service.
      • getServiceRegistry

        public final io.grpc.util.MutableHandlerRegistry getServiceRegistry()
        Returns the service registry for this service. The registry is used to add service instances (e.g. BindableService or ServerServiceDefinition to the server.
      • after

        protected void after()
        After the test has completed, clean up the channel and server.
        Overrides:
        after in class org.junit.rules.ExternalResource
      • before

        protected void before()
                       throws java.lang.Throwable
        Before the test has started, create the server and channel.
        Overrides:
        before in class org.junit.rules.ExternalResource
        Throws:
        java.lang.Throwable