Github user ifilonenko commented on a diff in the pull request: https://github.com/apache/spark/pull/22760#discussion_r230951222 --- Diff: resource-managers/kubernetes/core/src/test/scala/org/apache/spark/deploy/k8s/features/KubernetesFeaturesTestUtils.scala --- @@ -63,4 +63,66 @@ object KubernetesFeaturesTestUtils { def containerHasEnvVar(container: Container, envVarName: String): Boolean = { container.getEnv.asScala.exists(envVar => envVar.getName == envVarName) } + + def containerHasEnvVars(container: Container, envs: Map[String, String]): Unit = { + assertHelper[Set[(String, String)]](envs.toSet, + container.getEnv.asScala + .map { e => (e.getName, e.getValue) }.toSet, + subsetOfTup[Set[(String, String)], String], "a subset of") + } + + def containerHasVolumeMounts(container: Container, vms: Map[String, String]): Unit = { + assertHelper[Set[(String, String)]](vms.toSet, + container.getVolumeMounts.asScala + .map { vm => (vm.getName, vm.getMountPath) }.toSet, + subsetOfTup[Set[(String, String)], String], "a subset of") + } + + def podHasLabels(pod: Pod, labels: Map[String, String]): Unit = { + assertHelper[Set[(String, String)]](labels.toSet, pod.getMetadata.getLabels.asScala.toSet, + subsetOfTup[Set[(String, String)], String], "a subset of") + } + + def podHasVolumes(pod: Pod, volumes: Seq[Volume]): Unit = { + assertHelper[Set[Volume]](volumes.toSet, pod.getSpec.getVolumes.asScala.toSet, + subsetOfElem[Set[Volume], Volume], "a subset of") + } + + // Mocking bootstrapHadoopConfDir + def hadoopConfBootPod(inputPod: SparkPod): SparkPod = + SparkPod( + new PodBuilder(inputPod.pod) + .editOrNewMetadata() + .addToLabels("bootstrap-hconf", "true") + .endMetadata() + .build(), + inputPod.container) + + // Mocking bootstrapKerberosPod + def krbBootPod(inputPod: SparkPod): SparkPod = + SparkPod( + new PodBuilder(inputPod.pod) + .editOrNewMetadata() + .addToLabels("bootstrap-kerberos", "true") + .endMetadata() + .build(), + inputPod.container) + + // Mocking bootstrapSparkUserPod + def userBootPod(inputPod: SparkPod): SparkPod = + SparkPod( + new PodBuilder(inputPod.pod) + .editOrNewMetadata() + .addToLabels("bootstrap-user", "true") + .endMetadata() + .build(), + inputPod.container) + + def subsetOfElem[T <: Set[B], B <: Any]: (T, T) => Boolean = (a, b) => a.subsetOf(b) + def subsetOfTup[T <: Set[(B, B)], B <: Any]: (T, T) => Boolean = (a, b) => a.subsetOf(b) + + def assertHelper[T](con1: T, con2: T, + expr: (T, T) => Boolean = (a: T, b: T) => a == b, exprMsg: String = "equal to"): Unit = { + assert(expr(con1, con2), s"$con1 is not $exprMsg $con2 as expected") --- End diff -- I thought it would be better than doing a custom string at every assert statement. I don't find it to be too awkward, but *shrug* :) I actually kind of like it since we could do a check with any expression
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org