Migrate callers to ServerCredentials

This commit is contained in:
Eric Anderson 2020-11-06 16:34:48 -08:00 committed by Eric Anderson
parent ed290cc78a
commit ddd5dea7e9
9 changed files with 64 additions and 58 deletions

View File

@ -19,10 +19,13 @@ package io.grpc.benchmarks;
import static io.grpc.benchmarks.Utils.pickUnusedPort; import static io.grpc.benchmarks.Utils.pickUnusedPort;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import io.grpc.InsecureChannelCredentials;
import io.grpc.InsecureServerCredentials;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder; import io.grpc.ManagedChannelBuilder;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
import io.grpc.ServerCredentials;
import io.grpc.Status; import io.grpc.Status;
import io.grpc.StatusRuntimeException; import io.grpc.StatusRuntimeException;
import io.grpc.benchmarks.proto.BenchmarkServiceGrpc; import io.grpc.benchmarks.proto.BenchmarkServiceGrpc;
@ -80,6 +83,7 @@ public class TransportBenchmark {
@Setup @Setup
public void setUp() throws Exception { public void setUp() throws Exception {
ServerCredentials serverCreds = InsecureServerCredentials.create();
ServerBuilder<?> serverBuilder; ServerBuilder<?> serverBuilder;
ManagedChannelBuilder<?> channelBuilder; ManagedChannelBuilder<?> channelBuilder;
switch (transport) { switch (transport) {
@ -93,7 +97,7 @@ public class TransportBenchmark {
case NETTY: case NETTY:
{ {
InetSocketAddress address = new InetSocketAddress("localhost", pickUnusedPort()); InetSocketAddress address = new InetSocketAddress("localhost", pickUnusedPort());
serverBuilder = NettyServerBuilder.forAddress(address); serverBuilder = NettyServerBuilder.forAddress(address, serverCreds);
channelBuilder = NettyChannelBuilder.forAddress(address) channelBuilder = NettyChannelBuilder.forAddress(address)
.negotiationType(NegotiationType.PLAINTEXT); .negotiationType(NegotiationType.PLAINTEXT);
break; break;
@ -103,7 +107,7 @@ public class TransportBenchmark {
String name = "bench" + Math.random(); String name = "bench" + Math.random();
LocalAddress address = new LocalAddress(name); LocalAddress address = new LocalAddress(name);
EventLoopGroup group = new DefaultEventLoopGroup(); EventLoopGroup group = new DefaultEventLoopGroup();
serverBuilder = NettyServerBuilder.forAddress(address) serverBuilder = NettyServerBuilder.forAddress(address, serverCreds)
.bossEventLoopGroup(group) .bossEventLoopGroup(group)
.workerEventLoopGroup(group) .workerEventLoopGroup(group)
.channelType(LocalServerChannel.class); .channelType(LocalServerChannel.class);
@ -125,7 +129,7 @@ public class TransportBenchmark {
Class<? extends ServerChannel> serverChannelClass = Class<? extends ServerChannel> serverChannelClass =
Class.forName("io.netty.channel.epoll.EpollServerSocketChannel") Class.forName("io.netty.channel.epoll.EpollServerSocketChannel")
.asSubclass(ServerChannel.class); .asSubclass(ServerChannel.class);
serverBuilder = NettyServerBuilder.forAddress(address) serverBuilder = NettyServerBuilder.forAddress(address, serverCreds)
.bossEventLoopGroup(group) .bossEventLoopGroup(group)
.workerEventLoopGroup(group) .workerEventLoopGroup(group)
.channelType(serverChannelClass); .channelType(serverChannelClass);
@ -143,8 +147,9 @@ public class TransportBenchmark {
{ {
int port = pickUnusedPort(); int port = pickUnusedPort();
InetSocketAddress address = new InetSocketAddress("localhost", port); InetSocketAddress address = new InetSocketAddress("localhost", port);
serverBuilder = NettyServerBuilder.forAddress(address); serverBuilder = NettyServerBuilder.forAddress(address, serverCreds);
channelBuilder = OkHttpChannelBuilder.forAddress("localhost", port).usePlaintext(); channelBuilder = OkHttpChannelBuilder
.forAddress("localhost", port, InsecureChannelCredentials.create());
break; break;
} }
default: default:

View File

@ -18,6 +18,7 @@ package io.grpc.benchmarks.netty;
import io.grpc.CallOptions; import io.grpc.CallOptions;
import io.grpc.ClientCall; import io.grpc.ClientCall;
import io.grpc.InsecureServerCredentials;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.Metadata; import io.grpc.Metadata;
import io.grpc.MethodDescriptor; import io.grpc.MethodDescriptor;
@ -25,6 +26,7 @@ import io.grpc.MethodDescriptor.MethodType;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.ServerCall; import io.grpc.ServerCall;
import io.grpc.ServerCallHandler; import io.grpc.ServerCallHandler;
import io.grpc.ServerCredentials;
import io.grpc.ServerServiceDefinition; import io.grpc.ServerServiceDefinition;
import io.grpc.ServiceDescriptor; import io.grpc.ServiceDescriptor;
import io.grpc.Status; import io.grpc.Status;
@ -195,11 +197,12 @@ public abstract class AbstractBenchmark {
ChannelType channelType, ChannelType channelType,
int maxConcurrentStreams, int maxConcurrentStreams,
int channelCount) throws Exception { int channelCount) throws Exception {
ServerCredentials serverCreds = InsecureServerCredentials.create();
NettyServerBuilder serverBuilder; NettyServerBuilder serverBuilder;
NettyChannelBuilder channelBuilder; NettyChannelBuilder channelBuilder;
if (channelType == ChannelType.LOCAL) { if (channelType == ChannelType.LOCAL) {
LocalAddress address = new LocalAddress("netty-e2e-benchmark"); LocalAddress address = new LocalAddress("netty-e2e-benchmark");
serverBuilder = NettyServerBuilder.forAddress(address); serverBuilder = NettyServerBuilder.forAddress(address, serverCreds);
serverBuilder.channelType(LocalServerChannel.class); serverBuilder.channelType(LocalServerChannel.class);
channelBuilder = NettyChannelBuilder.forAddress(address); channelBuilder = NettyChannelBuilder.forAddress(address);
channelBuilder.channelType(LocalChannel.class); channelBuilder.channelType(LocalChannel.class);
@ -209,8 +212,8 @@ public abstract class AbstractBenchmark {
sock.bind(new InetSocketAddress(BENCHMARK_ADDR, 0)); sock.bind(new InetSocketAddress(BENCHMARK_ADDR, 0));
SocketAddress address = sock.getLocalSocketAddress(); SocketAddress address = sock.getLocalSocketAddress();
sock.close(); sock.close();
serverBuilder = serverBuilder = NettyServerBuilder.forAddress(address, serverCreds)
NettyServerBuilder.forAddress(address).channelType(NioServerSocketChannel.class); .channelType(NioServerSocketChannel.class);
channelBuilder = NettyChannelBuilder.forAddress(address).channelType(NioSocketChannel.class); channelBuilder = NettyChannelBuilder.forAddress(address).channelType(NioSocketChannel.class);
} }

View File

@ -17,6 +17,7 @@
package io.grpc.benchmarks.driver; package io.grpc.benchmarks.driver;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import io.grpc.InsecureServerCredentials;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.Status; import io.grpc.Status;
import io.grpc.benchmarks.proto.Control; import io.grpc.benchmarks.proto.Control;
@ -49,7 +50,7 @@ public class LoadWorker {
.setDaemon(true) .setDaemon(true)
.setNameFormat("load-worker-%d") .setNameFormat("load-worker-%d")
.build()); .build());
this.driverServer = NettyServerBuilder.forPort(driverPort) this.driverServer = NettyServerBuilder.forPort(driverPort, InsecureServerCredentials.create())
.directExecutor() .directExecutor()
.channelType(NioServerSocketChannel.class) .channelType(NioServerSocketChannel.class)
.workerEventLoopGroup(singleThreadGroup) .workerEventLoopGroup(singleThreadGroup)

View File

@ -18,13 +18,14 @@ package io.grpc.testing.integration;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import io.grpc.Grpc;
import io.grpc.InsecureServerCredentials;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.ServerCredentials;
import io.grpc.ServerInterceptors; import io.grpc.ServerInterceptors;
import io.grpc.alts.AltsServerBuilder; import io.grpc.TlsServerCredentials;
import io.grpc.alts.AltsServerCredentials;
import io.grpc.internal.testing.TestUtils; import io.grpc.internal.testing.TestUtils;
import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.NettyServerBuilder;
import io.netty.handler.ssl.SslContext;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -129,25 +130,16 @@ public class TestServiceServer {
@VisibleForTesting @VisibleForTesting
void start() throws Exception { void start() throws Exception {
executor = Executors.newSingleThreadScheduledExecutor(); executor = Executors.newSingleThreadScheduledExecutor();
SslContext sslContext = null; ServerCredentials serverCreds;
if (useAlts) { if (useAlts) {
server = serverCreds = AltsServerCredentials.create();
AltsServerBuilder.forPort(port) } else if (useTls) {
.addService( serverCreds = TlsServerCredentials.create(
ServerInterceptors.intercept( TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key"));
new TestServiceImpl(executor), TestServiceImpl.interceptors()))
.build()
.start();
} else { } else {
if (useTls) { serverCreds = InsecureServerCredentials.create();
sslContext =
GrpcSslContexts.forServer(
TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key"))
.build();
} }
server = server = Grpc.newServerBuilderForPort(port, serverCreds)
NettyServerBuilder.forPort(port)
.sslContext(sslContext)
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE) .maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE)
.addService( .addService(
ServerInterceptors.intercept( ServerInterceptors.intercept(
@ -155,7 +147,6 @@ public class TestServiceServer {
.build() .build()
.start(); .start();
} }
}
@VisibleForTesting @VisibleForTesting
void stop() throws Exception { void stop() throws Exception {

View File

@ -16,6 +16,7 @@
package io.grpc.testing.integration; package io.grpc.testing.integration;
import io.grpc.InsecureServerCredentials;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
import io.grpc.netty.InternalNettyChannelBuilder; import io.grpc.netty.InternalNettyChannelBuilder;
import io.grpc.netty.InternalNettyServerBuilder; import io.grpc.netty.InternalNettyServerBuilder;
@ -30,7 +31,7 @@ public class AutoWindowSizingOnTest extends AbstractInteropTest {
@Override @Override
protected ServerBuilder<?> getServerBuilder() { protected ServerBuilder<?> getServerBuilder() {
NettyServerBuilder builder = NettyServerBuilder.forPort(0) NettyServerBuilder builder = NettyServerBuilder.forPort(0, InsecureServerCredentials.create())
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE); .maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE);
// Disable the default census stats tracer, use testing tracer instead. // Disable the default census stats tracer, use testing tracer instead.
InternalNettyServerBuilder.setStatsEnabled(builder, false); InternalNettyServerBuilder.setStatsEnabled(builder, false);

View File

@ -18,19 +18,20 @@ package io.grpc.testing.integration;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import io.grpc.ChannelCredentials;
import io.grpc.Grpc;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.Server; import io.grpc.Server;
import io.grpc.ServerCredentials;
import io.grpc.internal.testing.TestUtils; import io.grpc.internal.testing.TestUtils;
import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.NegotiationType; import io.grpc.netty.NettySslContextChannelCredentials;
import io.grpc.netty.NettyChannelBuilder; import io.grpc.netty.NettySslContextServerCredentials;
import io.grpc.netty.NettyServerBuilder;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
import io.grpc.testing.integration.Messages.ResponseParameters; import io.grpc.testing.integration.Messages.ResponseParameters;
import io.grpc.testing.integration.Messages.StreamingOutputCallRequest; import io.grpc.testing.integration.Messages.StreamingOutputCallRequest;
import io.grpc.testing.integration.Messages.StreamingOutputCallResponse; import io.grpc.testing.integration.Messages.StreamingOutputCallResponse;
import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.SslContext;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
@ -191,14 +192,13 @@ public class ConcurrencyTest {
TestUtils.loadX509Cert("ca.pem") TestUtils.loadX509Cert("ca.pem")
}; };
SslContext sslContext = ServerCredentials serverCreds = NettySslContextServerCredentials.create(
GrpcSslContexts.forServer(serverCertChainFile, serverPrivateKeyFile) GrpcSslContexts.forServer(serverCertChainFile, serverPrivateKeyFile)
.trustManager(serverTrustedCaCerts) .trustManager(serverTrustedCaCerts)
.clientAuth(ClientAuth.REQUIRE) .clientAuth(ClientAuth.REQUIRE)
.build(); .build());
return NettyServerBuilder.forPort(0) return Grpc.newServerBuilderForPort(0, serverCreds)
.sslContext(sslContext)
.addService(new TestServiceImpl(serverExecutor)) .addService(new TestServiceImpl(serverExecutor))
.build() .build()
.start(); .start();
@ -211,16 +211,14 @@ public class ConcurrencyTest {
TestUtils.loadX509Cert("ca.pem") TestUtils.loadX509Cert("ca.pem")
}; };
SslContext sslContext = ChannelCredentials channelCreds = NettySslContextChannelCredentials.create(
GrpcSslContexts.forClient() GrpcSslContexts.forClient()
.keyManager(clientCertChainFile, clientPrivateKeyFile) .keyManager(clientCertChainFile, clientPrivateKeyFile)
.trustManager(clientTrustedCaCerts) .trustManager(clientTrustedCaCerts)
.build(); .build());
return NettyChannelBuilder.forAddress("localhost", server.getPort()) return Grpc.newChannelBuilder("localhost:" + server.getPort(), channelCreds)
.overrideAuthority(TestUtils.TEST_SERVER_HOST) .overrideAuthority(TestUtils.TEST_SERVER_HOST)
.negotiationType(NegotiationType.TLS)
.sslContext(sslContext)
.build(); .build();
} }
} }

View File

@ -20,12 +20,14 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotEquals;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
import io.grpc.ServerCredentials;
import io.grpc.internal.testing.TestUtils; import io.grpc.internal.testing.TestUtils;
import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.InternalNettyChannelBuilder; import io.grpc.netty.InternalNettyChannelBuilder;
import io.grpc.netty.InternalNettyServerBuilder; import io.grpc.netty.InternalNettyServerBuilder;
import io.grpc.netty.NettyChannelBuilder; import io.grpc.netty.NettyChannelBuilder;
import io.grpc.netty.NettyServerBuilder; import io.grpc.netty.NettyServerBuilder;
import io.grpc.netty.NettySslContextServerCredentials;
import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.ClientAuth;
import io.netty.handler.ssl.SupportedCipherSuiteFilter; import io.netty.handler.ssl.SupportedCipherSuiteFilter;
import java.io.IOException; import java.io.IOException;
@ -45,15 +47,16 @@ public class Http2NettyTest extends AbstractInteropTest {
protected ServerBuilder<?> getServerBuilder() { protected ServerBuilder<?> getServerBuilder() {
// Starts the server with HTTPS. // Starts the server with HTTPS.
try { try {
NettyServerBuilder builder = NettyServerBuilder.forPort(0) ServerCredentials serverCreds = NettySslContextServerCredentials.create(
.flowControlWindow(AbstractInteropTest.TEST_FLOW_CONTROL_WINDOW) GrpcSslContexts
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE)
.sslContext(GrpcSslContexts
.forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key")) .forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key"))
.clientAuth(ClientAuth.REQUIRE) .clientAuth(ClientAuth.REQUIRE)
.trustManager(TestUtils.loadCert("ca.pem")) .trustManager(TestUtils.loadCert("ca.pem"))
.ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE) .ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE)
.build()); .build());
NettyServerBuilder builder = NettyServerBuilder.forPort(0, serverCreds)
.flowControlWindow(AbstractInteropTest.TEST_FLOW_CONTROL_WINDOW)
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE);
// Disable the default census stats tracer, use testing tracer instead. // Disable the default census stats tracer, use testing tracer instead.
InternalNettyServerBuilder.setStatsEnabled(builder, false); InternalNettyServerBuilder.setStatsEnabled(builder, false);
return builder.addStreamTracerFactory(createCustomCensusTracerFactory()); return builder.addStreamTracerFactory(createCustomCensusTracerFactory());

View File

@ -24,12 +24,14 @@ import com.google.common.base.Throwables;
import com.squareup.okhttp.ConnectionSpec; import com.squareup.okhttp.ConnectionSpec;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
import io.grpc.ServerCredentials;
import io.grpc.internal.GrpcUtil; import io.grpc.internal.GrpcUtil;
import io.grpc.internal.testing.StreamRecorder; import io.grpc.internal.testing.StreamRecorder;
import io.grpc.internal.testing.TestUtils; import io.grpc.internal.testing.TestUtils;
import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.GrpcSslContexts;
import io.grpc.netty.InternalNettyServerBuilder; import io.grpc.netty.InternalNettyServerBuilder;
import io.grpc.netty.NettyServerBuilder; import io.grpc.netty.NettyServerBuilder;
import io.grpc.netty.NettySslContextServerCredentials;
import io.grpc.okhttp.InternalOkHttpChannelBuilder; import io.grpc.okhttp.InternalOkHttpChannelBuilder;
import io.grpc.okhttp.OkHttpChannelBuilder; import io.grpc.okhttp.OkHttpChannelBuilder;
import io.grpc.okhttp.internal.Platform; import io.grpc.okhttp.internal.Platform;
@ -78,10 +80,11 @@ public class Http2OkHttpTest extends AbstractInteropTest {
.forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key")); .forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key"));
GrpcSslContexts.configure(contextBuilder, sslProvider); GrpcSslContexts.configure(contextBuilder, sslProvider);
contextBuilder.ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE); contextBuilder.ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE);
NettyServerBuilder builder = NettyServerBuilder.forPort(0) ServerCredentials serverCreds =
NettySslContextServerCredentials.create(contextBuilder.build());
NettyServerBuilder builder = NettyServerBuilder.forPort(0, serverCreds)
.flowControlWindow(AbstractInteropTest.TEST_FLOW_CONTROL_WINDOW) .flowControlWindow(AbstractInteropTest.TEST_FLOW_CONTROL_WINDOW)
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE) .maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE);
.sslContext(contextBuilder.build());
// Disable the default census stats tracer, use testing tracer instead. // Disable the default census stats tracer, use testing tracer instead.
InternalNettyServerBuilder.setStatsEnabled(builder, false); InternalNettyServerBuilder.setStatsEnabled(builder, false);
return builder.addStreamTracerFactory(createCustomCensusTracerFactory()); return builder.addStreamTracerFactory(createCustomCensusTracerFactory());

View File

@ -29,6 +29,7 @@ import io.grpc.CompressorRegistry;
import io.grpc.DecompressorRegistry; import io.grpc.DecompressorRegistry;
import io.grpc.ForwardingClientCall; import io.grpc.ForwardingClientCall;
import io.grpc.ForwardingClientCallListener; import io.grpc.ForwardingClientCallListener;
import io.grpc.InsecureServerCredentials;
import io.grpc.Metadata; import io.grpc.Metadata;
import io.grpc.MethodDescriptor; import io.grpc.MethodDescriptor;
import io.grpc.ServerBuilder; import io.grpc.ServerBuilder;
@ -85,7 +86,7 @@ public class TransportCompressionTest extends AbstractInteropTest {
@Override @Override
protected ServerBuilder<?> getServerBuilder() { protected ServerBuilder<?> getServerBuilder() {
NettyServerBuilder builder = NettyServerBuilder.forPort(0) NettyServerBuilder builder = NettyServerBuilder.forPort(0, InsecureServerCredentials.create())
.maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE) .maxInboundMessageSize(AbstractInteropTest.MAX_MESSAGE_SIZE)
.compressorRegistry(compressors) .compressorRegistry(compressors)
.decompressorRegistry(decompressors) .decompressorRegistry(decompressors)