テスト

OCI8 のテストスイートは ext/oci8/tests にあります。 OCI8 のテストを実行すると、テストが失敗したときのログがこのディレクトリに記録されます。

PHP のテストを実行する前に、details.inc を編集して $user、$password と接続文字列 $dbase を編集します。 OCI8 のテストスイートでは SYSTEM アカウントを利用します。 テストユーザーにそれと同等の権限がなければ、いくつかのテストが失敗します。

Oracle Database Resident Connection Pooling をテストする場合は $test_drcp を true に設定し、 適切な DRCP プールサーバーに接続するための接続文字列を指定します。

details.inc を編集する以外の方法として、 次のように環境変数で設定することもできます。

    $ export PHP_OCI8_TEST_USER=system
    $ export PHP_OCI8_TEST_PASS=oracle
    $ export PHP_OCI8_TEST_DB=localhost/XE
    $ export PHP_OCI8_TEST_DRCP=FALSE
シェルによっては、これらの変数が適切に PHP のプロセスに展開されず、 この方法ではテストに失敗することもあります。

次に、Oracle データベース用の環境を適切に設定します。 PHP を Oracle データベースと同じマシンで実行している場合、以下を実行します。

    $ . /usr/local/bin/oraenv

Oracle 11gR2 XE の場合は次のようにします。

    $ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

シェルによっては、php.ini の variables_order parameter パラメータに E を設定しておかなければならないこともあります。

    variables_order = "EGPCS"

すべての PHP のテストを実行するには、次のようにします。

    $ cd your_php_src_directory
    $ make test
OCI8 のテストだけを実行する場合は、このようにします。
    $ cd your_php_src_directory
    $ make test TESTS=ext/oci8

テストが終了したら、失敗したテストを見直します。 遅いシステムで実行した場合は、run-tests.php のデフォルトのタイムアウトよりも長い時間がかかるテストも出てくるかもしれません。 その場合は、環境変数 TEST_TIMEOUT を大きめに設定します。

高速なマシンで、軽量な設定のデータベース (Oracle 10gR2 XE など) をローカルで動かしていると、いくつかのテストが ORA-12516 あるいは ORA-12520 エラーで終了することがあります。 これを避けるには、データベースのパラメータ PROCESSES を次の手順で増やします。

Oracle ソフトウェアのオーナーとして接続します。

    $ su - oracle

Oracle 用の環境を、上で説明した oracle_env.sh あるいは oraenv で設定します。

SQL*Plus を立ち上げ、 PROCESSES を増やします。

    $ sqlplus / as sysdba
    SQL> alter system set processes=100 scope=spfile

データベースを再起動します。

    SQL> startup force

関連キーワード:  テスト, 設定, 実行, OCI, oracle, データベース, 接続, TEST, export, 失敗