Github user vanzin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/19954#discussion_r158167537
  
    --- Diff: 
resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/submit/steps/DriverInitContainerBootstrapStepSuite.scala
 ---
    @@ -0,0 +1,159 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *    http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.spark.deploy.k8s.submit.steps
    +
    +import java.io.StringReader
    +import java.util.Properties
    +
    +import scala.collection.JavaConverters._
    +
    +import com.google.common.collect.Maps
    +import io.fabric8.kubernetes.api.model.{ConfigMap, ContainerBuilder, 
HasMetadata, PodBuilder, SecretBuilder}
    +
    +import org.apache.spark.{SparkConf, SparkFunSuite}
    +import org.apache.spark.deploy.k8s.Config._
    +import org.apache.spark.deploy.k8s.submit.KubernetesDriverSpec
    +import 
org.apache.spark.deploy.k8s.submit.steps.initcontainer.{InitContainerConfigurationStep,
 InitContainerSpec}
    +import org.apache.spark.util.Utils
    +
    +class DriverInitContainerBootstrapStepSuite extends SparkFunSuite {
    +
    +  private val CONFIG_MAP_NAME = "spark-init-config-map"
    +  private val CONFIG_MAP_KEY = "spark-init-config-map-key"
    +
    +  test("The init container bootstrap step should use all of the init 
container steps") {
    +    val baseDriverSpec = KubernetesDriverSpec(
    +      driverPod = new PodBuilder().build(),
    +      driverContainer = new ContainerBuilder().build(),
    +      driverSparkConf = new SparkConf(false),
    +      otherKubernetesResources = Seq.empty[HasMetadata])
    +    val initContainerSteps = Seq(
    +      FirstTestInitContainerConfigurationStep,
    +      SecondTestInitContainerConfigurationStep)
    +    val bootstrapStep = new DriverInitContainerBootstrapStep(
    +      initContainerSteps,
    +      CONFIG_MAP_NAME,
    +      CONFIG_MAP_KEY)
    +
    +    val preparedDriverSpec = bootstrapStep.configureDriver(baseDriverSpec)
    +
    +    assert(preparedDriverSpec.driverPod.getMetadata.getLabels.asScala ===
    +      FirstTestInitContainerConfigurationStep.additionalLabels)
    +    val additionalDriverEnv = 
preparedDriverSpec.driverContainer.getEnv.asScala
    +    assert(additionalDriverEnv.size === 1)
    +    assert(additionalDriverEnv.head.getName ===
    +      
FirstTestInitContainerConfigurationStep.additionalMainContainerEnvKey)
    +    assert(additionalDriverEnv.head.getValue ===
    +      
FirstTestInitContainerConfigurationStep.additionalMainContainerEnvValue)
    +
    +    assert(preparedDriverSpec.otherKubernetesResources.size === 2)
    +    assert(preparedDriverSpec.otherKubernetesResources.contains(
    +      
FirstTestInitContainerConfigurationStep.additionalKubernetesResource))
    +    assert(preparedDriverSpec.otherKubernetesResources.exists {
    +      case configMap: ConfigMap =>
    +        val hasMatchingName = configMap.getMetadata.getName == 
CONFIG_MAP_NAME
    +        val configMapData = configMap.getData.asScala
    +        val hasCorrectNumberOfEntries = configMapData.size == 1
    +        val initContainerPropertiesRaw = configMapData(CONFIG_MAP_KEY)
    +        val initContainerProperties = new Properties()
    +        Utils.tryWithResource(new 
StringReader(initContainerPropertiesRaw)) {
    +          initContainerProperties.load(_)
    +        }
    +        val initContainerPropertiesMap = 
Maps.fromProperties(initContainerProperties).asScala
    +        val expectedInitContainerProperties = Map(
    +          
SecondTestInitContainerConfigurationStep.additionalInitContainerPropertyKey ->
    +            
SecondTestInitContainerConfigurationStep.additionalInitContainerPropertyValue)
    +        val hasMatchingProperties = initContainerPropertiesMap == 
expectedInitContainerProperties
    +        hasMatchingName && hasCorrectNumberOfEntries && 
hasMatchingProperties
    +      case _ => false
    --- End diff --
    
    Add empty line before this.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to