|
72 | 72 | INSERT INTO alive VALUES($$committed-before-sigquit$$); |
73 | 73 | SELECT pg_backend_pid(); |
74 | 74 | ]; |
75 | | -ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m), |
| 75 | +ok(TestLib::pump_until( |
| 76 | + $killme, $psql_timeout, \$killme_stdout, |
| 77 | + qr/[[:digit:]]+[\r\n]$/m), |
76 | 78 | 'acquired pid for SIGQUIT'); |
77 | 79 | my $pid = $killme_stdout; |
78 | 80 | chomp($pid); |
|
84 | 86 | BEGIN; |
85 | 87 | INSERT INTO alive VALUES($$in-progress-before-sigquit$$) RETURNING status; |
86 | 88 | ]; |
87 | | -ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigquit/m), |
| 89 | +ok(TestLib::pump_until( |
| 90 | + $killme, $psql_timeout, \$killme_stdout, |
| 91 | + qr/in-progress-before-sigquit/m), |
88 | 92 | 'inserted in-progress-before-sigquit'); |
89 | 93 | $killme_stdout = ''; |
90 | 94 | $killme_stderr = ''; |
|
97 | 101 | SELECT $$psql-connected$$; |
98 | 102 | SELECT pg_sleep(3600); |
99 | 103 | ]; |
100 | | -ok(pump_until($monitor, \$monitor_stdout, qr/psql-connected/m), |
| 104 | +ok(TestLib::pump_until( |
| 105 | + $monitor, $psql_timeout, \$monitor_stdout, qr/psql-connected/m), |
101 | 106 | 'monitor connected'); |
102 | 107 | $monitor_stdout = ''; |
103 | 108 | $monitor_stderr = ''; |
|
112 | 117 | $killme_stdin .= q[ |
113 | 118 | SELECT 1; |
114 | 119 | ]; |
115 | | -ok( pump_until( |
| 120 | +ok( TestLib::pump_until( |
116 | 121 | $killme, |
| 122 | + $psql_timeout, |
117 | 123 | \$killme_stderr, |
118 | 124 | qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly|connection to server was lost/m |
119 | 125 | ), |
|
125 | 131 | # Wait till server restarts - we should get the WARNING here, but |
126 | 132 | # sometimes the server is unable to send that, if interrupted while |
127 | 133 | # sending. |
128 | | -ok( pump_until( |
| 134 | +ok( TestLib::pump_until( |
129 | 135 | $monitor, |
| 136 | + $psql_timeout, |
130 | 137 | \$monitor_stderr, |
131 | 138 | qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly|connection to server was lost/m |
132 | 139 | ), |
|
153 | 160 | $killme_stdin .= q[ |
154 | 161 | SELECT pg_backend_pid(); |
155 | 162 | ]; |
156 | | -ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m), |
| 163 | +ok(TestLib::pump_until( |
| 164 | + $killme, $psql_timeout, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m), |
157 | 165 | "acquired pid for SIGKILL"); |
158 | 166 | $pid = $killme_stdout; |
159 | 167 | chomp($pid); |
|
166 | 174 | BEGIN; |
167 | 175 | INSERT INTO alive VALUES($$in-progress-before-sigkill$$) RETURNING status; |
168 | 176 | ]; |
169 | | -ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigkill/m), |
| 177 | +ok(TestLib::pump_until( |
| 178 | + $killme, $psql_timeout, \$killme_stdout, |
| 179 | + qr/in-progress-before-sigkill/m), |
170 | 180 | 'inserted in-progress-before-sigkill'); |
171 | 181 | $killme_stdout = ''; |
172 | 182 | $killme_stderr = ''; |
|
178 | 188 | SELECT $$psql-connected$$; |
179 | 189 | SELECT pg_sleep(3600); |
180 | 190 | ]; |
181 | | -ok(pump_until($monitor, \$monitor_stdout, qr/psql-connected/m), |
| 191 | +ok(TestLib::pump_until( |
| 192 | + $monitor, $psql_timeout, \$monitor_stdout, qr/psql-connected/m), |
182 | 193 | 'monitor connected'); |
183 | 194 | $monitor_stdout = ''; |
184 | 195 | $monitor_stderr = ''; |
|
194 | 205 | $killme_stdin .= q[ |
195 | 206 | SELECT 1; |
196 | 207 | ]; |
197 | | -ok( pump_until( |
| 208 | +ok( TestLib::pump_until( |
198 | 209 | $killme, |
| 210 | + $psql_timeout, |
199 | 211 | \$killme_stderr, |
200 | 212 | qr/server closed the connection unexpectedly|connection to server was lost/m |
201 | 213 | ), |
|
205 | 217 | # Wait till server restarts - we should get the WARNING here, but |
206 | 218 | # sometimes the server is unable to send that, if interrupted while |
207 | 219 | # sending. |
208 | | -ok( pump_until( |
| 220 | +ok( TestLib::pump_until( |
209 | 221 | $monitor, |
| 222 | + $psql_timeout, |
210 | 223 | \$monitor_stderr, |
211 | 224 | qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly|connection to server was lost/m |
212 | 225 | ), |
|
244 | 257 | 'can still write after orderly restart'); |
245 | 258 |
|
246 | 259 | $node->stop(); |
247 | | - |
248 | | -# Pump until string is matched, or timeout occurs |
249 | | -sub pump_until |
250 | | -{ |
251 | | - my ($proc, $stream, $untl) = @_; |
252 | | - $proc->pump_nb(); |
253 | | - while (1) |
254 | | - { |
255 | | - last if $$stream =~ /$untl/; |
256 | | - if ($psql_timeout->is_expired) |
257 | | - { |
258 | | - diag("aborting wait: program timed out"); |
259 | | - diag("stream contents: >>", $$stream, "<<"); |
260 | | - diag("pattern searched for: ", $untl); |
261 | | - |
262 | | - return 0; |
263 | | - } |
264 | | - if (not $proc->pumpable()) |
265 | | - { |
266 | | - diag("aborting wait: program died"); |
267 | | - diag("stream contents: >>", $$stream, "<<"); |
268 | | - diag("pattern searched for: ", $untl); |
269 | | - |
270 | | - return 0; |
271 | | - } |
272 | | - $proc->pump(); |
273 | | - } |
274 | | - return 1; |
275 | | - |
276 | | -} |
0 commit comments