<?xml version="1.0"?>
<!--
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 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.sentry</groupId>
    <artifactId>sentry-tests</artifactId>
    <version>1.8.0-SNAPSHOT</version>
  </parent>
  <artifactId>sentry-tests-hive-v2</artifactId>
  <name>Sentry Hive Tests v2</name>
  <description>end to end tests for sentry-hive-v2 integration</description>
  <properties>
  <!--
    <hadoop-dist>.</hadoop-dist>
    <hive-dist>${hadoop-dist}</hive-dist>
  -->
    <HADOOP_CONF_DIR>${env.HADOOP_CONF_DIR}</HADOOP_CONF_DIR>
    <HIVE_CONF_DIR>${env.HIVE_CONF_DIR}</HIVE_CONF_DIR>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-service</artifactId>
      <version>${hive-v2.version}</version>
      <exclusions>
        <exclusion>
          <groupId>ant</groupId>
          <artifactId>ant</artifactId>
        </exclusion>
      </exclusions>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-shims</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-serde</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-metastore</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-rdbms</artifactId>
        </exclusion>
      </exclusions>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-jdbc</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-hbase-handler</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-exec</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-rdbms</artifactId>
        </exclusion>
      </exclusions>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-contrib</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-common</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-cli</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive.hcatalog</groupId>
      <artifactId>hive-hcatalog-core</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive.hcatalog</groupId>
      <artifactId>hive-hcatalog-pig-adapter</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-beeline</artifactId>
      <version>${hive-v2.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-annotations</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-auth</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-common</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-shuffle</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-api</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-common</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-server-common</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-yarn-server-nodemanager</artifactId>
      <version>${hadoop.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.pig</groupId>
      <artifactId>pig</artifactId>
      <version>${pig.version}</version>
      <classifier>h2</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.easytesting</groupId>
      <artifactId>fest-reflect</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-binding-hive-v2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-provider-db</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.hive</groupId>
          <artifactId>hive-beeline</artifactId>
        </exclusion>
      </exclusions>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-provider-file</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-hdfs-common</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-hdfs-service</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-hdfs-namenode-plugin</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sentry</groupId>
      <artifactId>sentry-policy-db</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-minicluster</artifactId>
      <scope>test</scope>
<!--
      <exclusions>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
          </exclusion>
      </exclusions>
-->
    </dependency>
      <dependency>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-all</artifactId>
          <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.netty</groupId>
            <artifactId>netty</artifactId>
          </exclusion>
        </exclusions>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
        <scope>test</scope>
      </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <reuseForks>false</reuseForks>
          <systemPropertyVariables>
            <buildDirectory>${project.build.directory}</buildDirectory>
          </systemPropertyVariables>
          <excludes>
            <exclude>**/TestHDFSIntegration.java</exclude>
            <exclude>**/TestHDFSIntegrationWithHA.java</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.7,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
   <profile>
     <id>link-hadoop</id>
     <activation>
       <activeByDefault>false</activeByDefault>
       <property><name>!skipTests</name></property>
     </activation>
     <build>
     <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <environmentVariables>
            <SENTRY_HADOOP_TEST_CLASSPATH>${maven.test.classpath}</SENTRY_HADOOP_TEST_CLASSPATH>
          </environmentVariables>
        </configuration>
      </plugin>
     </plugins>
    </build>
   </profile>
   <profile>
     <id>cluster-hadoop</id>
     <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.0</version>
          <executions>
            <execution>
              <id>enforce-property</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireProperty>
                    <property>HADOOP_CONF_DIR</property>
                    <message>HADOOP_CONF_DIR env. variable has to be set</message>
                  </requireProperty>
                  <requireProperty>
                    <property>HIVE_CONF_DIR</property>
                    <message>HIVE_CONF_DIR env. variable has to be set</message>
                  </requireProperty>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <buildDirectory>${project.build.directory}</buildDirectory>
          </systemPropertyVariables>
        <additionalClasspathElements>
          <additionalClasspathElement>${HIVE_CONF_DIR}</additionalClasspathElement>
          <additionalClasspathElement>${HADOOP_CONF_DIR}</additionalClasspathElement>
        </additionalClasspathElements>
        <includes>
          <include>**/TestCrossDbOps.java</include>
          <include>**/TestEndToEnd.java</include>
          <include>**/TestMetadataObjectRetrieval.java</include>
          <include>**/TestMetadataPermissions.java</include>
          <include>**/TestMovingToProduction.java</include>
          <include>**/TestPerDatabasePolicyFile.java</include>
          <include>**/TestPrivilegeAtTransform.java</include>
          <include>**/TestPrivilegesAtDatabaseScope.java</include>
          <include>**/TestPrivilegesAtTableScope.java</include>
          <include>**/TestSandboxOps.java</include>
          <include>**/TestExportImportPrivileges.java</include>
          <include>**/TestUriPermissions.java</include>
          <include>**/TestRuntimeMetadataRetrieval.java</include>
          <include>**/TestOperations.java</include>
          <include>**/TestPrivilegesAtColumnScope.java</include>
        </includes>
        <argLine>-Dsentry.e2etest.hiveServer2Type=UnmanagedHiveServer2 -Dsentry.e2etest.DFSType=ClusterDFS</argLine>
       </configuration>
      </plugin>
      </plugins>
     </build>
   </profile>
   <profile>
     <id>cluster-hadoop-provider-db</id>
     <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.0</version>
          <executions>
            <execution>
              <id>enforce-property</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireProperty>
                    <property>HADOOP_CONF_DIR</property>
                    <message>HADOOP_CONF_DIR env. variable has to be set</message>
                  </requireProperty>
                  <requireProperty>
                    <property>HIVE_CONF_DIR</property>
                    <message>HIVE_CONF_DIR env. variable has to be set</message>
                  </requireProperty>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <buildDirectory>${project.build.directory}</buildDirectory>
          </systemPropertyVariables>
        <additionalClasspathElements>
          <additionalClasspathElement>${HIVE_CONF_DIR}</additionalClasspathElement>
          <additionalClasspathElement>${HADOOP_CONF_DIR}</additionalClasspathElement>
        </additionalClasspathElements>
        <includes>
          <include>**/TestDbCrossDbOps.java</include>
          <include>**/TestDbEndToEnd.java</include>
          <include>**/TestDbMetadataObjectRetrieval.java</include>
          <include>**/TestDbMetadataPermissions.java</include>
          <include>**/TestDbMovingToProduction.java</include>
          <include>**/TestDbPerDatabasePolicyFile.java</include>
          <include>**/TestDbPrivilegeAtTransform.java</include>
          <include>**/TestDbPrivilegesAtDatabaseScope.java</include>
          <include>**/TestDbPrivilegesAtTableScope.java</include>
          <include>**/TestDbSandboxOps.java</include>
          <include>**/TestDbExportImportPrivileges.java</include>
          <include>**/TestDbUriPermissions.java</include>
          <include>**/TestDbRuntimeMetadataRetrieval.java</include>
          <include>**/TestDatabaseProvider.java</include>
          <include>**/TestDbOperations.java</include>
          <include>**/TestPrivilegeWithGrantOption.java</include>
          <include>**/TestDbPrivilegesAtColumnScope.java</include>
          <include>**/TestColumnEndToEnd.java</include>
          <include>**/TestDbComplexView.java</include>
          <include>**/TestConcurrentClients</include>
        </includes>
        <argLine>-Dsentry.e2etest.hiveServer2Type=UnmanagedHiveServer2 -Dsentry.e2etest.DFSType=ClusterDFS -Dsentry.e2etest.external.sentry=true</argLine>
       </configuration>
      </plugin>
      </plugins>
     </build>
   </profile>
  </profiles>
</project>
