Testing


Набор тестов для OCI8 находится в директории ext/oci8/tests. После прогона этих тестов, в этой директории также окажутся файлы журналов произошедших событий и ошибок.

Перед запуском тестов необходимо отредактировать файл 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. Для Oracle 10gR2 XE это:

     $ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh 

Для Oracle 11gR2 XE:

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

Для других версий:

     $ . /usr/local/bin/oraenv 

Некоторые оболочки требуют, чтобы в php.ini параметр variables_order содержал литеру 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 11gR2 XE), некоторые тесты могут вызывать ORA-12516 или ORA-12520 ошибки. Для их предотвращения необходимо увеличить значение параметра базы данных PROCESSES по инструкции ниже:

Подключиться к базе данных в роли суперпользователя:

     $ su - oracle 

Задать необходимое окружение с помощью сценариев oracle_env.sh или oraenv, как описано выше.

Запустить утилиту командной строки SQL*Plus и увеличить значение PROCESSES

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

Перезапустить базу данных:

     SQL> startup force