<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/maven-v4_0_0.xsd">

<!--
* @@@ START COPYRIGHT @@@
*
* 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.
*
* @@@ END COPYRIGHT @@@                                                         
-->
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>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.</comments>
    </license>
  </licenses>

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.hp.phoenix</groupId>
  <artifactId>phoenix_test</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>phoenix_test</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jdbc_path>MYJDBC_PATH</jdbc_path>

    <!-- START_FOR_T2_ONLY -->
    <hadoop_distro>MY_HADOOP_DISTRO</hadoop_distro>
    <hadoop_version>MY_HADOOP_VERSION</hadoop_version>
    <hadoop_mvn_url>MY_MVN_URL</hadoop_mvn_url>
    <hbase_version>MY_HBASE_VERSION</hbase_version>
    <hive_version>MY_HIVE_VERSION</hive_version>
    <zookeeper_version>MY_ZOOKEEPER_VERSION</zookeeper_version>
    <!-- END_FOR_T2_ONLY -->

  </properties>

  <!-- START_FOR_T2_ONLY -->
  <repositories>
    <repository>
      <id>${hadoop_distro}</id>
      <url>${hadoop_mvn_url}</url>
    </repository>
  </repositories>
  <!-- END_FOR_T2_ONLY -->

  <dependencies>
    <!-- START_FOR_T2_ONLY -->
    <!-- Most of the test dependencies up til the Trafodion test dependencies must exclude all transitive dependencies.
         Otherwise a CLASSPATH conflict will be encountered.  The following are excluded : 
         org.apache.hadoop:hadoop-auth.jar 
         commons-configuration:commons-configuration.jar -->
    <!-- START_DISTRO_DEP -->
    <dependency>
      <!-- Need both versions of htrace-core -->
      <groupId>org.htrace</groupId>
      <artifactId>htrace-core</artifactId>
      <version>3.0.4</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.cloudera.htrace</groupId>
      <artifactId>htrace-core</artifactId>
      <version>2.04</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>2.5.0</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.2</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>1.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.3</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>11.0.2</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.netty</groupId>
      <artifactId>netty</artifactId>
      <version>3.6.2.Final</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.5</version>
      <scope>test</scope>
    </dependency>

    <!-- Trafodion specific test dependencies -->

    <dependency>
      <groupId>hbase-trx</groupId>
      <artifactId>hbase-trx</artifactId>
      <version>${env.TRAFODION_VER}</version>
      <scope>system</scope>
      <systemPath>${env.TRAF_HOME}/export/lib/TRAF_HBASE_TRX_FILE</systemPath>
    </dependency>

    <dependency>
      <groupId>org.trafodion.dtm</groupId>
      <artifactId>trafodion-dtm</artifactId>
      <version>${env.TRAFODION_VER}</version>
      <scope>system</scope>
      <systemPath>${env.TRAF_HOME}/export/lib/${env.DTM_COMMON_JAR}</systemPath>
     </dependency>

    <dependency>
      <groupId>org.trafodion.sql</groupId>
      <artifactId>trafodion-sql</artifactId>
      <version>${env.TRAFODION_VER}</version>
      <scope>system</scope>
      <systemPath>${env.TRAF_HOME}/export/lib/${env.SQL_JAR}</systemPath>
     </dependency>

    <!-- END_FOR_T2_ONLY -->

    <dependency>
      <groupId>MYJDBC_GROUP_ID</groupId>
      <artifactId>MYJDBC_ART_ID</artifactId>
      <version>1</version>
      <scope>system</scope>
      <systemPath>${jdbc_path}</systemPath>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.collections</groupId>
      <artifactId>google-collections</artifactId>
      <version>1.0-rc2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
        <configuration>

          <systemPropertyVariables>
            <trafjdbc.properties>jdbcprop</trafjdbc.properties>
            <user.timezone>UTC</user.timezone>
            <buildDirectory>${project.build.directory}</buildDirectory>
          </systemPropertyVariables>
          <!-- START_FOR_T2_ONLY -->
          <!-- <argLine>-Xcheck:jni -Dsurefire.useFile=false -Duser.timezone=GMT</argLine> -->
          <!-- <argLine>-Xcheck:jni -Xmx1024m -XX:MaxPermSize=512m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps XX:+HeapDumpOnOutOfMemoryError</argLine> -->
          <additionalClasspathElements>
            <additionalClasspathElement>${env.HADOOP_CNF_DIR}</additionalClasspathElement>
            <additionalClasspathElement>${env.HBASE_CNF_DIR}</additionalClasspathElement>
            <additionalClasspathElement>${env.HIVE_CNF_DIR}</additionalClasspathElement>
            <additionalClasspathElement>${env.HBASE_TRXDIR}</additionalClasspathElement>
          </additionalClasspathElements>
          <!-- For T2 tests Maven should fork only ONCE since T2 cannot handle parallel DDL operations -->
          <forkCount>1</forkCount>
          <reuseForks>false</reuseForks>
          <environmentVariables>
            <LANG>${env.LANG}</LANG>
            <HADOOP_CNF_DIR>${env.HADOOP_CNF_DIR}</HADOOP_CNF_DIR>
            <HBASE_CNF_DIR>${env.HBASE_CNF_DIR}</HBASE_CNF_DIR>
            <HIVE_CNF_DIR>${env.HIVE_CNF_DIR}</HIVE_CNF_DIR>
            <HBASE_TRXDIR>${env.HBASE_TRXDIR}</HBASE_TRXDIR>
            <SQ_MBTYPE>${env.SQ_MBTYPE}</SQ_MBTYPE>
            <TRAF_HOME>${env.TRAF_HOME}</TRAF_HOME>
            <TRAFODION_VER>${env.TRAFODION_VER}</TRAFODION_VER>
            <MPI_TMPDIR>${env.MPI_TMPDIR}</MPI_TMPDIR>
            <LD_PRELOAD>${env.LD_PRELOAD}</LD_PRELOAD>
            <LD_LIBRARY_PATH>${env.LD_LIBRARY_PATH}</LD_LIBRARY_PATH>
            <PATH>${env.PATH}</PATH>
          </environmentVariables>
          <!-- END_FOR_T2_ONLY -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
