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 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..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 @@ -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 { + Utils.classForName("org.spark_project.jetty.util.ssl.SslContextFactory") + } + catch { + case e: ClassNotFoundException => testEnableSslOnServer() + } } private def runUploadAndDownload(sslOptions: SSLOptions, serverPort: Int): Unit = {