psql: Add test for psql behavior on server crash
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 29 Mar 2022 06:58:54 +0000 (08:58 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 29 Mar 2022 06:58:54 +0000 (08:58 +0200)
Author: Fabien COELHO <coelho@cri.ensmp.fr>
Discussion: https://www.postgresql.org/message-id/flat/alpine.DEB.2.21.1904132231510.8961@lancre

src/bin/psql/t/001_basic.pl

index 44ecd05add6bb7563734cd79bea982d319215295..02a84543fd562677c1fc708d9a61d56b5c853d6d 100644 (file)
@@ -115,4 +115,21 @@ NOTIFY foo, 'bar';",
    qr/^Asynchronous notification "foo" with payload "bar" received from server process with PID \d+\.$/,
    'notification with payload');
 
+# test behavior and output on server crash
+my ($ret, $out, $err) = $node->psql(
+   'postgres',
+   "SELECT 'before' AS running;\n" .
+   "SELECT pg_terminate_backend(pg_backend_pid());\n" .
+   "SELECT 'AFTER' AS not_running;\n");
+
+is($ret, 2, 'server crash: psql exit code');
+like($out, qr/before/, 'server crash: output before crash');
+ok($out !~ qr/AFTER/, 'server crash: no output after crash');
+is($err, 'psql:<stdin>:2: FATAL:  terminating connection due to administrator command
+server closed the connection unexpectedly
+   This probably means the server terminated abnormally
+   before or while processing the request.
+psql:<stdin>:2: fatal: connection to server was lost',
+   'server crash: error message');
+
 done_testing();