29.1. テストの実行

リグレッションテストは既にインストールされ稼働中のサーバや、ビルドツリー内の一時的なインストレーションに対して実行することができます。 さらに、テストの実行には、"並行""連続"モードがあります。 連続モードでは、1つずつテストスクリプトを実行します。 並行モードでは複数のサーバプロセスを実行し、テストをグループ化して並行的に実行します。 並行テストではプロセス間通信とロック機能が正常に作動しているかをテストします。 歴史的理由により、連続テストは存在するインストレーションに対して行われ、並行テストでは一時的なインストレーションに対して行われます。 これらに技術的根拠はありません。

構築後、リグレッションテストをインストールの前に行う場合は、最上位のディレクトリで以下のように入力してください。

gmake check

(または、src/test/regressディレクトリに移動して、そこで実行してください。) これを実行したら、ユーザ定義のトリガ関数のサンプルなどの複数の補助ファイルがまず作成され、それからテストドライバのスクリプトを実行します。 終了したら、以下のような表示がされるはずです。

======================
 All 100 tests passed.
======================

これが表示されなければ、テストは失敗したことになります。 "失敗"が深刻な問題なのかどうかを決め付ける前に、下記の項29.2を参照してください。

この試験方法では、一時的にサーバを起動させるため、rootユーザでは動作しません (サーバはrootでは起動しません)。 rootで構築作業を行ったとしても、全てを最初からやり直す必要はありません。 リグレッションテストのディレクトリを他のあるユーザに書き込める権限を与え、そのユーザになり、テストを再実行してください。 例えば、以下のようにします。

root# chmod -R a+w src/test/regress
root# chmod -R a+w contrib/spi
root# su - joeuser
joeuser$ cd top-level build directory
joeuser$ gmake check

(この方法には"セキュリティ問題"が1つだけあります。 それは、別のユーザがこっそりリグレッションテストの結果を変更することが可能ということです。 ユーザ権限の付与には常識を働かせてください。)

また、インストール後にテストを実行することも可能です。

古いPostgreSQLのインストレーションが既に存在している場所にPostgreSQLをインストールするように構築した場合、新しいバージョンをインストールする前にgmake checkを行うと、新しいプログラムがインストール済みの共有ライブラリを使用しようとするために試験が失敗することになります (典型的な症状は、未定義シンボルに関するエラーメッセージです)。 古いインストレーションを上書きする前に試験を行いたいのであれば、configure --disable-rpathで構築する必要があります。 しかし、このオプションを最終的なインストレーションで使用することは推奨しません。

並行リグレッションテストはユーザのユーザIDを使用して相当数のプロセスを起動します。 現在、最大で20個の並行テストスクリプトが同時に実行されます。 その場合各テストスクリプトで、サーバプロセス、psqlプロセスが存在しますので、合計40個のプロセスが実行されることになります。 ですので、使用するシステムでユーザ当たりのプロセス数に制限を加えている場合は、その上限が少なくとも50程度であることを確認してください。 さもないと、並行テストで規則性がないように思われる失敗が発生するかもしれません。 この上限を変更できない場合は、MAX_CONNECTIONSパラメータを編集して、並行度を減らすことができます。 例えば、以下は同時実行数を10以下で実行します。

gmake MAX_CONNECTIONS=10 check

インストール(第15章を参照)後にテストを実行するには、第17章で説明したようにデータ領域を初期化し、サーバを起動させ、そして以下を入力してください。

gmake installcheck

もしくは、並行テストの場合は以下を入力してください。

gmake installcheck-parallel

テストは、PGHOST環境変数とPGPORT環境変数で指定がない限り、ローカルホストのサーバに接続し、デフォルトのポート番号を使用します。

ソース配布には、省略可能な手続き言語と一部のcontribモジュールに対するリグレッションテストも含まれています。 現在、これらのテストはインストール済みのサーバに対してのみ使用することができます。 構築されインストールされたすべての手続き言語に対してテストを実行するには、構築ツリーのsrc/plディレクトリに移動し、以下を実行してください。

gmake installcheck

また、これをsrc/plのサブディレクトリで実行して、1つの手続き言語のみに対するテストを行うことができます。 テストを行うことができる、すべてのcontribモジュールに対するテストを実行するには、構築ツリーのcontribディレクトリに移動し、以下を実行してください。

gmake installcheck

先にcontribモジュールが構築されインストールされていなければなりません。 また、これをcontribのサブディレクトリで実行して、1つのモジュールのみに対するテストを行うことができます。

アダルトレンタルサーバー