<?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.beam</groupId>
    <artifactId>beam-sdks-java-io-parent</artifactId>
    <version>2.3.0</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>beam-sdks-java-io-hadoop-input-format</artifactId>
  <name>Apache Beam :: SDKs :: Java :: IO :: Hadoop Input Format</name>
  <description>IO to read data from sources that implement Hadoop Input Format.</description>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!-- Don't run the tests in parallel since HIFIOWithElasticTest uses
             a static port number which can lead to port in use errors. -->
          <parallel>none</parallel>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <!--The dataflow-runner and spark-runner profiles support using those runners
    during an integration test. These are not the long-term way we want to support
    using runners in ITs (e.g. it is annoying to add to all IO modules.) We cannot
    create a dependency IO -> Runners since the runners depend on IO (e.g. kafka
    depends on spark.) -->
  <profiles>
    <!-- Include the Google Cloud Dataflow runner activated by -DintegrationTestRunner=dataflow -->
    <profile>
      <id>dataflow-runner</id>
      <activation>
        <property>
          <name>integrationTestRunner</name>
          <value>dataflow</value>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.apache.beam</groupId>
          <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>spark-runner</id>
      <properties>
        <netty.version>4.0.43.Final</netty.version>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.apache.beam</groupId>
          <artifactId>beam-runners-spark</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-streaming_2.11</artifactId>
          <scope>runtime</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-core_2.11</artifactId>
          <scope>runtime</scope>
          <exclusions>
            <exclusion>
              <groupId>org.slf4j</groupId>
              <artifactId>jul-to-slf4j</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.module</groupId>
          <artifactId>jackson-module-scala_2.11</artifactId>
          <version>2.8.9</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <!--
        This profile invokes PerfKitBenchmarker, which does benchmarking of
        the IO ITs. The arguments passed to it allow it to invoke mvn again
        with the desired benchmark.

        To invoke this, run:

        mvn verify -Dio-it-suite -pl sdks/java/io/hadoop/input-format
            -DpkbLocation="path-to-pkb.py" \
            -DintegrationTestPipelineOptions='["-tempRoot=gs://bucket/staging"]'
    -->
    <profile>
      <id>io-it-suite</id>
      <activation>
        <property><name>io-it-suite</name></property>
      </activation>
      <properties>
        <!-- This is based on the location of the current pom relative to the root
             See discussion in BEAM-2460 -->
        <beamRootProjectDir>${project.parent.parent.parent.parent.parent.basedir}</beamRootProjectDir>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <version>${groovy-maven-plugin.version}</version>
            <executions>
              <execution>
                <id>find-supported-python-for-compile</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>${beamRootProjectDir}/sdks/python/findSupportedPython.groovy</source>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${maven-exec-plugin.version}</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <executable>${python.interpreter.bin}</executable>
              <arguments>
                <argument>${pkbLocation}</argument>
                <argument>-benchmarks=beam_integration_benchmark</argument>
                <argument>-beam_it_profile=io-it</argument>
                <argument>-beam_location=${beamRootProjectDir}</argument>
                <argument>-beam_prebuilt=true</argument>
                <argument>-beam_sdk=java</argument>
                <argument>-kubeconfig=${kubeconfig}</argument>
                <argument>-kubectl=${kubectl}</argument>
                <!-- runner overrides, controlled via forceDirectRunner -->
                <argument>${pkbBeamRunnerProfile}</argument>
                <argument>${pkbBeamRunnerOption}</argument>
                <!-- specific to this IO -->
                <argument>-beam_it_module=sdks/java/io/hadoop/input-format</argument>
                <argument>-beam_it_class=org.apache.beam.sdk.io.hadoop.inputformat.HadoopInputFormatIOIT</argument>
                <argument>-beam_options_config_file=${beamRootProjectDir}/.test-infra/kubernetes/postgres/pkb-config.yml</argument>
                <argument>-beam_kubernetes_scripts=${beamRootProjectDir}/.test-infra/kubernetes/postgres/postgres.yml</argument>
                <!-- arguments typically defined by user -->
                <argument>-beam_it_options=${integrationTestPipelineOptions}</argument>
              </arguments>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
      io-it-suite-local overrides part of io-it-suite, allowing users to run tests
      when they are on a separate network from the kubernetes cluster by
      creating a LoadBalancer service.
    -->
    <profile>
      <id>io-it-suite-local</id>
      <activation><property><name>io-it-suite-local</name></property></activation>
      <properties>
        <!-- This is based on the location of the current pom relative to the root
             See discussion in BEAM-2460 -->
        <beamRootProjectDir>${project.parent.parent.parent.parent.parent.basedir}</beamRootProjectDir>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <version>${groovy-maven-plugin.version}</version>
            <executions>
              <execution>
                <id>find-supported-python-for-compile</id>
                <phase>initialize</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>${beamRootProjectDir}/sdks/python/findSupportedPython.groovy</source>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${maven-exec-plugin.version}</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <executable>${python.interpreter.bin}</executable>
              <arguments>
                <argument>${pkbLocation}</argument>
                <argument>-benchmarks=beam_integration_benchmark</argument>
                <argument>-beam_it_profile=io-it</argument>
                <argument>-beam_location=${beamRootProjectDir}</argument>
                <argument>-beam_prebuilt=true</argument>
                <argument>-beam_sdk=java</argument>
                <argument>-kubeconfig=${kubeconfig}</argument>
                <argument>-kubectl=${kubectl}</argument>
                <!-- runner overrides, controlled via forceDirectRunner -->
                <argument>${pkbBeamRunnerProfile}</argument>
                <argument>${pkbBeamRunnerOption}</argument>
                <!-- specific to this IO -->
                <argument>-beam_it_module=sdks/java/io/hadoop/input-format</argument>
                <argument>-beam_it_class=org.apache.beam.sdk.io.hadoop.inputformat.HadoopInputFormatIOIT</argument>
                <argument>-beam_options_config_file=${beamRootProjectDir}/.test-infra/kubernetes/postgres/pkb-config-local.yml</argument>
                <argument>-beam_kubernetes_scripts=${beamRootProjectDir}/.test-infra/kubernetes/postgres/postgres.yml,${beamRootProjectDir}/.test-infra/kubernetes/postgres/postgres-service-for-local-dev.yml</argument>
                <!-- arguments typically defined by user -->
                <argument>-beam_it_options=${integrationTestPipelineOptions}</argument>
              </arguments>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${surefire-plugin.version}</version>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <properties>
    <log4j.core.version>2.6.2</log4j.core.version>
    <guava.version>19.0</guava.version>
    <transport.netty4.client.version>5.0.0</transport.netty4.client.version>
    <netty.transport.native.epoll.version>4.1.0.CR3</netty.transport.native.epoll.version>
    <elasticsearch.version>5.0.0</elasticsearch.version>
    <cassandra.driver.mapping.version>3.1.1</cassandra.driver.mapping.version>
    <cassandra.all.verison>3.9</cassandra.all.verison>
    <cassandra.driver.core.version>3.1.1</cassandra.driver.core.version>
    <commons.io.version>2.4</commons.io.version>
  </properties>

  <dependencies>
    <!-- compile dependencies -->
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>jsr305</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.auto.value</groupId>
      <artifactId>auto-value</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-io-hadoop-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- test dependencies -->
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-runners-direct-java</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-core</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <!-- We need to depend on the non test-jar artifact to get
       the repackaged transitive dependencies on the classpath. -->
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-io-common</artifactId>
      <scope>test</scope>
      <classifier>tests</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-io-common</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-io-common</artifactId>
      <scope>test</scope>
      <classifier>tests</classifier>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch.plugin</groupId>
      <artifactId>transport-netty4-client</artifactId>
      <version>${transport.netty4.client.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>${elasticsearch.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty-transport-native-epoll</artifactId>
      <version>${netty.transport.native.epoll.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>${elasticsearch.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch-hadoop</artifactId>
      <version>${elasticsearch.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-core_2.10</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-streaming_2.10</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-sql_2.10</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-mapping</artifactId>
      <version>${cassandra.driver.mapping.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.cassandra</groupId>
      <artifactId>cassandra-all</artifactId>
      <version>${cassandra.all.verison}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-core</artifactId>
      <version>${cassandra.driver.core.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.beam</groupId>
      <artifactId>beam-sdks-java-io-jdbc</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-all</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.core.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- runtime dependencies -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${commons.io.version}</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>
