テスト・ハーネスの制御ファイル

nzudxharnessコマンドを実行すると、コマンドは'udfname_func.harnessまたは'udaname_agg.harnessというコントロールファイルを作成する。 制御ファイルは、テスト環境およびシミュレーション環境の詳細を指定するテキスト・ファイルです。

nzudxrunharness コマンドは、ハーネスの制御ファイルを現行ディレクトリーに作成します。 UDXテスト・ハーネス・セクションの'CustomerNameUDFの例では、コマンドは以下のコントロール・ファイルを作成し、使用した:
[nz@nzhost udx]$ more customername_func.harness
udxtype: udf
objectfile:/nz/data.1.0/base/2547310/udf/2928850.oh
udxname:customername
version: 2
numenvironments:0
numreturns:1
returninfo:16:-1:-1
numarguments:1
argument:1:64000:-1
classname:CCustomerName
fenced:t
deterministic:t
nullcall:t
memory:0
logmask:0
nulls:
numdependencies:0
undefined:vtable for __cxxabiv1::__class_type_info
undefined:vtable for __cxxabiv1::__si_class_type_info
undefined:operator delete[](void*)
undefined:operator delete(void*)
undefined:operator new(unsigned int)
undefined:__cxa_pure_virtual
undefined:__gxx_personality_v0
undefined:free
undefined:memcmp
undefined:sprintf
undefined:strcmp
undefined:strdup
undefined:throwError
inputdelim:,
inputquote: true
hexinput: false
printoutput: none
numrows: 100
validate: true
制御ファイルのパラメーターを編集してテスト環境を変更することができます。 udxharness バイナリーを使用して 1 つ以上の制御ファイルを指定し、1 つ以上の UDX、およびその対話を同じトランザクション・スコープ内でテストすることもできます。 例:
[nz@nzhost udx]$ udxharness -f customername_func.harness -f 
penmaxv2_agg.harness -k /nz/kit

このサンプル・コマンドは、同じテスト環境で customername UDF と PenMax UDA の両方を実行し、システムに与える影響を評価します。

以下の表で、ハーネスの制御ファイルのパラメーターについて説明します。

表 1. 制御ファイルのパラメータ. この表では、ユーザー定義オブジェクトに指定できるオプションとパラメーターについて説明します。
パラメーター 説明
UDF、UDA、および UDTF に共通のオプション
udxtype:タイプ UDX 型を指定します。 type は udf、uda、または udtf のいずれかでなければなりません。 このパラメーターは、制御ファイル内の最初のパラメーターである必要があります。
numarguments:num UDX の引数の数を指定します。 この直後に引数が続く必要があります。 ちょうど num 個の引数を指定する必要があります。
引数:インフォ num によって参照される引数の 1 つを指定します。 情報値のフォーマットはtype:typmod:scaleである。
  • type 値は、UdxBase C++ クラスからの DataType 列挙の 1 つです。
  • typmod 値は -1 か、ストリングのサイズ、あるいは数値の精度です。
  • scale 値は -1 または数値のスケールです。
クラス名:class UDX の C++ クラスを指定します。 このパラメーターは必須です。
datafile:ファイル 入力データ・ファイルを指定します。
numdependencies:num UDX のライブラリー依存関係の数を指定します。 この直後に依存関係が続く必要があります。 ちょうど num 個の依存関係を指定する必要があります。
依存関係:libinfo UDX のライブラリー依存関係を指定します。 ライブラリーは正しい順序で指定する必要があります。つまり、他のライブラリーに依存するライブラリーは、依存先のライブラリーの後にリストされる必要があります。 libinfo 値の形式は、auto,file,name となります。
  • auto 値は、自動ロードの場合は t で、手動ロードの場合は f です。
  • 名前はライブラリ名である。
  • file 値は、.so ライブラリー・オブジェクト・ファイルです。

スペースがファイルまたは名前の一部となっている場合を除き、コンマの前後にスペースを置くことはできません。

フェンシング: UDX を fenced モードと unfenced モードのどちらで実行するかを指定します。

true、t、on、yes、y、または 1 などのブール値を指定することで、UDX を fenced モードで実行することができます。 UDX を unfenced モードで実行するには、false、f、off、no、n、または 0 などの値を指定します。

シェイパー:バリュー UDX がサイザーとシェーパーのどちらを呼び出すかを指定します。 デフォルトは false です (サイザー/シェーパーを呼び出しません)。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

hexinput: 入力ファイルのデータが 16 進形式かどうかを指定します。 デフォルトは false です (16 進形式ではありません)。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

inputdelim:区切り文字 入力ファイルの区切り文字を指定します。 デフォルトはコンマです。
inputescape:エスケープ 入力ファイルのエスケープ文字を指定します。 デフォルトはエスケープ文字なしです。
inputquote: 入力ファイルのストリング・データに引用符を付けるかどうかを指定します。 デフォルトは false です (引用符なし)。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

ログマスク:マスク UDX のログ・マスクを指定します。 有効な値は、TRACE は 1、DEBUG は 2、DEBUG と TRACE の両方は 3、NONE は 0 です。 デフォルトは 0 です。
メモリー:mem UDX の最大メモリーを指定します。 サイズ値は、空の値にするか、数値と文字 b (バイト)、k (キロバイト)、m (メガバイト)、または g (ギガバイト) という形式の値にすることができます。 デフォルトは 0 です。
ヌル:コル ランダムに生成されるテスト・データを使用する際に、ランダムに NULL になる列を指定します (入力データ・ファイルを指定しない)。 cols 値は、列番号のコンマ区切りリストです。 列番号は 1 から始まります。
numreturns:num UDX の戻り列の数を指定します。 値は UDF と UDA では 1 ですが、UDTF では 1 以上になる場合があります。 この直後に戻り情報が続く必要があります。 ちょうど num 個の戻り値を指定する必要があります。 このパラメーターは必須です。
returninfo:情報 戻り情報を指定します。 info 値の形式は type:typmod:scale:name です。
  • type 値は、UdxBase C++ クラスからの DataType 列挙の 1 つです。
  • typmod 値は -1 か、ストリングのサイズ、あるいは数値の精度です。
  • scale 値は -1 または数値のスケールです。
  • name 値は UDTF でのみ使用されます。UDTF では name 値は列名を指定します。 UDTF の場合、戻り情報を正しい順序、つまり、表関数で列が宣言される順序と同じ順序で指定する必要があります。
numrows:num テストのために生成する、ランダムに生成される行の数を指定します。 このオプションは、入力データ・ファイルを指定しない場合にのみ使用されます。 デフォルトは 100 です。
objectfile:ファイル ホスト UDX オブジェクト・ファイルを指定します。 この値は必須です。
プリント出力:タイプ UDX の出力を表示する方法を指定します。 可能な値は normal、hex、または none です。 normal を指定すると、通常想定される出力が表示されます。hex を指定すると、ストリング表記の代わりに 16 進表記でストリングが表示されます。none を指定すると、出力は表示されません。 デフォルトはありません。
検証: バッファー・オーバーランの結果を検証するかどうかを指定します。これを指定すると、実行時間が増えます。 デフォルトは true です。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

udxname:名前 UDX の名前をデータベースで登録されているとおりに指定します。 この値は必須です。
未定義:シンボル オブジェクト・ファイルの未定義のシンボルを指定します。 シンボルは、指定しないことも、または 1 つ以上指定することもできます。 これは、潜在的に未解決の参照などの問題を示すためにのみ、プログラムによって表示されます。 このパラメーターは必須ではありません。
バージョン:ver UDX API のバージョンを指定します。 verの値は1か2。 デフォルトは 1 です。
UDA に固有のオプション
columnorder:カラムオーダー 集約を実行する際にグループ分けのために使用する列を指定します。 このパラメーターは、グループが変更されたときに InitializeState の呼び出しをトリガーします。

列は、データ・ファイル内の位置を指定する 1 を基準とした数値です。 このパラメーターは、データ入力ファイルを指定する場合、必須です。

グループ数:num データ入力ファイルの代わりにランダム・データを使用する際にシミュレートするグループの数を指定します。 デフォルトは 5 です。
numstate:num UDA の状態値の数を指定します。 この直後に状態が続く必要があります。 ちょうど num 個の状態を指定する必要があります。 このパラメーターは必須です。
状態:情報 UDA の状態値の 1 つを指定します。 info フィールドの形式は type:typmod:scale となります。
  • type 値は、UdxBase C++ クラスからの DataType 列挙の 1 つです。
  • typmod 値は -1 か、ストリングのサイズ、あるいは数値の精度です。
  • scale 値は -1 または数値のスケールです。
UDTF に固有のオプション
決定論的: UDF が deterministic かどうかを指定します。 デフォルトは true です。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

ヌルコール: 引数の 1 つが NULL のときに UDF を呼び出すかどうかを指定します。 デフォルトは false です。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

UDTF に固有のパラメーター
ラストコール: 最後の入力行の後 UDTF を呼び出すかどうかを指定します。 デフォルトは false です。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。

UDX バージョン 2 に固有のオプション
numenvironments:num UDX の環境値の数を指定します。 この直後に環境値が続く必要があります。 ちょうど num 個の変数を指定する必要があります。
環境:情報 UDX の環境項目を指定します。 info 値の形式は name, value となります。
  • name 値は、環境設定の名前を指定します。
  • 値は、環境設定の値です。
close: dlopen()で利用可能になったUNIX共有ライブラリへの参照を閉じるために、テストハーネスがCライブラリ関数'dlclose()を呼び出すかどうかを指定します。

true、t、on、yes、y、1 や false、f、off、no、n、0 などのブール値を指定することができます。 デフォルトは true で、'dlclose()呼び出す。

valgrind や callgrind などのデバッグ・ツール内でテスト・ハーネスを実行する場合、この値を false に設定します。そうすることで、dlclose() がハーネスによって自動的に呼び出されないようにします。 これにより、デバッグで使用できるシンボル名およびその他の値にアクセスできるようになります。ただし、これは dlclose() が呼び出された後に使用できなくなる可能性があります。 (valgrind デバッグ環境について詳しくは、http://valgrind.org を参照してください)。