Author: daijy Date: Tue Jul 16 23:03:19 2013 New Revision: 1503940 URL: http://svn.apache.org/r1503940 Log: HIVE-4820 : webhcat_config.sh should set default values for HIVE_HOME and HCAT_PREFIX that work with default build tree structure (Eugene Koifman via Jianyong Dai)
Modified: hive/trunk/RELEASE_NOTES.txt hive/trunk/hcatalog/bin/hcat hive/trunk/hcatalog/build-support/ant/deploy.xml hive/trunk/hcatalog/build-support/ant/test.xml hive/trunk/hcatalog/build.xml hive/trunk/hcatalog/webhcat/svr/src/main/bin/webhcat_config.sh hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hcatalog/templeton/TestWebHCatE2e.java Modified: hive/trunk/RELEASE_NOTES.txt URL: http://svn.apache.org/viewvc/hive/trunk/RELEASE_NOTES.txt?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/RELEASE_NOTES.txt (original) +++ hive/trunk/RELEASE_NOTES.txt Tue Jul 16 23:03:19 2013 @@ -15,6 +15,7 @@ Release Notes - Hive - Version 0.11.0 * [HIVE-4326] - Clean up remaining items in hive/hcatalog/historical/trunk ** Bug + * [HIVE-4820] - webhcat_config.sh should set default values for HIVE_HOME and HCAT_PREFIX that work with default build tree structure * [HIVE-2264] - Hive server is SHUTTING DOWN when invalid queries beeing executed. * [HIVE-2332] - If all of the parameters of distinct functions are exists in group by columns, query fails in runtime * [HIVE-2689] - ObjectInspectorConverters cannot convert Void types to Array/Map/Struct types. Modified: hive/trunk/hcatalog/bin/hcat URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/bin/hcat?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/bin/hcat (original) +++ hive/trunk/hcatalog/bin/hcat Tue Jul 16 23:03:19 2013 @@ -34,8 +34,14 @@ done bin=`dirname "$this"` script=`basename "$this"` bin=`unset CDPATH; cd "$bin"; pwd` -this="$bin/$script" - +this="$bin/$script" +#to preserve value of 'this' since any other file that defines 'this' and is sourced +#here (e.g. hcat-config.sh) will overwrite it +this_hcat=$this + +function echoerr() { + echo "${this_hcat}: $@" 1>&2 +} if [ -e "$bin/../libexec/hcat-config.sh" ]; then . "$bin"/../libexec/hcat-config.sh @@ -60,7 +66,8 @@ done # check for hive in the path HIVE_IN_PATH=`which hive 2>/dev/null` -if [ -f ${HIVE_IN_PATH} ]; then +# looks like [ -f '' ] is true... +if [ -n ${HIVE_IN_PATH} ]; then #dir of hive scrip HIVE_DIR=`dirname "$HIVE_IN_PATH"` #one level up for base dir @@ -70,8 +77,14 @@ fi # HIVE_HOME env variable overrides hive in the path HIVE_HOME=${HIVE_HOME:-$HIVE_DIR} +#if hive is not in path and not set by env, set it to default in build tree +if [ -n ${HIVE_HOME} ]; then + HIVE_HOME="${bin}/../.." + echoerr "HIVE_HOME is not defined; assuming ${HIVE_HOME}"; +fi + if [ "$HIVE_HOME" == "" ]; then - echo "Cannot find hive installation: \$HIVE_HOME must be set or hive must be in the path"; + echo "${this_hcat}: Cannot find hive installation: \$HIVE_HOME must be set or hive must be in the path"; exit 4; fi @@ -87,13 +100,13 @@ fi HIVE_LIB_DIR=${HIVE_HOME}/lib if [ ! -d "$HIVE_LIB_DIR" ]; then - echo "Cannot find lib dir within HIVE_HOME : $HIVE_LIB_DIR"; + echo "${this_hcat}: Cannot find lib dir within HIVE_HOME : $HIVE_LIB_DIR"; exit 4; fi HIVE_CONF_DIR=${HIVE_CONF_DIR:-$HIVE_HOME/conf} if [ ! -d "$HIVE_CONF_DIR" ]; then - echo "Cannot find conf dir within HIVE_HOME : $HIVE_CONF_DIR"; + echo "${this_hcat}: Cannot find conf dir within HIVE_HOME : $HIVE_CONF_DIR"; exit 4; fi Modified: hive/trunk/hcatalog/build-support/ant/deploy.xml URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/build-support/ant/deploy.xml?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/build-support/ant/deploy.xml (original) +++ hive/trunk/hcatalog/build-support/ant/deploy.xml Tue Jul 16 23:03:19 2013 @@ -69,7 +69,7 @@ <_mvnpublish module="testutils" /> </target> - <target name="mvn-init" unless="mvn-init.complete"> + <target name="mvn-init" unless="mvn-init.complete" description="Get Maven Ant Tasts jar and deploy all Hive jars to local Maven repo"> <echo message="${ant.project.name}"/> <get src="${mvnrepo}/org/apache/maven/maven-ant-tasks/${maven-ant-tasks.version}/maven-ant-tasks-${maven-ant-tasks.version}.jar" dest="${path.to.basedir}/build/maven-ant-tasks-${maven-ant-tasks.version}.jar" Modified: hive/trunk/hcatalog/build-support/ant/test.xml URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/build-support/ant/test.xml?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/build-support/ant/test.xml (original) +++ hive/trunk/hcatalog/build-support/ant/test.xml Tue Jul 16 23:03:19 2013 @@ -47,6 +47,9 @@ <sysproperty key="hive.metastore.warehouse.dir" value="${test.warehouse.dir}"/> <sysproperty key="java.security.krb5.realm" value=""/> <!-- HADOOP-7489 --> <sysproperty key="java.security.krb5.kdc" value=""/> <!-- HADOOP-7489 --> + <!--HCAT_PREFIX, HIVE_HOME are needed by WebHCat tests--> + <env key="HCAT_PREFIX" value="${env.HCAT_PREFIX}"/> + <env key="HIVE_HOME" value="${env.HIVE_HOME}"/> <classpath> <path refid="test.class.path"/> <pathelement location="${clover.jar}"/> Modified: hive/trunk/hcatalog/build.xml URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/build.xml?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/build.xml (original) +++ hive/trunk/hcatalog/build.xml Tue Jul 16 23:03:19 2013 @@ -28,6 +28,8 @@ <property name="path.to.basedir" location="${basedir}"/> <property name="test.result.dir" location="${build.dir.hive}/hcatalog/test" description="location to place TEST-*.xml files so that hive's testreport includes them"/> + <property name="hive.dist.dir" location="${build.dir.hive}/dist" + description="where all hive build artifacts are placed to make binary tar ball"/> <loadproperties srcfile="${basedir}/build.properties"/> <!-- @@ -108,6 +110,8 @@ </ant> <ant target="test" dir="webhcat/svr" inheritAll="false"> <property name="test.result.dir" location="${test.result.dir}"/> + <property name="env.HIVE_HOME" value="${hive.dist.dir}"/> + <property name="env.HCAT_PREFIX" value="${hive.dist.dir}/hcatalog"/> </ant> <ant target="test" dir="webhcat/java-client" inheritAll="false"> <property name="test.result.dir" location="${test.result.dir}"/> Modified: hive/trunk/hcatalog/webhcat/svr/src/main/bin/webhcat_config.sh URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/webhcat/svr/src/main/bin/webhcat_config.sh?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/webhcat/svr/src/main/bin/webhcat_config.sh (original) +++ hive/trunk/hcatalog/webhcat/svr/src/main/bin/webhcat_config.sh Tue Jul 16 23:03:19 2013 @@ -18,6 +18,12 @@ # under the License. +# Print an error message and exit +function die() { + echo "${this}: $@" 1>&2 + exit 1 +} + #==================================== #Default config param values #==================================== @@ -71,6 +77,23 @@ else fi WEBHCAT_CONF_DIR="${WEBHCAT_CONF_DIR:-$DEFAULT_CONF_DIR}" +#set defaults for HCAT_PREFIX, HIVE_HOME, TEMPLETON_HOME that work for default directory structure +DEFAULT_HCAT_PREFIX="${WEBHCAT_PREFIX}" +export HCAT_PREFIX="${HCAT_PREFIX:-$DEFAULT_HCAT_PREFIX}" +if [ ! -f ${HCAT_PREFIX}/bin/hcat ]; then + die "HCAT_PREFIX=${HCAT_PREFIX} is invalid"; +fi +DEFAULT_HIVE_HOME="${WEBHCAT_PREFIX}/.." +export HIVE_HOME="${HIVE_HOME:-$DEFAULT_HIVE_HOME}" +if [ ! -f ${HIVE_HOME}/bin/hive ]; then + die "HIVE_HOME=${HIVE_HOME} is invalid"; +fi +DEFAULT_TEMPLETON_HOME="${WEBHCAT_PREFIX}" +export TEMPLETON_HOME="${TEMPLETON_HOME:-$DEFAULT_TEMPLETON_HOME}" +if [ ! -d ${TEMPLETON_HOME}/share/webhcat ]; then + die "TEMPLETON_HOME=${TEMPLETON_HOME} is invalid"; +fi + #users can add various env vars to webhcat-env.sh in the conf #rather than having to export them before running the command if [ -f "${WEBHCAT_CONF_DIR}/webhcat-env.sh" ]; then @@ -89,6 +112,6 @@ elif [ -f ${WEBHCAT_PREFIX}/bin/hadoop ] HADOOP_PREFIX=$WEBHCAT_PREFIX #otherwise see if HADOOP_PREFIX is defined elif [ ! -f ${HADOOP_PREFIX}/bin/hadoop ]; then - echo "Hadoop not found." + echo "${this}: Hadoop not found." exit 1 fi Modified: hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hcatalog/templeton/TestWebHCatE2e.java URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hcatalog/templeton/TestWebHCatE2e.java?rev=1503940&r1=1503939&r2=1503940&view=diff ============================================================================== --- hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hcatalog/templeton/TestWebHCatE2e.java (original) +++ hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hcatalog/templeton/TestWebHCatE2e.java Tue Jul 16 23:03:19 2013 @@ -28,6 +28,7 @@ import org.apache.commons.httpclient.met import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.hadoop.hive.ql.ErrorMsg; import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; @@ -62,8 +63,7 @@ public class TestWebHCatE2e { private static final String ERROR_CODE = "errorCode"; private static Main templetonServer; private static final String charSet = "UTF-8"; - // "not ready due to HIVE-4820" - //@BeforeClass + @BeforeClass public static void startHebHcatInMem() { templetonServer = new Main(new String[] {"-D" + AppConfig.UNIT_TEST_MODE + "=true"}); LOG.info("Starting Main"); @@ -78,7 +78,6 @@ public class TestWebHCatE2e { LOG.info("Main stopped"); } } - @Ignore("not ready due to HIVE-4820") @Test public void getStatus() throws IOException { LOG.debug("+getStatus()"); @@ -100,7 +99,6 @@ public class TestWebHCatE2e { * Check that we return correct status code when the URL doesn't map to any method * in {@link Server} */ - @Ignore("not ready due to HIVE-4820") @Test public void invalidPath() throws IOException { MethodCallRetVal p = doHttpCall(templetonBaseUrl + "/no_such_mapping/database", HTTP_METHOD_TYPE.GET);