Перейти к основному содержимому

Тесты TAP

примечание

Эта страница переведена при помощи нейросети GigaChat.

Различные тесты, особенно тесты клиентской программы под src/bin, используют инструменты Perl TAP и выполняются с помощью программы тестирования Perl prove. Есть возможность передать параметры командной строки prove, установив переменную make PROVE_FLAGS, например:

make -C src/bin check PROVE_FLAGS='--timer'

См. руководство по prove для получения дополнительной информации.

Переменная make PROVE_TESTS используется для определения списка путей, разделенных пробелами относительно Makefile вызывающего prove для запуска указанного подмножества тестов вместо значения по умолчанию t/*.pl. Например:

make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'

Для проведения тестов TAP требуется модуль Perl IPC::Run. Этот модуль доступен из CPAN или пакета операционной системы. Они также требуют, чтобы PostgreSQL был настроен с опцией --enable-tap-tests.

Тесты TAP будут тестировать исполняемые файлы в предварительно установленной установке дерева, если ввести команду make installcheck, или создать новое локальное дерево установки из текущих источников, если ввести команду make check. В любом случае они инициализируют локальный экземпляр (каталог данных) и временно запускают сервер в нем. Некоторые из этих тестов запускают более одного сервера. Таким образом, эти тесты могут быть довольно ресурсоемкими.

Тесты TAP будут запускать тестовый сервер (серверы), даже если ввести команду make installcheck; это отличается от традиционной инфраструктуры тестирования без TAP, которая ожидает использование уже запущенного тестового сервера в этом случае. Некоторые подкаталоги PostgreSQL содержат как традиционные, так и тесты в стиле TAP, что означает, что make installcheck даст смесь результатов из временных серверов и уже запущенного тестового сервера.

Переменные окружения

Каталоги данных называются согласно имени файла теста и сохраняются при сбое теста. Если установлена переменная окружения PG_TEST_NOCLEAN, каталоги данных будут сохраняться независимо от статуса теста. Например, сохранение каталога данных независимо от результата теста при выполнении тестов pg_dump:

PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check

Эта переменная окружения также предотвращает удаление временных каталогов теста.

Многие операции в наборах тестов имеют тайм-аут продолжительностью 180 секунд, который на медленных хостах может привести к нагрузочным тайм-аута. Установка переменной окружения PG_TEST_TIMEOUT_DEFAULT на большее число изменит значение по умолчанию, чтобы избежать этого.