From cfbd7efcf0318a5c5bd4a91578b182a4ee5a0d84 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Thu, 21 Jan 2016 11:50:41 -0800 Subject: [PATCH] Use tcnative for interop unit tests when possible. We are already building a new enough OpenSSL on Travis for both Linux and OS X and Jenkins for Windows. --- interop-testing/build.gradle | 1 + .../testing/integration/Http2OkHttpTest.java | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/interop-testing/build.gradle b/interop-testing/build.gradle index fdc524ac12c..edeff2335cf 100644 --- a/interop-testing/build.gradle +++ b/interop-testing/build.gradle @@ -23,6 +23,7 @@ dependencies { project(':grpc-testing'), libraries.junit, libraries.mockito, + libraries.netty_tcnative, libraries.oauth_client } diff --git a/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java b/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java index 83a0780f256..663dd8eb748 100644 --- a/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java +++ b/interop-testing/src/test/java/io/grpc/testing/integration/Http2OkHttpTest.java @@ -48,6 +48,10 @@ import io.grpc.stub.StreamObserver; import io.grpc.testing.StreamRecorder; import io.grpc.testing.TestUtils; +import io.netty.handler.ssl.OpenSsl; +import io.netty.handler.ssl.SslContext; +import io.netty.handler.ssl.SslContextBuilder; +import io.netty.handler.ssl.SslProvider; import io.netty.handler.ssl.SupportedCipherSuiteFilter; import org.junit.AfterClass; @@ -71,11 +75,18 @@ public class Http2OkHttpTest extends AbstractTransportTest { @BeforeClass public static void startServer() throws Exception { try { + SslProvider sslProvider = SslContext.defaultServerProvider(); + if (sslProvider == SslProvider.OPENSSL && !OpenSsl.isAlpnSupported()) { + // OkHttp only supports Jetty ALPN on OpenJDK. So if OpenSSL doesn't support ALPN, then we + // are forced to use Jetty ALPN for Netty instead of OpenSSL. + sslProvider = SslProvider.JDK; + } + SslContextBuilder contextBuilder = SslContextBuilder + .forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key")); + GrpcSslContexts.configure(contextBuilder, sslProvider); + contextBuilder.ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE); startStaticServer(NettyServerBuilder.forPort(serverPort) - .sslContext(GrpcSslContexts - .forServer(TestUtils.loadCert("server1.pem"), TestUtils.loadCert("server1.key")) - .ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE) - .build())); + .sslContext(contextBuilder.build())); } catch (IOException ex) { throw new RuntimeException(ex); }