<?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.carbondata</groupId>
    <artifactId>carbondata-parent</artifactId>
    <version>1.5.2</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

  <artifactId>carbondata-spark-common-test</artifactId>
  <name>Apache CarbonData :: Spark Common Test</name>

  <properties>
    <dev.path>${basedir}/../../dev</dev.path>
    <jacoco.append>true</jacoco.append>
    <build.directory.projectCommon>../../common/target</build.directory.projectCommon>
    <build.directory.projectCore>../../core/target</build.directory.projectCore>
    <build.directory.projectProcessing>../../processing/target</build.directory.projectProcessing>
    <build.directory.projectHadoop>../../hadoop/target</build.directory.projectHadoop>
    <build.directory.projectFormat>../../format/target</build.directory.projectFormat>
    <build.directory.projectSpark>../../integration/spark/target</build.directory.projectSpark>
    <build.directory.projectSpark2>../../integration/spark2/target</build.directory.projectSpark2>
    <build.directory.projectSparkCommon>../../integration/spark-common/target</build.directory.projectSparkCommon>
    <build.directory.projectSparkCommonTest>../../integration/spark-common-test/target</build.directory.projectSparkCommonTest>
    <!--<build.directory.projectHive>../../integration/hive/target</build.directory.projectHive>-->
    <!--<build.directory.projectPresto>../../integration/presto/target</build.directory.projectPresto>-->
    <build.directory.projectStoreSdk>../../store/sdk/target</build.directory.projectStoreSdk>
    <build.directory.projectStreaming>../../streaming/target</build.directory.projectStreaming>
    <build.directory.projectBloom>../../datamap/bloom/target</build.directory.projectBloom>
    <build.directory.projectLucene>../../datamap/lucene/target</build.directory.projectLucene>

    <classes.directory.projectCommon>../../common/target/classes</classes.directory.projectCommon>
    <classes.directory.projectCore>../../core/target/classes</classes.directory.projectCore>
    <classes.directory.projectProcessing>../../processing/target/classes</classes.directory.projectProcessing>
    <classes.directory.projectHadoop>../../hadoop/target/classes</classes.directory.projectHadoop>
    <classes.directory.projectFormat>../../format/target/classes</classes.directory.projectFormat>
    <classes.directory.projectSpark>../../integration/spark/target/classes</classes.directory.projectSpark>
    <classes.directory.projectSpark2>../../integration/spark2/target/classes</classes.directory.projectSpark2>
    <classes.directory.projectSparkCommon>../../integration/spark-common/target/classes</classes.directory.projectSparkCommon>
    <classes.directory.projectSparkCommonTest>../../integration/spark-common-test/target/classes</classes.directory.projectSparkCommonTest>
    <!--<classes.directory.projectHive>../../integration/hive/target/classes</classes.directory.projectHive>-->
    <!--<classes.directory.projectPresto>../../integration/presto/target/classes</classes.directory.projectPresto>-->
    <classes.directory.projectStoreSdk>../../store/sdk/target/classes</classes.directory.projectStoreSdk>
    <classes.directory.projectStreaming>../../streaming/target/classes</classes.directory.projectStreaming>
    <classes.directory.projectBloom>../../datamap/bloom/target/classes</classes.directory.projectBloom>
    <classes.directory.projectLucene>../../datamap/lucene/target/classes</classes.directory.projectLucene>

    <sources.directory.projectCommon>../../common/src/main/java</sources.directory.projectCommon>
    <sources.directory.projectCore>../../core/src/main/java</sources.directory.projectCore>
    <sources.directory.projectProcessing>../../processing/src/main/java</sources.directory.projectProcessing>
    <sources.directory.projectHadoop>../../hadoop/src/main/java</sources.directory.projectHadoop>
    <sources.directory.projectFormat>../../format/src/main/thrift</sources.directory.projectFormat>
    <sources.directory.projectSpark>../../integration/spark/src/main/scala</sources.directory.projectSpark>
    <sources.directory.projectSpark>../../integration/spark/src/main/java</sources.directory.projectSpark>
    <sources.directory.projectSpark2>../../integration/spark2/src/main/java</sources.directory.projectSpark2>
    <sources.directory.projectSpark2>../../integration/spark2/src/main/scala</sources.directory.projectSpark2>
    <sources.directory.projectSparkCommon>../../integration/spark-common/src/main/java</sources.directory.projectSparkCommon>
    <sources.directory.projectSparkCommon>../../integration/spark-common/src/main/scala</sources.directory.projectSparkCommon>
    <!--<sources.directory.projectHive>../../integration/hive/src/main/java</sources.directory.projectHive>-->
    <!--<sources.directory.projectHive>../../integration/hive/src/main/scala</sources.directory.projectHive>-->
    <!--<sources.directory.projectPresto>../../integration/presto/src/main/java</sources.directory.projectPresto>-->
    <!--<sources.directory.projectPresto>../../integration/presto/src/main/scala</sources.directory.projectPresto>-->
    <sources.directory.projectStoreSdk>../../store/sdk/src/main/java</sources.directory.projectStoreSdk>
    <sources.directory.projectStreaming>../../streaming/src/main/java</sources.directory.projectStreaming>
    <sources.directory.projectStreaming>../../streaming/src/main/scala</sources.directory.projectStreaming>
    <sources.directory.projectBloom>../../datamap/bloom/src/main/java</sources.directory.projectBloom>
    <sources.directory.projectLucene>../../datamap/lucene/src/main/java</sources.directory.projectLucene>

    <generated-sources.directory.projectCommon>../../common/target/generated-sources/annotations</generated-sources.directory.projectCommon>
    <generated-sources.directory.projectCore>../../core/target/generated-sources/annotations</generated-sources.directory.projectCore>
    <generated-sources.directory.projectProcessing>../../processing/target/generated-sources/annotations</generated-sources.directory.projectProcessing>
    <generated-sources.directory.projectHadoop>../../hadoop/target/generated-sources/annotations</generated-sources.directory.projectHadoop>
    <generated-sources.directory.projectFormat>../../format/target/generated-sources/annotations</generated-sources.directory.projectFormat>
    <generated-sources.directory.projectSpark>../../integration/spark/target/generated-sources/annotations</generated-sources.directory.projectSpark>
    <generated-sources.directory.projectSpark2>../../integration/spark2/target/generated-sources/annotations</generated-sources.directory.projectSpark2>
    <generated-sources.directory.projectSparkCommon>../../integration/spark-common/target/generated-sources/annotations</generated-sources.directory.projectSparkCommon>
    <generated-sources.directory.projectSparkCommonTest>../../integration/spark-common-test/target/generated-sources/annotations</generated-sources.directory.projectSparkCommonTest>
    <!--<generated-sources.directory.projectHive>../../integration/hive/target/generated-sources/annotations</generated-sources.directory.projectHive>-->
    <!--<generated-sources.directory.projectPresto>../../integration/presto/target/generated-sources/annotations</generated-sources.directory.projectPresto>-->
    <generated-sources.directory.projectStoreSdk>../../store/sdk/target/generated-sources/annotations</generated-sources.directory.projectStoreSdk>
    <generated-sources.directory.projectStreaming>../../streaming/target/generated-sources/annotations</generated-sources.directory.projectStreaming>
    <generated-sources.directory.projectBloom>../../datamap/bloom/target/generated-sources/annotations</generated-sources.directory.projectBloom>
    <generated-sources.directory.projectLucene>../../datamap/lucene/target/generated-sources/annotations</generated-sources.directory.projectLucene>

  </properties>


  <dependencies>
    <dependency>
      <groupId>org.apache.carbondata</groupId>
      <artifactId>carbondata-spark2</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.carbondata</groupId>
      <artifactId>carbondata-lucene</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.carbondata</groupId>
      <artifactId>carbondata-bloom</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.carbondata</groupId>
      <artifactId>carbondata-store-sdk</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <!-- spark catalyst added runtime dependency on spark-core,so
      while executing the testcases spark-core should be present else it
      will fail to execute -->
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_${scala.binary.version}</artifactId>
      <scope>test</scope>
      <exclusions>
        <!-- need to Exclude Avro jar from this project,spark core is using
        the version 1.7.4 which is not compatible with Carbon -->
        <exclusion>
          <groupId>org.apache.avro</groupId>
          <artifactId>avro</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.scalatest</groupId>
      <artifactId>scalatest_${scala.binary.version}</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jmockit</groupId>
      <artifactId>jmockit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <testSourceDirectory>src/test/scala</testSourceDirectory>
    <resources>
      <resource>
        <directory>src/resources</directory>
      </resource>
      <resource>
        <directory>.</directory>
        <includes>
          <include>CARBON_SPARK_INTERFACELogResource.properties</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.scala-tools</groupId>
        <artifactId>maven-scala-plugin</artifactId>
        <version>2.15.2</version>
        <executions>
          <execution>
            <id>compile</id>
            <goals>
              <goal>compile</goal>
            </goals>
            <phase>compile</phase>
          </execution>
          <execution>
            <id>testCompile</id>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <phase>test</phase>
          </execution>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18</version>
        <!-- Note config is repeated in scalatest config -->
        <configuration>
          <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
          <argLine>-Xmx3g -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=512m</argLine>
          <systemProperties>
            <java.awt.headless>true</java.awt.headless>
            <spark.carbon.hive.schema.store>${carbon.hive.based.metastore}</spark.carbon.hive.schema.store>
          </systemProperties>
          <failIfNoTests>false</failIfNoTests>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest-maven-plugin</artifactId>
        <version>1.0</version>
        <!-- Note config is repeated in surefire config -->
        <configuration>
          <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
          <junitxml>.</junitxml>
          <filereports>CarbonTestSuite.txt</filereports>
          <argLine> ${argLine} -ea -Xmx3g -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=512m
          </argLine>
          <stderr />
          <environmentVariables>
          </environmentVariables>
          <systemProperties>
            <java.awt.headless>true</java.awt.headless>
            <spark.carbon.hive.schema.store>${carbon.hive.based.metastore}</spark.carbon.hive.schema.store>
          </systemProperties>
        </configuration>
        <executions>
          <execution>
            <id>test</id>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <!-- Copy the ant tasks jar. Needed for ts.jacoco.report-ant . -->
          <execution>
            <id>jacoco-dependency-ant</id>
            <goals>
              <goal>copy</goal>
            </goals>
            <phase>process-test-resources</phase>
            <inherited>false</inherited>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.jacoco</groupId>
                  <artifactId>org.jacoco.ant</artifactId>
                  <version>0.7.9</version>
                </artifactItem>
              </artifactItems>
              <stripVersion>true</stripVersion>
              <outputDirectory>${basedir}/target/jacoco-jars</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>post-integration-test</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <echo message="Generating JaCoCo Reports" />
                <taskdef name="report" classname="org.jacoco.ant.ReportTask">
                  <classpath path="${basedir}/target/jacoco-jars/org.jacoco.ant.jar" />
                </taskdef>
                <mkdir dir="${basedir}/target/coverage-report" />
                <report>
                  <executiondata>
                    <fileset dir="${build.directory.projectCommon}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectCore}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectProcessing}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectHadoop}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectFormat}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectSpark}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectSpark2}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectSparkCommon}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectSparkCommonTest}">
                      <include name="jacoco.exec" />
                    </fileset>
                    <!--<fileset dir="${build.directory.projectHive}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>-->
                    <!--<fileset dir="${build.directory.projectPresto}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>-->
                    <fileset dir="${build.directory.projectStoreSdk}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectStreaming}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectBloom}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>
                    <fileset dir="${build.directory.projectLucene}" erroronmissingdir="false">
                      <include name="jacoco.exec" />
                    </fileset>

                  </executiondata>
                  <structure name="jacoco-CarbonData Coverage Project">
                    <group name="carbondata-coverage">
                      <classfiles>
                        <fileset dir="${classes.directory.projectCommon}" />
                        <fileset dir="${classes.directory.projectCore}" />
                        <fileset dir="${classes.directory.projectProcessing}" />
                        <fileset dir="${classes.directory.projectHadoop}" />
                        <!--<fileset dir="${classes.directory.projectFormat}" erroronmissingdir="false" />-->
                        <fileset dir="${classes.directory.projectSpark}" erroronmissingdir="false" />
                        <fileset dir="${classes.directory.projectSpark2}" erroronmissingdir="false" />
                        <fileset dir="${classes.directory.projectSparkCommon}" />
                        <fileset dir="${classes.directory.projectSparkCommonTest}" />
                        <!--<fileset dir="${classes.directory.projectHive}" erroronmissingdir="false" />-->
                        <!--<fileset dir="${classes.directory.projectPresto}" erroronmissingdir="false" />-->
                        <fileset dir="${classes.directory.projectStoreSdk}" erroronmissingdir="false" />
                        <fileset dir="${classes.directory.projectStreaming}" erroronmissingdir="false" />
                        <fileset dir="${classes.directory.projectBloom}" erroronmissingdir="false" />
                        <fileset dir="${classes.directory.projectLucene}" erroronmissingdir="false" />
                      </classfiles>
                      <sourcefiles encoding="UTF-8">
                        <fileset dir="${sources.directory.projectCommon}" />
                        <fileset dir="${sources.directory.projectCore}" />
                        <fileset dir="${sources.directory.projectProcessing}" />
                        <fileset dir="${sources.directory.projectHadoop}" />
                        <!--<fileset dir="${sources.directory.projectFormat}" erroronmissingdir="false" />-->
                        <fileset dir="${sources.directory.projectSpark}" erroronmissingdir="false" />
                        <fileset dir="${sources.directory.projectSpark2}" erroronmissingdir="false" />
                        <fileset dir="${sources.directory.projectSparkCommon}" />
                        <!--<fileset dir="${sources.directory.projectHive}" erroronmissingdir="false" />-->
                        <!--<fileset dir="${sources.directory.projectPresto}" erroronmissingdir="false" />-->
                        <fileset dir="${sources.directory.projectStoreSdk}" erroronmissingdir="false" />
                        <fileset dir="${sources.directory.projectStreaming}" erroronmissingdir="false" />
                        <fileset dir="${sources.directory.projectBloom}" erroronmissingdir="false" />
                        <fileset dir="${sources.directory.projectLucene}" erroronmissingdir="false" />

                      </sourcefiles>
                    </group>
                  </structure>
                  <html destdir="../../target/carbondata-coverage-report/html" />
                  <xml destfile="../../target/carbondata-coverage-report/carbondata-coverage-report.xml" />
                  <csv destfile="../../target/carbondata-coverage-report/carbondata-coverage-report.csv" />
                </report>
              </target>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.jacoco</groupId>
            <artifactId>org.jacoco.ant</artifactId>
            <version>0.7.9</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>sdvtest</id>
      <properties>
        <maven.test.skip>true</maven.test.skip>
      </properties>
    </profile>
    <profile>
      <id>build-all</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
