|
3 | 3 | use Cwd; |
4 | 4 | use Config; |
5 | 5 | use File::Basenameqw(basename dirname); |
| 6 | +use File::Pathqw(rmtree); |
6 | 7 | use PostgresNode; |
7 | 8 | use TestLib; |
8 | 9 | use Test::Moretests=> 104; |
|
135 | 136 | # Make sure existing backup_label was ignored. |
136 | 137 | isnt(slurp_file("$tempdir/backup/backup_label"), |
137 | 138 | 'DONOTCOPY','existing backup_label not copied'); |
| 139 | +rmtree("$tempdir/backup"); |
138 | 140 |
|
139 | 141 | $node->command_ok( |
140 | 142 | ['pg_basebackup','-D',"$tempdir/backup2",'--waldir', |
141 | 143 | "$tempdir/xlog2" ], |
142 | 144 | 'separate xlog directory'); |
143 | 145 | ok(-f"$tempdir/backup2/PG_VERSION",'backup was created'); |
144 | 146 | ok(-d"$tempdir/xlog2/",'xlog directory was created'); |
| 147 | +rmtree("$tempdir/backup2"); |
| 148 | +rmtree("$tempdir/xlog2"); |
145 | 149 |
|
146 | 150 | $node->command_ok(['pg_basebackup','-D',"$tempdir/tarbackup",'-Ft' ], |
147 | 151 | 'tar format'); |
148 | 152 | ok(-f"$tempdir/tarbackup/base.tar",'backup tar was created'); |
| 153 | +rmtree("$tempdir/tarbackup"); |
149 | 154 |
|
150 | 155 | $node->command_fails( |
151 | 156 | ['pg_basebackup','-D',"$tempdir/backup_foo",'-Fp',"-T=/foo" ], |
|
212 | 217 | ok(-f"$tempdir/tarbackup2/base.tar",'backup tar was created'); |
213 | 218 | my@tblspc_tars =glob"$tempdir/tarbackup2/[0-9]*.tar"; |
214 | 219 | is(scalar(@tblspc_tars), 1,'one tablespace tar was created'); |
| 220 | +rmtree("$tempdir/tarbackup2"); |
215 | 221 |
|
216 | 222 | # Create an unlogged table to test that forks other than init are not copied. |
217 | 223 | $node->safe_psql('postgres', |
|
281 | 287 |
|
282 | 288 | ok(-d"$tempdir/backup1/pg_replslot", |
283 | 289 | 'pg_replslot symlink copied as directory'); |
| 290 | +rmtree("$tempdir/backup1"); |
284 | 291 |
|
285 | 292 | mkdir"$tempdir/tbl=spc2"; |
286 | 293 | $node->safe_psql('postgres',"DROP TABLE test1;"); |
|
295 | 302 | ok(-d"$tempdir/tbackup/tbl=spc2", |
296 | 303 | 'tablespace with = sign was relocated'); |
297 | 304 | $node->safe_psql('postgres',"DROP TABLESPACE tblspc2;"); |
| 305 | +rmtree("$tempdir/backup3"); |
298 | 306 |
|
299 | 307 | mkdir"$tempdir/$superlongname"; |
300 | 308 | $node->safe_psql('postgres', |
|
303 | 311 | ['pg_basebackup','-D',"$tempdir/tarbackup_l3",'-Ft' ], |
304 | 312 | 'pg_basebackup tar with long symlink target'); |
305 | 313 | $node->safe_psql('postgres',"DROP TABLESPACE tblspc3;"); |
| 314 | +rmtree("$tempdir/tarbackup_l3"); |
306 | 315 | } |
307 | 316 |
|
308 | 317 | $node->command_ok(['pg_basebackup','-D',"$tempdir/backupR",'-R' ], |
309 | 318 | 'pg_basebackup -R runs'); |
310 | 319 | ok(-f"$tempdir/backupR/recovery.conf",'recovery.conf was created'); |
311 | 320 | my$recovery_conf = slurp_file"$tempdir/backupR/recovery.conf"; |
| 321 | +rmtree("$tempdir/backupR"); |
312 | 322 |
|
313 | 323 | my$port =$node->port; |
314 | 324 | like( |
|
325 | 335 | 'pg_basebackup runs in default xlog mode'); |
326 | 336 | ok(grep(/^[0-9A-F]{24}$/, slurp_dir("$tempdir/backupxd/pg_wal")), |
327 | 337 | 'WAL files copied'); |
| 338 | +rmtree("$tempdir/backupxd"); |
328 | 339 |
|
329 | 340 | $node->command_ok( |
330 | 341 | ['pg_basebackup','-D',"$tempdir/backupxf",'-X','fetch' ], |
331 | 342 | 'pg_basebackup -X fetch runs'); |
332 | 343 | ok(grep(/^[0-9A-F]{24}$/, slurp_dir("$tempdir/backupxf/pg_wal")), |
333 | 344 | 'WAL files copied'); |
| 345 | +rmtree("$tempdir/backupxf"); |
334 | 346 | $node->command_ok( |
335 | 347 | ['pg_basebackup','-D',"$tempdir/backupxs",'-X','stream' ], |
336 | 348 | 'pg_basebackup -X stream runs'); |
337 | 349 | ok(grep(/^[0-9A-F]{24}$/, slurp_dir("$tempdir/backupxs/pg_wal")), |
338 | 350 | 'WAL files copied'); |
| 351 | +rmtree("$tempdir/backupxs"); |
339 | 352 | $node->command_ok( |
340 | 353 | ['pg_basebackup','-D',"$tempdir/backupxst",'-X','stream','-Ft' ], |
341 | 354 | 'pg_basebackup -X stream runs in tar mode'); |
342 | 355 | ok(-f"$tempdir/backupxst/pg_wal.tar","tar file was created"); |
| 356 | +rmtree("$tempdir/backupxst"); |
343 | 357 | $node->command_ok( |
344 | 358 | ['pg_basebackup','-D', |
345 | 359 | "$tempdir/backupnoslot",'-X', |
346 | 360 | 'stream','--no-slot' ], |
347 | 361 | 'pg_basebackup -X stream runs with --no-slot'); |
| 362 | +rmtree("$tempdir/backupnoslot"); |
348 | 363 |
|
349 | 364 | $node->command_fails( |
350 | 365 | ['pg_basebackup','-D', |
|
364 | 379 | $node->command_ok( |
365 | 380 | ['pg_basebackup','-D',"$tempdir/backupxs_slot",'-C','-S','slot0' ], |
366 | 381 | 'pg_basebackup -C runs'); |
| 382 | +rmtree("$tempdir/backupxs_slot"); |
367 | 383 |
|
368 | 384 | is($node->safe_psql('postgres',q{SELECT slot_name FROM pg_replication_slots WHERE slot_name = 'slot0'}), |
369 | 385 | 'slot0', |
|
393 | 409 | q{SELECT restart_lsn FROM pg_replication_slots WHERE slot_name = 'slot1'} |
394 | 410 | ); |
395 | 411 | like($lsn,qr!^0/[0-9A-Z]{7,8}$!,'restart LSN of slot has advanced'); |
| 412 | +rmtree("$tempdir/backupxs_sl"); |
396 | 413 |
|
397 | 414 | $node->command_ok( |
398 | 415 | ['pg_basebackup','-D',"$tempdir/backupxs_sl_R",'-X', |
|
405 | 422 |
|
406 | 423 | my$checksum =$node->safe_psql('postgres','SHOW data_checksums;'); |
407 | 424 | is($checksum,'on','checksums are enabled'); |
| 425 | +rmtree("$tempdir/backupxs_sl_R"); |
408 | 426 |
|
409 | 427 | # create tables to corrupt and get their relfilenodes |
410 | 428 | my$file_corrupt1 =$node->safe_psql('postgres', |
|
432 | 450 | [qr/^WARNING.*checksum verification failed/s], |
433 | 451 | 'pg_basebackup reports checksum mismatch' |
434 | 452 | ); |
| 453 | +rmtree("$tempdir/backup_corrupt"); |
435 | 454 |
|
436 | 455 | # induce further corruption in 5 more blocks |
437 | 456 | system_or_bail'pg_ctl','-D',$pgdata,'stop'; |
|
450 | 469 | [qr/^WARNING.*further.*failures.*will.not.be.reported/s], |
451 | 470 | 'pg_basebackup does not report more than 5 checksum mismatches' |
452 | 471 | ); |
| 472 | +rmtree("$tempdir/backup_corrupt2"); |
453 | 473 |
|
454 | 474 | # induce corruption in a second file |
455 | 475 | system_or_bail'pg_ctl','-D',$pgdata,'stop'; |
|
465 | 485 | [qr/^WARNING.*7 total checksum verification failures/s], |
466 | 486 | 'pg_basebackup correctly report the total number of checksum mismatches' |
467 | 487 | ); |
| 488 | +rmtree("$tempdir/backup_corrupt3"); |
468 | 489 |
|
469 | 490 | # do not verify checksums, should return ok |
470 | 491 | $node->command_ok( |
471 | 492 | ['pg_basebackup','-D',"$tempdir/backup_corrupt4",'-k' ], |
472 | 493 | 'pg_basebackup with -k does not report checksum mismatch'); |
| 494 | +rmtree("$tempdir/backup_corrupt4"); |
473 | 495 |
|
474 | 496 | $node->safe_psql('postgres',"DROP TABLE corrupt1;"); |
475 | 497 | $node->safe_psql('postgres',"DROP TABLE corrupt2;"); |