Class InProcessServerBuilder
The server is intended to be fully-featured, high performance, and useful in testing.
Using JUnit TestRule
The class "GrpcServerRule" (from "grpc-java/testing") is a JUnit TestRule that creates aInProcessServer
and a ManagedChannel
. This
test rule contains the boilerplate code shown below. The classes "HelloWorldServerTest" and
"HelloWorldClientTest" (from "grpc-java/examples") demonstrate basic usage.
Usage example
Server and client channel setup
String uniqueName = InProcessServerBuilder.generateName(); Server server = InProcessServerBuilder.forName(uniqueName) .directExecutor() // directExecutor is fine for unit tests .addService(/* your code here */) .build().start(); ManagedChannel channel = InProcessChannelBuilder.forName(uniqueName) .directExecutor() .build();
Usage in tests
The channel can be used normally. A blocking stub example:TestServiceGrpc.TestServiceBlockingStub blockingStub = TestServiceGrpc.newBlockingStub(channel);
-
Method Summary
Modifier and TypeMethodDescriptiondeadlineTicker
(Deadline.Ticker ticker) Provides a custom deadline ticker that this server will use to create incomingDeadline
s.protected ServerBuilder
<?> delegate()
Returns the delegatedServerBuilder
.static InProcessServerBuilder
forAddress
(SocketAddress listenAddress) Create a server builder which listens on the given address.static InProcessServerBuilder
Create a server builder that will bind with the given name.static InProcessServerBuilder
forPort
(int port) Always fails.static String
Generates a new server name that is unique each time.maxInboundMetadataSize
(int bytes) Sets the maximum size of metadata allowed to be received.scheduledExecutorService
(ScheduledExecutorService scheduledExecutorService) Provides a custom scheduled executor service.useTransportSecurity
(File certChain, File privateKey) Makes the server use TLS.Methods inherited from class io.grpc.ForwardingServerBuilder
addService, addService, addStreamTracerFactory, addTransportFilter, build, callExecutor, compressorRegistry, decompressorRegistry, directExecutor, executor, fallbackHandlerRegistry, handshakeTimeout, intercept, keepAliveTime, keepAliveTimeout, maxConnectionAge, maxConnectionAgeGrace, maxConnectionIdle, maxInboundMessageSize, permitKeepAliveTime, permitKeepAliveWithoutCalls, setBinaryLog, toString, useTransportSecurity
Methods inherited from class io.grpc.ServerBuilder
addServices
-
Method Details
-
forName
Create a server builder that will bind with the given name.- Parameters:
name
- the identity of the server for clients to connect to- Returns:
- a new builder
-
forAddress
Create a server builder which listens on the given address.- Parameters:
listenAddress
- The SocketAddress this server will listen on.- Returns:
- a new builder
-
forPort
Always fails. CallforName(java.lang.String)
instead. -
generateName
Generates a new server name that is unique each time. -
delegate
Description copied from class:ForwardingServerBuilder
Returns the delegatedServerBuilder
.- Specified by:
delegate
in classForwardingServerBuilder<InProcessServerBuilder>
-
scheduledExecutorService
public InProcessServerBuilder scheduledExecutorService(ScheduledExecutorService scheduledExecutorService) Provides a custom scheduled executor service.It's an optional parameter. If the user has not provided a scheduled executor service when the channel is built, the builder will use a static cached thread pool.
- Returns:
- this
- Since:
- 1.11.0
-
deadlineTicker
Provides a custom deadline ticker that this server will use to create incomingDeadline
s.This is intended for unit tests that fake out the clock. You should also have a fake
ScheduledExecutorService
whose clock is synchronized with this ticker and set it toscheduledExecutorService(java.util.concurrent.ScheduledExecutorService)
. DO NOT use this in production.- Returns:
- this
- Since:
- 1.24.0
- See Also:
-
maxInboundMetadataSize
Sets the maximum size of metadata allowed to be received.Integer.MAX_VALUE
disables the enforcement. Defaults to no limit (Integer.MAX_VALUE
).There is potential for performance penalty when this setting is enabled, as the Metadata must actually be serialized. Since the current implementation of Metadata pre-serializes, it's currently negligible. But Metadata is free to change its implementation.
- Overrides:
maxInboundMetadataSize
in classForwardingServerBuilder<InProcessServerBuilder>
- Parameters:
bytes
- the maximum size of received metadata- Returns:
- this
- Throws:
IllegalArgumentException
- if bytes is non-positive- Since:
- 1.17.0
-
useTransportSecurity
Description copied from class:ServerBuilder
Makes the server use TLS.- Overrides:
useTransportSecurity
in classForwardingServerBuilder<InProcessServerBuilder>
- Parameters:
certChain
- file containing the full certificate chainprivateKey
- file containing the private key- Returns:
- this
-