Skip to content

Instantly share code, notes, and snippets.

@tamtam180
Last active December 16, 2015 01:19
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tamtam180/5354504 to your computer and use it in GitHub Desktop.
Save tamtam180/5354504 to your computer and use it in GitHub Desktop.

こんな感じ

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

Hiveのテストの仕方 ちょっとしたまとめ

ビルド

ant clean package

普通のテスト実行(全部)→ 4時間以上かかる

ant test
ant testreport

testreport をすると junit-nofrrames.html というファイルが出来る。 これを出力すると何がダメだったのかわかるので便利。

qファイルを使ったテスト全部実行(positiveTestのみ)

ant test -Dtestcase=TestCliDriver 
ant test -Dtestcase=TestCliDriver -Dtest.silent=false # ログをワラワラとみたい場合

個別テストの実行(qファイルを使ったpositiveTest)

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 をパラメータに追加すると、詳細な情報が出ます。

正解ファイル(.q.out)の作り方

ant test -Dtestcase=TestCliDriver -Dqfile=hogehoge.q -Doverwrite=true

これでhogehoge.q.outファイルが作られる。
手動で作るのはムリゲーなので overwrite=true で正解ファイルを作ること。

その他

positive-testの他にnegative-testもありますが、今回は関係ないので省略。

@tamtam180
Copy link
Author

手元の環境だと、DROP時にすぐにゴミ箱に入ってしまって、 hive.move.exported.metadata.to.trash このオプションが効いていないような気がしなくもない。
今のところ、自分の環境では成功しないけど、Hiveのテストのやり方として上記ドキュメントのような感じでやります。

@tamtam180
Copy link
Author

プロパティ名は hive.metadata.move.exported.metadata.to.trash が正しい。
つまり既存の「metadata_export_drop.q」はテスト内容間違ってる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment