diff --git a/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java b/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java index 02601f1105..002ab806b7 100644 --- a/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java +++ b/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceClient.java @@ -216,10 +216,8 @@ public class TestServiceClient { SslContext sslContext = null; if (useTestCa) { try { - String dir = "integration-testing/certs"; - sslContext = SslContext.newClientContext( - new File(dir + "/ca.pem")); - } catch (SSLException ex) { + sslContext = SslContext.newClientContext(Util.loadCert("ca.pem")); + } catch (Exception ex) { throw new RuntimeException(ex); } } diff --git a/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java b/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java index b3f3003e17..52ac9d0662 100644 --- a/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java +++ b/integration-testing/src/main/java/io/grpc/testing/integration/TestServiceServer.java @@ -134,10 +134,8 @@ public class TestServiceServer { executor = Executors.newSingleThreadScheduledExecutor(); SslContext sslContext = null; if (useTls) { - String dir = "integration-testing/certs"; - sslContext = SslContext.newServerContext( - new File(dir + "/server1.pem"), - new File(dir + "/server1.key")); + sslContext = SslContext.newServerContext(Util.loadCert("server1.pem"), + Util.loadCert("server1.key")); } server = NettyServerBuilder.forPort(port) .sslContext(sslContext) diff --git a/integration-testing/src/main/java/io/grpc/testing/integration/Util.java b/integration-testing/src/main/java/io/grpc/testing/integration/Util.java index 82dea3ab47..1b246abcbb 100644 --- a/integration-testing/src/main/java/io/grpc/testing/integration/Util.java +++ b/integration-testing/src/main/java/io/grpc/testing/integration/Util.java @@ -38,7 +38,12 @@ import io.grpc.proto.ProtoUtils; import org.junit.Assert; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.net.ServerSocket; import java.util.List; @@ -54,9 +59,8 @@ public class Util { * Picks an unused port. */ public static int pickUnusedPort() { - ServerSocket serverSocket = null; try { - serverSocket = new ServerSocket(0); + ServerSocket serverSocket = new ServerSocket(0); int port = serverSocket.getLocalPort(); serverSocket.close(); return port; @@ -65,6 +69,29 @@ public class Util { } } + /** + * Load a file from the resources folder. + * + * @param name name of a file in src/main/resources/certs. + */ + public static File loadCert(String name) throws IOException { + InputStream in = Util.class.getResourceAsStream("/certs/" + name); + File tmpFile = File.createTempFile(name, ""); + tmpFile.deleteOnExit(); + + BufferedWriter writer = new BufferedWriter(new FileWriter(tmpFile)); + try { + int b; + while ((b = in.read()) != -1) { + writer.write(b); + } + } finally { + writer.close(); + } + + return tmpFile; + } + public static void assertEquals(MessageLite expected, MessageLite actual) { if (expected == null || actual == null) { Assert.assertEquals(expected, actual); diff --git a/integration-testing/certs/README b/integration-testing/src/main/resources/certs/README similarity index 100% rename from integration-testing/certs/README rename to integration-testing/src/main/resources/certs/README diff --git a/integration-testing/certs/badclient.key b/integration-testing/src/main/resources/certs/badclient.key similarity index 100% rename from integration-testing/certs/badclient.key rename to integration-testing/src/main/resources/certs/badclient.key diff --git a/integration-testing/certs/badclient.pem b/integration-testing/src/main/resources/certs/badclient.pem similarity index 100% rename from integration-testing/certs/badclient.pem rename to integration-testing/src/main/resources/certs/badclient.pem diff --git a/integration-testing/certs/badserver.key b/integration-testing/src/main/resources/certs/badserver.key similarity index 100% rename from integration-testing/certs/badserver.key rename to integration-testing/src/main/resources/certs/badserver.key diff --git a/integration-testing/certs/badserver.pem b/integration-testing/src/main/resources/certs/badserver.pem similarity index 100% rename from integration-testing/certs/badserver.pem rename to integration-testing/src/main/resources/certs/badserver.pem diff --git a/integration-testing/certs/ca-openssl.cnf b/integration-testing/src/main/resources/certs/ca-openssl.cnf similarity index 100% rename from integration-testing/certs/ca-openssl.cnf rename to integration-testing/src/main/resources/certs/ca-openssl.cnf diff --git a/integration-testing/certs/ca.key b/integration-testing/src/main/resources/certs/ca.key similarity index 100% rename from integration-testing/certs/ca.key rename to integration-testing/src/main/resources/certs/ca.key diff --git a/integration-testing/certs/ca.pem b/integration-testing/src/main/resources/certs/ca.pem similarity index 100% rename from integration-testing/certs/ca.pem rename to integration-testing/src/main/resources/certs/ca.pem diff --git a/integration-testing/certs/client.key b/integration-testing/src/main/resources/certs/client.key similarity index 100% rename from integration-testing/certs/client.key rename to integration-testing/src/main/resources/certs/client.key diff --git a/integration-testing/certs/client.pem b/integration-testing/src/main/resources/certs/client.pem similarity index 100% rename from integration-testing/certs/client.pem rename to integration-testing/src/main/resources/certs/client.pem diff --git a/integration-testing/certs/server0.key b/integration-testing/src/main/resources/certs/server0.key similarity index 100% rename from integration-testing/certs/server0.key rename to integration-testing/src/main/resources/certs/server0.key diff --git a/integration-testing/certs/server0.pem b/integration-testing/src/main/resources/certs/server0.pem similarity index 100% rename from integration-testing/certs/server0.pem rename to integration-testing/src/main/resources/certs/server0.pem diff --git a/integration-testing/certs/server1-openssl.cnf b/integration-testing/src/main/resources/certs/server1-openssl.cnf similarity index 100% rename from integration-testing/certs/server1-openssl.cnf rename to integration-testing/src/main/resources/certs/server1-openssl.cnf diff --git a/integration-testing/certs/server1.key b/integration-testing/src/main/resources/certs/server1.key similarity index 100% rename from integration-testing/certs/server1.key rename to integration-testing/src/main/resources/certs/server1.key diff --git a/integration-testing/certs/server1.pem b/integration-testing/src/main/resources/certs/server1.pem similarity index 100% rename from integration-testing/certs/server1.pem rename to integration-testing/src/main/resources/certs/server1.pem