From: Michael Paquier Date: Tue, 20 Nov 2018 01:20:52 +0000 (+0900) Subject: Fix issues with TAP tests of pg_verify_checksums X-Git-Tag: REL_12_BETA1~1191 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9685d7383ab48ebe6a6213530f64e4dc67776583;p=postgresql Fix issues with TAP tests of pg_verify_checksums Two issues have been spotted and get fixed here: - When checking for corrupted files, make sure that pg_verify_checksums complains about the correct file. In order to make the logic more robust, all files created are immediately removed once checks on them are done. The error message generated by pg_verify_checksums also now includes the file name it sees as corrupted. - Before running corruption-related tests, empty files are generated which used names mapping with the corrupted files, potentially leading to conflicts. So use different set of names for both. Author: Michael Banck Discussion: https://postgr.es/m/20181119181119.GC23740@nighthawk.caipicrew.dd-dns.de --- diff --git a/src/bin/pg_verify_checksums/t/002_actions.pl b/src/bin/pg_verify_checksums/t/002_actions.pl index d59970b735..0e1725d9f2 100644 --- a/src/bin/pg_verify_checksums/t/002_actions.pl +++ b/src/bin/pg_verify_checksums/t/002_actions.pl @@ -104,24 +104,28 @@ sub fail_corrupt my $pgdata = $node->data_dir; # Create the file with some dummy data in it. - append_to_file "$pgdata/global/$file", "foo"; + my $file_name = "$pgdata/global/$file"; + append_to_file $file_name, "foo"; $node->command_checks_all([ 'pg_verify_checksums', '-D', $pgdata], 1, [qr/^$/], - [qr/could not read block/], + [qr/could not read block 0 in file.*$file\":/], "fails for corrupted data in $file"); + # Remove file to prevent future lookup errors on conflicts. + unlink $file_name; return; } # Authorized relation files filled with corrupted data cause the -# checksum checks to fail. -fail_corrupt($node, "99999"); -fail_corrupt($node, "99999.123"); -fail_corrupt($node, "99999_fsm"); -fail_corrupt($node, "99999_init"); -fail_corrupt($node, "99999_vm"); -fail_corrupt($node, "99999_init.123"); -fail_corrupt($node, "99999_fsm.123"); -fail_corrupt($node, "99999_vm.123"); +# checksum checks to fail. Make sure to use file names different +# than the previous ones. +fail_corrupt($node, "99990"); +fail_corrupt($node, "99990.123"); +fail_corrupt($node, "99990_fsm"); +fail_corrupt($node, "99990_init"); +fail_corrupt($node, "99990_vm"); +fail_corrupt($node, "99990_init.123"); +fail_corrupt($node, "99990_fsm.123"); +fail_corrupt($node, "99990_vm.123");