|
16 | 16 | use Config;
|
17 | 17 | use Time::HiRes qw(usleep);
|
18 | 18 |
|
19 |
| -if ($Config{osname} eq 'MSWin32') |
20 |
| -{ |
21 |
| - # some Windows Perls at least don't like IPC::Run's |
22 |
| - # start/kill_kill regime. |
23 |
| - plan skip_all => "Test fails on Windows perl"; |
24 |
| -} |
25 |
| -else |
26 |
| -{ |
27 |
| - plan tests => 18; |
28 |
| -} |
| 19 | +plan tests => 18; |
| 20 | + |
29 | 21 |
|
30 | 22 | # To avoid hanging while expecting some specific input from a psql
|
31 | 23 | # instance being driven by us, add a timeout high enough that it
|
|
106 | 98 | $monitor_stderr = '';
|
107 | 99 |
|
108 | 100 | # kill once with QUIT - we expect psql to exit, while emitting error message first
|
109 |
| -my $cnt = kill 'QUIT', $pid; |
| 101 | +my $ret = TestLib::system_log('pg_ctl', 'kill', 'QUIT', $pid); |
110 | 102 |
|
111 | 103 | # Exactly process should have been alive to be killed
|
112 |
| -is($cnt, 1, "exactly one process killed with SIGQUIT"); |
| 104 | +is($ret, 0, "killed process with SIGQUIT"); |
113 | 105 |
|
114 | 106 | # Check that psql sees the killed backend as having been terminated
|
115 | 107 | $killme_stdin .= q[
|
|
119 | 111 | "psql query died successfully after SIGQUIT");
|
120 | 112 | $killme_stderr = '';
|
121 | 113 | $killme_stdout = '';
|
122 |
| -$killme->kill_kill; |
| 114 | +$killme->finish; |
123 | 115 |
|
124 | 116 | # Wait till server restarts - we should get the WARNING here, but
|
125 | 117 | # sometimes the server is unable to send that, if interrupted while
|
126 | 118 | # sending.
|
127 | 119 | ok(pump_until($monitor, \$monitor_stderr, qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly/m),
|
128 | 120 | "psql monitor died successfully after SIGQUIT");
|
129 |
| -$monitor->kill_kill; |
| 121 | +$monitor->finish; |
130 | 122 |
|
131 | 123 | # Wait till server restarts
|
132 | 124 | is($node->poll_query_until('postgres', 'SELECT $$restarted after sigquit$$;', 'restarted after sigquit'),
|
|
179 | 171 |
|
180 | 172 | # kill with SIGKILL this time - we expect the backend to exit, without
|
181 | 173 | # being able to emit an error error message
|
182 |
| -$cnt = kill 'KILL', $pid; |
183 |
| -is($cnt, 1, "exactly one process killed with KILL"); |
| 174 | +$ret = TestLib::system_log('pg_ctl', 'kill', 'KILL', $pid); |
| 175 | +is($ret, 0, "killed process with KILL"); |
184 | 176 |
|
185 | 177 | # Check that psql sees the server as being terminated. No WARNING,
|
186 | 178 | # because signal handlers aren't being run on SIGKILL.
|
|
189 | 181 | ];
|
190 | 182 | ok(pump_until($killme, \$killme_stderr, qr/server closed the connection unexpectedly/m),
|
191 | 183 | "psql query died successfully after SIGKILL");
|
192 |
| -$killme->kill_kill; |
| 184 | +$killme->finish; |
193 | 185 |
|
194 | 186 | # Wait till server restarts - we should get the WARNING here, but
|
195 | 187 | # sometimes the server is unable to send that, if interrupted while
|
196 | 188 | # sending.
|
197 | 189 | ok(pump_until($monitor, \$monitor_stderr, qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly/m),
|
198 | 190 | "psql monitor died successfully after SIGKILL");
|
199 |
| -$monitor->kill_kill; |
| 191 | +$monitor->finish; |
200 | 192 |
|
201 | 193 | # Wait till server restarts
|
202 | 194 | is($node->poll_query_until('postgres', 'SELECT 1', '1'), "1", "reconnected after SIGKILL");
|
|
0 commit comments