<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-parent_2.12</artifactId>
    <version>3.4.0</version>
    <relativePath>../../../pom.xml</relativePath>
  </parent>

  <artifactId>spark-kubernetes-integration-tests_2.12</artifactId>
  <properties>
    <download-maven-plugin.version>1.3.0</download-maven-plugin.version>
    <extraScalaTestArgs></extraScalaTestArgs>
    <sbt.project.name>kubernetes-integration-tests</sbt.project.name>

    <!-- Integration Test Configuration Properties -->
    <!-- Please see README.md in this directory for explanation of these -->
    <spark.kubernetes.test.sparkTgz>N/A</spark.kubernetes.test.sparkTgz>
    <spark.kubernetes.test.unpackSparkDir>${project.build.directory}/spark-dist-unpacked</spark.kubernetes.test.unpackSparkDir>
    <spark.kubernetes.test.imageTag>N/A</spark.kubernetes.test.imageTag>
    <spark.kubernetes.test.javaImageTag>N/A</spark.kubernetes.test.javaImageTag>
    <spark.kubernetes.test.imageTagFile>${project.build.directory}/imageTag.txt</spark.kubernetes.test.imageTagFile>
    <spark.kubernetes.test.deployMode>minikube</spark.kubernetes.test.deployMode>
    <spark.kubernetes.test.imageRepo>docker.io/kubespark</spark.kubernetes.test.imageRepo>
    <spark.kubernetes.test.kubeConfigContext></spark.kubernetes.test.kubeConfigContext>
    <spark.kubernetes.test.master></spark.kubernetes.test.master>
    <spark.kubernetes.test.namespace></spark.kubernetes.test.namespace>
    <spark.kubernetes.test.serviceAccountName></spark.kubernetes.test.serviceAccountName>
    <spark.kubernetes.test.dockerFile>Dockerfile</spark.kubernetes.test.dockerFile>

    <test.exclude.tags></test.exclude.tags>
    <test.default.exclude.tags>org.apache.spark.deploy.k8s.integrationtest.YuniKornTag</test.default.exclude.tags>
    <test.include.tags></test.include.tags>
    <volcano.exclude>**/*Volcano*.scala</volcano.exclude>
  </properties>
  <packaging>jar</packaging>
  <name>Spark Project Kubernetes Integration Tests</name>

  <dependencies>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.binary.version}</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.binary.version}</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>kubernetes-client</artifactId>
      <version>${kubernetes-client.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-tags_${scala.binary.version}</artifactId>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-kubernetes_${scala.binary.version}</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>${volcano.exclude}</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>${exec-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>setup-integration-test-env</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>scripts/setup-integration-test-env.sh</executable>
              <arguments>
                <argument>--unpacked-spark-tgz</argument>
                <argument>${spark.kubernetes.test.unpackSparkDir}</argument>

                <argument>--image-repo</argument>
                <argument>${spark.kubernetes.test.imageRepo}</argument>

                <argument>--image-tag</argument>
                <argument>${spark.kubernetes.test.imageTag}</argument>

                <argument>--java-image-tag</argument>
                <argument>${spark.kubernetes.test.javaImageTag}</argument>

                <argument>--image-tag-output-file</argument>
                <argument>${spark.kubernetes.test.imageTagFile}</argument>

                <argument>--deploy-mode</argument>
                <argument>${spark.kubernetes.test.deployMode}</argument>

                <argument>--spark-tgz</argument>
                <argument>${spark.kubernetes.test.sparkTgz}</argument>

                <argument>--docker-file</argument>
                <argument>${spark.kubernetes.test.dockerFile}</argument>

                <argument>--test-exclude-tags</argument>
                <argument>"${test.exclude.tags},${test.default.exclude.tags}"</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>

      <plugin>
        <!-- Triggers scalatest plugin in the integration-test phase instead of
             the test phase. -->
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest-maven-plugin</artifactId>
        <version>${scalatest-maven-plugin.version}</version>
        <configuration>
          <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
          <junitxml>.</junitxml>
          <filereports>SparkTestSuite.txt</filereports>
          <argLine>-ea -Xmx4g -XX:ReservedCodeCacheSize=1g ${extraScalaTestArgs}</argLine>
          <stderr/>
          <systemProperties>
            <log4j.configurationFile>file:src/test/resources/log4j2.properties</log4j.configurationFile>
            <java.awt.headless>true</java.awt.headless>
            <spark.kubernetes.test.imageTagFile>${spark.kubernetes.test.imageTagFile}</spark.kubernetes.test.imageTagFile>
            <spark.kubernetes.test.unpackSparkDir>${spark.kubernetes.test.unpackSparkDir}</spark.kubernetes.test.unpackSparkDir>
            <spark.kubernetes.test.imageRepo>${spark.kubernetes.test.imageRepo}</spark.kubernetes.test.imageRepo>
            <spark.kubernetes.test.deployMode>${spark.kubernetes.test.deployMode}</spark.kubernetes.test.deployMode>
            <spark.kubernetes.test.kubeConfigContext>${spark.kubernetes.test.kubeConfigContext}</spark.kubernetes.test.kubeConfigContext>
            <spark.kubernetes.test.master>${spark.kubernetes.test.master}</spark.kubernetes.test.master>
            <spark.kubernetes.test.namespace>${spark.kubernetes.test.namespace}</spark.kubernetes.test.namespace>
            <spark.kubernetes.test.serviceAccountName>${spark.kubernetes.test.serviceAccountName}</spark.kubernetes.test.serviceAccountName>
            <spark.kubernetes.test.jvmImage>${spark.kubernetes.test.jvmImage}</spark.kubernetes.test.jvmImage>
            <spark.kubernetes.test.pythonImage>${spark.kubernetes.test.pythonImage}</spark.kubernetes.test.pythonImage>
            <spark.kubernetes.test.rImage>${spark.kubernetes.test.rImage}</spark.kubernetes.test.rImage>
          </systemProperties>
          <tagsToExclude>${test.exclude.tags},${test.default.exclude.tags}</tagsToExclude>
          <tagsToInclude>${test.include.tags}</tagsToInclude>
        </configuration>
        <executions>
          <execution>
            <id>test</id>
            <phase>none</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
          <execution>
            <id>integration-test</id>
            <phase>integration-test</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

  </build>

  <profiles>
    <profile>
      <id>hadoop-2</id>
      <dependencies>
        <dependency>
          <groupId>com.amazonaws</groupId>
          <artifactId>aws-java-sdk</artifactId>
          <version>1.7.4</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>hadoop-3</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <dependencies>
        <dependency>
          <groupId>com.amazonaws</groupId>
          <artifactId>aws-java-sdk-bundle</artifactId>
          <version>1.11.375</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>volcano</id>
      <properties>
        <volcano.exclude></volcano.exclude>
      </properties>
      <dependencies>
        <dependency>
          <groupId>io.fabric8</groupId>
          <artifactId>volcano-client</artifactId>
          <version>${kubernetes-client.version}</version>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>
