<!--
   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 name="TestHarnessPigTests" default="test">

  <property name="pig.dir" value="${basedir}/../../.."/>
  <property name="pig.base.dir" value="${basedir}/../../.."/>
  <property name="ivy.dir" location="${pig.base.dir}/ivy" />
  <loadproperties srcfile="${ivy.dir}/libraries.properties"/>

  <property name="piggybank.jar"
	value="${pig.base.dir}/contrib/piggybank/java/piggybank.jar"/>
  <property name="hive.lib.dir"
	value="${pig.base.dir}/build/ivy/lib/Pig"/>

  <property name="hadoopversion" value="2" />
  <property name="hive.hadoop.shims.version" value="0.23" />

  <property name="mvnrepo" value="http://repo2.maven.org/maven2"/>

  <!-- Separate property name for udfs' build.xml -->
  <property name="udf.dir" value="${basedir}/udfs"/>
  <property name="udf.java.dir" value="${udf.dir}/java"/>
  <property name="udf.jar" value="${udf.java.dir}/testudf.jar"/>
  <property name="python.udf.dir" value="${udf.dir}/python"/>
  <property name="js.udf.dir" value="${udf.dir}/js" />
  <property name="ruby.udf.dir" value="${udf.dir}/ruby" />
  <property name="groovy.udf.dir" value="${udf.dir}/groovy" />
  <property name="cpython.udf.dir" value="${udf.dir}/cpython" />
  <property name="params.dir" value="${basedir}/paramfiles"/>
  <property name="e2e.lib.dir" value="${basedir}/lib"/>
  <property name="streaming.dir" value="${basedir}/streaming"/>
  <property name="macro.dir" value="${basedir}/macros"/>

  <property name="tar.name" value="${basedir}/pigtests.tar"/>
  <property name="tar.dir" value="${basedir}/tar"/>
  <property name="test.src" value="${basedir}/tests"/>
  <property name="driver.src" value="${basedir}/drivers"/>
  <property name="deployer.src" value="${basedir}/deployers"/>
  <property name="conf.src" value="${basedir}/conf"/>
  <property name="resource.src" value="${basedir}/resource"/>
  <property name="tool.src" value="${basedir}/tools"/>

  <property name="harness.dir" value="${basedir}/../harness"/>
  <property name="harness.tar" value="${harness.dir}/harness.tar"/>
  <property name="harness.PH_LOCAL" value="."/>
  <property name="harness.PH_OUT" value="."/>
  <property name="harness.PERL5LIB" value="./libexec"/>
  <property name="harness.user.home" value="/user/pig" />

  <property name="test.location" value="${basedir}/testdist"/>
  <property name="benchmark.location" value="${test.location}/benchmarks"/>


  <condition property="harness.old.pig" value="">
    <not>  
      <isset property="harness.old.pig"/>
    </not>
  </condition>

  <condition property="HADOOP_PREFIX" value="">
    <not>  
      <isset property="HADOOP_PREFIX"/>
    </not>
  </condition>

  <condition property="HADOOP_COMMON_HOME" value="">
    <not>  
      <isset property="HADOOP_COMMON_HOME"/>
    </not>
  </condition>

  <condition property="HADOOP_HDFS_HOME" value="">
    <not>  
      <isset property="HADOOP_HDFS_HOME"/>
    </not>
  </condition>

  <condition property="HADOOP_MAPRED_HOME" value="">
    <not>  
      <isset property="HADOOP_MAPRED_HOME"/>
    </not>
  </condition>

  <condition property="YARN_CONF_DIR" value="">
    <not>  
      <isset property="YARN_CONF_DIR"/>
    </not>
  </condition>

  <condition property="YARN_HOME" value="">
    <not>  
      <isset property="YARN_HOME"/>
    </not>
  </condition>

  <condition property="OLD_HADOOP_HOME" value="">
    <not>  
      <isset property="OLD_HADOOP_HOME"/>
    </not>
  </condition>

  <condition property="PH_OLD_CLUSTER_CONF" value="">
    <not>  
      <isset property="PH_OLD_CLUSTER_CONF"/>
    </not>
  </condition>

  <condition property="hcat.bin" value="hcat">
    <not>
      <isset property="hcat.bin"/>
    </not>
  </condition>

  <condition property="PH_BENCHMARK_CACHE_PATH" value="">
    <not>  
      <isset property="PH_BENCHMARK_CACHE_PATH"/>
    </not>
  </condition>

  <pathconvert property="tests.suites.all" pathsep=" ">
      <path path="${test.location}/tests/cmdline.conf"/>
      <path path="${test.location}/tests/multiquery.conf"/>
      <path path="${test.location}/tests/negative.conf"/>
      <path path="${test.location}/tests/nightly.conf"/>
      <path path="${test.location}/tests/join.conf"/>
      <path path="${test.location}/tests/streaming.conf"/>
      <path path="${test.location}/tests/streaming_local.conf"/>
      <path path="${test.location}/tests/turing_jython.conf"/>
      <path path="${test.location}/tests/bigdata.conf"/>
      <path path="${test.location}/tests/grunt.conf"/>
      <path path="${test.location}/tests/macro.conf"/>
      <path path="${test.location}/tests/orc.conf"/>
      <path path="${test.location}/tests/hcat.conf"/>
      <path path="${test.location}/tests/utf8.conf"/>
  </pathconvert>

  <condition property="tests.suites" value="${tests.suites.all}">
    <not>
      <isset property="tests.suites"/>
    </not>
  </condition>

  <target name="udfs">
    <ant dir="${udf.java.dir}"/>
  </target>

  <!-- Build an archive to use in the tests -->
  <target name="tar" description="Create tar file with pig modules" depends="download-datafu">
    <mkdir dir="${tar.dir}"/>
    <mkdir dir="${tar.dir}/tests"/>
    <mkdir dir="${tar.dir}/drivers"/>
    <mkdir dir="${tar.dir}/deployers"/>
    <mkdir dir="${tar.dir}/conf"/>
    <mkdir dir="${tar.dir}/libexec"/>
    <mkdir dir="${tar.dir}/libexec/PigTest"/>
    <mkdir dir="${tar.dir}/libexec/PigTest/test"/>
    <mkdir dir="${tar.dir}/libexec/PigTest/generate"/>
    <mkdir dir="${tar.dir}/libexec/python"/>
    <mkdir dir="${tar.dir}/libexec/js"/>
    <mkdir dir="${tar.dir}/libexec/ruby"/>
    <mkdir dir="${tar.dir}/libexec/groovy"/>
    <mkdir dir="${tar.dir}/libexec/cpython"/>
    <mkdir dir="${tar.dir}/lib"/>
    <mkdir dir="${tar.dir}/lib/java"/>
    <mkdir dir="${tar.dir}/paramfiles"/>

    <copy todir="${tar.dir}/tests">
        <fileset dir="${test.src}">
        </fileset>
    </copy>

    <copy todir="${tar.dir}">
      <fileset dir="${driver.src}">
        <exclude name="TestDriverScript.pm"/>
      </fileset>
      <fileset dir="${deployer.src}"/>
    </copy>


    <copy todir="${tar.dir}/conf">
      <fileset dir="${conf.src}"/>
    </copy>

    <copy todir="${tar.dir}/resource">
      <fileset dir="${resource.src}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/PigTest">
      <fileset dir="${tool.src}/test"/>
      <fileset dir="${tool.src}/generate"/>
    </copy>

    <copy todir="${tar.dir}/lib">
      <fileset dir="${e2e.lib.dir}"/>
    </copy>

    <copy todir="${tar.dir}/lib/java">
      <fileset file="${udf.jar}"/>
    </copy>

    <copy todir="${tar.dir}/libexec">
      <fileset dir="${streaming.dir}"/>
      <fileset dir="${macro.dir}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/python">
      <fileset dir="${python.udf.dir}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/js">
      <fileset dir="${js.udf.dir}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/ruby">
      <fileset dir="${ruby.udf.dir}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/groovy">
      <fileset dir="${groovy.udf.dir}"/>
    </copy>

    <copy todir="${tar.dir}/libexec/cpython">
      <fileset dir="${cpython.udf.dir}"/>
    </copy>

    <copy todir="${tar.dir}/paramfiles">
      <fileset file="${params.dir}/params_3"/>
    </copy>

    <tar destfile="${tar.name}" basedir="${tar.dir}"/>
  </target>

  <!-- Get the tarball for the harness -->
  <target name="build-harness">
    <ant dir="${harness.dir}" inheritAll="false"/>
  </target>

  <!-- Check that the necessary properties are setup -->
  <target name="property-check">
    <fail message="Please set the property harness.cluster.conf to the conf directory of your hadoop installation,harness.hadoop.home to HADOOP_HOME for your Hadoop installation and harness.cluster.bin to the binary executable of your hadoop installation.">
        <condition>
            <not>
                <and>
                <isset property="harness.cluster.conf"/>
                <isset property="harness.hadoop.home"/>
                <isset property="harness.cluster.bin"/>
                </and>
            </not>
        </condition>
    </fail>
  </target>

  <!-- Prep the test area -->
  <target name="init-test" depends="build-harness">
    <mkdir dir="${test.location}"/>
    <mkdir dir="${benchmark.location}"/>

    <untar src="${tar.name}" dest="${test.location}"/>
    <untar src="${harness.tar}" dest="${test.location}"/>

    <chmod perm="ugo+x" type="file">
      <fileset dir="${test.location}/libexec" />
      <fileset file="${test.location}/test_harness.pl"/>
    </chmod>

  </target>


  <!-- By default this runs in mapred mode on a cluster.  To run it in local
  mode set -Dharness.exec.mode=local -->

  <target name="test-base" depends="property-check, udfs, tar, init-test">
    <!-- If they have not specified tests to run then null it out -->
    <property name="tests.to.run" value=""/>
    <!-- fork (parallelization) factors for e2e tests execution. 
	Defaults are 1, which means *no* parellelization: -->
    <property name="fork.factor.group" value="1"/>
    <property name="fork.factor.conf.file" value="1"/>
    <property name="hadoop.mapred.local.dir" value="/tmp/hadoop/mapred/local"/>
    <property name="e2e.debug" value="false"/>
    <property name="harness.use.python" value="false"/>

    <exec executable="perl" dir="${test.location}" failonerror="true">
      <env key="HARNESS_ROOT" value="."/>
      <env key="HADOOP_VERSION" value="${hadoopversion}"/>
      <env key="PH_LOCAL" value="${harness.PH_LOCAL}"/>
      <env key="PH_OUT" value="${harness.PH_OUT}"/>
      <env key="PH_ROOT" value="."/>
      <env key="PH_PIG" value="${pig.dir}"/>
      <env key="PH_OLDPIG" value="${harness.old.pig}"/>
      <env key="HADOOP_CONF_DIR" value="${harness.cluster.conf}"/>
      <env key="PIG_USE_PYTHON" value="${harness.use.python}"/>
      <env key="PH_CLUSTER_BIN" value="${harness.cluster.bin}"/>
      <env key="PH_PIGGYBANK_JAR" value="${piggybank.jar}"/>
      <env key="PH_HIVE_LIB_DIR" value="${hive.lib.dir}"/>
      <env key="PH_HIVE_VERSION" value="${hive.version}"/>
      <env key="PH_HIVE_SHIMS_VERSION" value="${hive.hadoop.shims.version}"/>
      <env key="PH_HDFS_BASE" value="${harness.user.home}" />
      <env key="HARNESS_CONF" value="${harness.conf.file}"/>
      <env key="HADOOP_HOME" value="${harness.hadoop.home}"/>
      <env key="HADOOP_PREFIX" value="${HADOOP_PREFIX}"/>
      <env key="HADOOP_COMMON_HOME" value="${HADOOP_COMMON_HOME}"/>
      <env key="HADOOP_HDFS_HOME" value="${HADOOP_HDFS_HOME}"/>
      <env key="HADOOP_MAPRED_HOME" value="${HADOOP_MAPRED_HOME}"/>
      <env key="YARN_CONF_DIR" value="${YARN_CONF_DIR}"/>
      <env key="YARN_HOME" value="${YARN_HOME}"/>
      <env key="OLD_HADOOP_HOME" value="${OLD_HADOOP_HOME}"/>
      <env key="PH_OLD_CLUSTER_CONF" value="${PH_OLD_CLUSTER_CONF}"/>
      <env key="PH_BENCHMARK_CACHE_PATH" value="${PH_BENCHMARK_CACHE_PATH}"/>
      <env key="HCAT_BIN" value="${hcat.bin}"/>
      <env key="PERL5LIB" value="${harness.PERL5LIB}"/>
      <env key="FORK_FACTOR_GROUP" value="${fork.factor.group}"/>
      <env key="FORK_FACTOR_FILE" value="${fork.factor.conf.file}"/>
      <env key="HADOOP_MAPRED_LOCAL_DIR" value="${hadoop.mapred.local.dir}"/>
      <env key="E2E_DEBUG" value="${e2e.debug}"/>
      <env key="SORT_BENCHMARKS" value="${sort.benchmarks}"/>

      <arg value="./test_harness.pl"/>
      <arg line="${tests.to.run} ${tests.suites}"/>
    </exec>
  </target>

  <target name="test">
    <antcall target="test-base">
      <param name="harness.conf.file" value="${basedir}/conf/default.conf"/>
    </antcall>
  </target>

  <target name="test-local">
    <antcall target="test-base">
      <param name="harness.conf.file" value="${basedir}/conf/local.conf"/>
    </antcall>
  </target>

  <target name="test-tez">
    <antcall target="test-base">
      <param name="harness.conf.file" value="${basedir}/conf/tez.conf"/>
    </antcall>
  </target>

  <target name="test-spark">
    <antcall target="test-base">
      <param name="harness.conf.file" value="${basedir}/conf/spark.conf"/>
    </antcall>
  </target>

  <target name="deploy-base" depends="property-check, tar, init-test">
    <exec executable="perl" dir="${test.location}" failonerror="true">
      <env key="HARNESS_ROOT" value="."/>
      <env key="PH_LOCAL" value="${harness.PH_LOCAL}"/>
      <env key="PH_OUT" value="${harness.PH_OUT}"/>
      <env key="PH_ROOT" value="."/>
      <env key="PH_PIG" value="${pig.dir}"/>
      <env key="PH_OLDPIG" value="${harness.old.pig}"/>
      <env key="HADOOP_CONF_DIR" value="${harness.cluster.conf}"/>
      <env key="PH_CLUSTER_BIN" value="${harness.cluster.bin}"/>
      <env key="HARNESS_CONF" value="${harness.conf.file}"/>
      <env key="HADOOP_HOME" value="${harness.hadoop.home}"/>
      <env key="PH_HDFS_BASE" value="${harness.user.home}" />

      <arg value="./test_harness.pl"/>
      <arg value="-deploycfg"/>
      <arg value="${deploy.conf}"/>
      <arg value="${deploy.opt}"/>
      <!-- Give a bogus test so it just does the deployment -->
      <arg value="-t"/>
      <arg value="NoSuchTest"/>
      <arg value="${test.location}/tests/nightly.conf"/>
    </exec>
  </target>

  <target name="deploy">
    <antcall target="deploy-base">
      <param name="deploy.opt" value="-deploy"/>
      <param name="deploy.conf"
        value="${test.location}/conf/existing_deployer.conf"/>
      <param name="harness.conf.file" value="${basedir}/conf/default.conf"/>
    </antcall>
  </target>

  <target name="undeploy">
    <antcall target="deploy-base">
      <param name="deploy.opt" value="-undeploy"/>
      <param name="deploy.conf"
        value="${test.location}/conf/existing_deployer.conf"/>
      <param name="harness.conf.file" value="${basedir}/conf/default.conf"/>
    </antcall>
  </target>

  <target name="deploy-local">
    <antcall target="deploy-base">
      <param name="deploy.opt" value="-deploy"/>
      <param name="deploy.conf"
        value="${test.location}/conf/local_deployer.conf"/>
      <param name="harness.conf.file" value="${basedir}/conf/local.conf"/>
    </antcall>
  </target>

  <target name="undeploy-local">
    <antcall target="deploy-base">
      <param name="deploy.opt" value="-undeploy"/>
      <param name="deploy.conf"
        value="${test.location}/conf/local_deployer.conf"/>
      <param name="harness.conf.file" value="${basedir}/conf/local.conf"/>
    </antcall>
  </target>

  <target name="deploy-test" depends="deploy, test"/>

  <target name="deploy-test-undeploy" depends="deploy, test, undeploy"/>

  <target name="clean">
    <delete dir="${test.location}"/>
    <delete file="${tar.name}"/>
    <delete dir="${tar.dir}"/>
    <ant dir="${udf.java.dir}" target="clean"/>
  </target>

  <target name="download-datafu" description="To download datafu" unless="offline">
    <mkdir dir="lib/java"/>
    <get src="${mvnrepo}/com/linkedin/datafu/datafu/1.2.0/datafu-1.2.0.jar"
        dest="lib/java/datafu.jar"/>
  </target>

</project>


