В настоящее время я добавляю модульные тесты к довольно большому количеству хранимых процедур PostgreSQL, используя pgTap.
Некоторые процедуры выполняют операции, которые явно блокируют строки. Эти блокировки важны для приложения.
Как мне написать тесты, которые проверяют, что строки, которые должны быть заблокированы, были, а строки, которые не должны быть заблокированы, нет?
Единственная подсказка, которую я имею на данный момент, - это расширение pgrowlocks, которое позволяет транзакции проверять строки, заблокированные другой транзакцией. Однако текущая транзакция, похоже, не видит своих собственных блокировок, поэтому мне придется что-то использовать для синхронизации двух транзакций, и, если я не ошибаюсь, это невозможно сделать с помощью pgTap.
(примечание: использование PostgreSQL 9.1)