cd $HIVE_HOME
# パッチをあててビルド
wget https://issues.apache.org/jira/secure/attachment/12577210/HIVE-4299.patch
patch -p0 < HIVE-4299.patch
ant clean package
# テストの内容作成(.qファイルを使ったpositiveテスト)
cat <<EOF >./ql/src/test/queries/clientpositive/hogehoge.q
CREATE TABLE tmp_meta_export_listener_import_test (id INT, name STRING);
dfs -mkdir ../build/ql/test/data/exports/HIVE-4299;
set hive.metastore.pre.event.listeners=org.apache.hadoop.hive.ql.parse.MetaDataExportListener;
set hive.metadata.export.location=../build/ql/test/data/exports/HIVE-4299;
set hive.move.exported.metadata.to.trash=false;
DROP TABLE tmp_meta_export_listener_import_test;
IMPORT TABLE tmp_meta_export_listener_import_test_imported FROM '../build/ql/test/data/exports/HIVE-4299';
EOF
# 普通に実行すると.q.outファイルが無いのでテストに失敗する。
# 最初に以下を実行して正解ファイルを作る。
ant test -Dtestcase=TestCliDriver -Dqfile=hogehoge.q -Doverwrite=true
# その後テストの実行(.q.outファイルを正解とみなして検証をする)
ant test -Dtestcase=TestCliDriver -Dqfile=hogehoge.q
ファイル名は metadata_export_import.q とかそれっぽいのにすると良いと思う。
もしくは、
HIVE-3427の時に修正されたテストケースに追加してもいいかも。
ql/src/test/queries/clientpositive/metadata_export_drop.q
その時はディレクトリをHIVE-3427からHIVE-4299に変えるといいかも。
# Permgenエラーがでる場合
export ANT_OPTS="-XX:MaxPermSize=512m -Xmx1024m"
# HCatalogのテストでこける時
umask 0022
ant clean package
ant test
ant testreport
testreport をすると junit-nofrrames.html というファイルが出来る。 これを出力すると何がダメだったのかわかるので便利。
ant test -Dtestcase=TestCliDriver
ant test -Dtestcase=TestCliDriver -Dtest.silent=false # ログをワラワラとみたい場合
ant test -Dtestcase=TestCliDriver -Dqfile=hogehoge.q
例えば ./ql/src/test/queries/clientpositive/udf_unix_timestamp.q を実行する場合は、
ant test -Dtestcase=TestCliDriver -Dqfile=udf_unix_timestamp.q
その場合の正解ファイルは以下
./ql/src/test/results/clientpositive/udf_unix_timestamp.q.out
-Dtest.silent=false をパラメータに追加すると、詳細な情報が出ます。
ant test -Dtestcase=TestCliDriver -Dqfile=hogehoge.q -Doverwrite=true
これでhogehoge.q.outファイルが作られる。
手動で作るのはムリゲーなので overwrite=true で正解ファイルを作ること。
positive-testの他にnegative-testもありますが、今回は関係ないので省略。
手元の環境だと、DROP時にすぐにゴミ箱に入ってしまって、 hive.move.exported.metadata.to.trash このオプションが効いていないような気がしなくもない。
今のところ、自分の環境では成功しないけど、Hiveのテストのやり方として上記ドキュメントのような感じでやります。