Sie können dies selbst basteln, indem Sie ein LOCK
nehmen auf einer Tabelle, richten Sie Ihre Transaktionen ein und geben Sie dann die Sperre frei, indem Sie die Transaktion rückgängig machen, die die Sperre erhalten hat. Siehe diese vorherige Antwort
und seine Links für Details zu diesem Ansatz. Während ich es mit drei psql
demonstriert habe Sitzungen ist es ebenso möglich, dies mit Bash-Co-Prozessen zu tun, einem Python-Skript, das psycopg2
verwendet und das multiprocessing
oder threading
Module usw. Ziemlich einfach zu machen. Aktualisieren :Tatsächlich hier ist ein Beispiel, das ich gerade in Python3 geschrieben habe .
Holen Sie sich für ausgefeiltere Tests den PostgreSQL-Quellcode und verwenden Sie das Tool „isolationtester“ in src/test/isolation
mit dem Sie Rezepte schreiben können, die komplexe Reihenfolgen von Befehlen ausführen. Es unterstützt nicht die Erstellung mit PGXS
(obwohl es wahrscheinlich ziemlich trivial wäre, eine solche Unterstützung hinzuzufügen), also müssen Sie den gesamten PostgreSQL-Quellbaum kompilieren, aber das geht schnell genug. Es wird mit Ihrem vorhandenen PostgreSQL ausgeführt, sodass Sie das von Ihnen kompilierte nicht installieren müssen.
Siehe src/test/isolation/README
für mehr über das Isolationstester-Tool. Die Dokumentation ist etwas dürftig, da es sich um ein internes Testtool handelt, aber die vorhandenen Testfälle sollten Ihnen den Einstieg erleichtern. Fühlen Sie sich frei, es zu verbessern, um es Ihren Bedürfnissen anzupassen und Patches einzureichen :)