Class GrpcServerRule

java.lang.Object
org.junit.rules.ExternalResource
io.grpc.testing.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().

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private io.grpc.ManagedChannel
     
    private io.grpc.Server
     
    private String
     
    private io.grpc.util.MutableHandlerRegistry
     
    private boolean
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    After the test has completed, clean up the channel and server.
    protected void
    Before the test has started, create the server and channel.
    Returns this configured to use a direct executor for the ManagedChannel and Server.
    final io.grpc.ManagedChannel
    Returns a ManagedChannel connected to this service.
    final io.grpc.Server
    Returns the underlying gRPC Server for this service.
    final String
    Returns the randomly generated server name for this service.
    final io.grpc.util.MutableHandlerRegistry
    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 Details

    • channel

      private io.grpc.ManagedChannel channel
    • server

      private io.grpc.Server server
    • serverName

      private String serverName
    • serviceRegistry

      private io.grpc.util.MutableHandlerRegistry serviceRegistry
    • useDirectExecutor

      private boolean useDirectExecutor
  • Constructor Details

    • GrpcServerRule

      public GrpcServerRule()
  • Method Details

    • 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 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 Throwable
      Before the test has started, create the server and channel.
      Overrides:
      before in class org.junit.rules.ExternalResource
      Throws:
      Throwable