<?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.4.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>beam-sdks-java-io-file-based-io-tests</artifactId>
    <name>Apache Beam :: SDKs :: Java :: IO :: File-based-io-tests</name>
    <description>Integration tests for reading/writing using file-based sources/sinks.</description>

    <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>

        <!--
            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/file-based-io-tests
                -DpkbLocation="path-to-pkb.py" \
                -DintegrationTestPipelineOptions='["&ndash;&ndash;numberOfRecords=100000"]' \
                -DfileBasedIoItClass=file-based IO IT class, eg. org.apache.beam.sdk.io.text.TextIOIT

            For DirectRunner, please use -DforceDirectRunner=true argument
            For other runners please check doc in BEAM-3060 and https://beam.apache.org/documentation/io/testing/
        -->
        <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.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_it_timeout=${pkbTimeout}</argument>
                                <argument>-beam_location=${beamRootProjectDir}</argument>
                                <argument>-beam_prebuilt=true</argument>
                                <argument>-beam_sdk=java</argument>
                                <!-- runner overrides, controlled via forceDirectRunner -->
                                <argument>${pkbBeamRunnerProfile}</argument>
                                <argument>${pkbBeamRunnerOption}</argument>
                                <!-- specific to this IO -->
                                <argument>-beam_it_module=sdks/java/io/file-based-io-tests</argument>
                                <argument>-beam_it_class=${fileBasedIoItClass}</argument>
                                <!-- arguments typically defined by user -->
                                <argument>-beam_it_options=${integrationTestPipelineOptions}</argument>
                                <!--
                                optional array of key=value items. It will be passed to
                                target mvn command by pkb. eg. -DpkbExtraProperties='["filesystem=local"]'
                                -->
                                <argument>-beam_extra_mvn_properties=${pkbExtraProperties}</argument>
                            </arguments>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skipTests>true</skipTests>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

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

            To invoke this, run:

            mvn verify -Dio-it-hdfs-small -pl sdks/java/io/file-based-io-tests
                -DpkbLocation="path-to-pkb.py" \
                -DintegrationTestPipelineOptions='["&ndash;&ndash;numberOfRecords=100000", \
                "&ndash;&ndash;tempRoot=gs://bucket-name/"]' \
                -DpkbExtraProperties='["filesystem=hdfs"]' \
                -DfileBasedIoItClass=file-based IO IT class, eg. org.apache.beam.sdk.io.text.TextIOIT

            For DirectRunner, please use -DforceDirectRunner=true argument and check
            .test-infra/kubernetes/hadoop/SmallITCluster/pkb-config.yml for info about necessary modifications.
            Line containing argument beam_kubernetes_scripts must be commented out, because test infrastructure
            when testing on DirectRunner must be created manually using provided scripts.

            For other runners please check doc in BEAM-3060 and https://beam.apache.org/documentation/io/testing/
        -->
        <profile>
            <id>io-it-hdfs-small</id>
            <activation>
                <property><name>io-it-suite-hdfs-small</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.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/file-based-io-tests</argument>
                                <argument>-beam_it_class=${fileBasedIoItClass}</argument>
                                <!-- arguments typically defined by user -->
                                <argument>-beam_it_options=${integrationTestPipelineOptions}</argument>
                                <argument>-beam_options_config_file=${beamRootProjectDir}/.test-infra/kubernetes/hadoop/SmallITCluster/pkb-config.yml</argument>
                                <argument>-beam_kubernetes_scripts=${beamRootProjectDir}/.test-infra/kubernetes/hadoop/SmallITCluster/hdfs-single-datanode-cluster.yml,${beamRootProjectDir}/.test-infra/kubernetes/hadoop/SmallITCluster/hdfs-single-datanode-cluster-for-local-dev.yml</argument>
                                <!--
                                optional array of key=value items. It will be passed to
                                target mvn command by pkb. eg. -DpkbExtraProperties='["filesystem=local"]'
                                -->
                                <argument>-beam_extra_mvn_properties=${pkbExtraProperties}</argument>
                            </arguments>
                        </configuration>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${maven-surefire-plugin.version}</version>
                        <configuration>
                            <skipTests>true</skipTests>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <!-- Include the google-cloud-platform activated by -Dfilesystem=gcs
            Support for protocol scheme gs:// - allow to read/write to google storage -->
            <id>google-cloud-storage</id>
            <activation>
                <property>
                    <name>filesystem</name>
                    <value>gcs</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.beam</groupId>
                    <artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <!-- Include the hadoop connectivity dependencies activated by -Dfilesystem=hdfs
            Support for protocol scheme hdfs:// - allow to read/write to HDFS -->
            <id>hadoop-distributed-file-system</id>
            <activation>
                <property>
                    <name>filesystem</name>
                    <value>hdfs</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.beam</groupId>
                    <artifactId>beam-sdks-java-io-hadoop-file-system</artifactId>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-hdfs</artifactId>
                    <version>${apache.hadoop.version}</version>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-client</artifactId>
                    <version>${apache.hadoop.version}</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

    <properties>
        <apache.hadoop.version>2.7.1</apache.hadoop.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.beam</groupId>
            <artifactId>beam-sdks-java-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.beam</groupId>
            <artifactId>beam-runners-direct-java</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-library</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.apache.beam</groupId>
            <artifactId>beam-sdks-java-io-common</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>
