From 7e8e8b4153060c4d868bf21f42fa25f89fd58585 Mon Sep 17 00:00:00 2001 From: Eric Charles Date: Sun, 10 Dec 2017 09:19:07 +0100 Subject: [PATCH 1/3] Add jetty deps --- resource-managers/kubernetes/core/pom.xml | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/resource-managers/kubernetes/core/pom.xml b/resource-managers/kubernetes/core/pom.xml index f9711d8c81b4b..1ef1903f7ff41 100644 --- a/resource-managers/kubernetes/core/pom.xml +++ b/resource-managers/kubernetes/core/pom.xml @@ -47,6 +47,64 @@ test + + + org.eclipse.jetty + jetty-plus + compile + + + org.eclipse.jetty + jetty-security + compile + + + org.eclipse.jetty + jetty-util + compile + + + org.eclipse.jetty + jetty-server + compile + + + org.eclipse.jetty + jetty-http + compile + + + org.eclipse.jetty + jetty-continuation + compile + + + org.eclipse.jetty + jetty-servlet + compile + + + org.eclipse.jetty + jetty-proxy + compile + + + org.eclipse.jetty + jetty-client + compile + + + org.eclipse.jetty + jetty-servlets + compile + + + javax.servlet + javax.servlet-api + ${javaxservlet.version} + + io.fabric8 kubernetes-client From d3bdf0c955b5566fb12fc967fcc8bb0760d01b83 Mon Sep 17 00:00:00 2001 From: Eric Charles Date: Sun, 10 Dec 2017 09:20:09 +0100 Subject: [PATCH 2/3] disable ssl test for staging server if current classpath contains the jetty shaded classes --- .../rest/k8s/ResourceStagingServerSuite.scala | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala index 4e6b4abfb6874..5e7b3c76e15e0 100644 --- a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala +++ b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala @@ -75,22 +75,43 @@ class ResourceStagingServerSuite extends SparkFunSuite with BeforeAndAfter with runUploadAndDownload(SSLOptions(), serverPort) } + /** + * This test will run only if the current classpath does not contain + * the shaded jetty classes. + * + * If you rely on the spark-core.jar in your classpath, this test will not run. + * + * If you rely on the spark-core module (without shading), this test will be run. + * + * @see https://github.com/apache-spark-on-k8s/spark/issues/463 + * + */ test("Enable SSL on the server") { - val keyStoreAndTrustStore = SSLUtils.generateKeyStoreTrustStorePair( - ipAddress = "127.0.0.1", - keyStorePassword = "keyStore", - keyPassword = "key", - trustStorePassword = "trustStore") - val sslOptions = SSLOptions( - enabled = true, - keyStore = Some(keyStoreAndTrustStore.keyStore), - keyStorePassword = Some("keyStore"), - keyPassword = Some("key"), - trustStore = Some(keyStoreAndTrustStore.trustStore), - trustStorePassword = Some("trustStore")) - sslOptionsProvider.setOptions(sslOptions) - val serverPort = startServer() - runUploadAndDownload(sslOptions, serverPort) + + def testEnableSslOnServer(): Unit = { + val keyStoreAndTrustStore = SSLUtils.generateKeyStoreTrustStorePair( + ipAddress = "127.0.0.1", + keyStorePassword = "keyStore", + keyPassword = "key", + trustStorePassword = "trustStore") + val sslOptions = SSLOptions( + enabled = true, + keyStore = Some(keyStoreAndTrustStore.keyStore), + keyStorePassword = Some("keyStore"), + keyPassword = Some("key"), + trustStore = Some(keyStoreAndTrustStore.trustStore), + trustStorePassword = Some("trustStore")) + sslOptionsProvider.setOptions(sslOptions) + val serverPort = startServer() + runUploadAndDownload(sslOptions, serverPort) + } + + try { + Class.forName("org.spark_project.jetty.util.ssl.SslContextFactory") + } + catch { + case e: ClassNotFoundException => testEnableSslOnServer() + } } private def runUploadAndDownload(sslOptions: SSLOptions, serverPort: Int): Unit = { From edf96b871f665c9070413b80d53b5fbf6d45a1f9 Mon Sep 17 00:00:00 2001 From: Eric Charles Date: Wed, 10 Jan 2018 17:03:03 +0100 Subject: [PATCH 3/3] Use Utils.classForName instead of Class.forName to avoid scalacheckstyle error --- .../spark/deploy/rest/k8s/ResourceStagingServerSuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala index 5e7b3c76e15e0..6b06efaaa6259 100644 --- a/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala +++ b/resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/rest/k8s/ResourceStagingServerSuite.scala @@ -107,7 +107,7 @@ class ResourceStagingServerSuite extends SparkFunSuite with BeforeAndAfter with } try { - Class.forName("org.spark_project.jetty.util.ssl.SslContextFactory") + Utils.classForName("org.spark_project.jetty.util.ssl.SslContextFactory") } catch { case e: ClassNotFoundException => testEnableSslOnServer()