diff --git a/src/bin/pg_verify_checksums/Makefile b/src/bin/pg_verify_checksums/Makefile index d16261571f..cfe4ab1b8b 100644 --- a/src/bin/pg_verify_checksums/Makefile +++ b/src/bin/pg_verify_checksums/Makefile @@ -34,3 +34,9 @@ uninstall: clean distclean maintainer-clean: rm -f pg_verify_checksums$(X) $(OBJS) rm -rf tmp_check + +check: + $(prove_check) + +installcheck: + $(prove_installcheck) diff --git a/src/bin/pg_verify_checksums/t/010_pg_verify_checksums.pl b/src/bin/pg_verify_checksums/t/010_pg_verify_checksums.pl new file mode 100644 index 0000000000..b6d535d76b --- /dev/null +++ b/src/bin/pg_verify_checksums/t/010_pg_verify_checksums.pl @@ -0,0 +1,33 @@ +use strict; +use warnings; +use Cwd; +use Config; +use PostgresNode; +use TestLib; +use Test::More tests => 10; + +program_help_ok('pg_verify_checksums'); +program_version_ok('pg_verify_checksums'); +program_options_handling_ok('pg_verify_checksums'); + +my $node = get_new_node('main'); + +# Set umask so test directories and files are created with default permissions +umask(0077); + +# Initialize node without replication settings +$node->init(extra => ['--data-checksums']); + +# Verify checksums of fresh node +$node->command_ok(['pg_verify_checksums', '-D', $node->data_dir()]); + +# Cause some corruption in pg_proc +open my $file, '+<', $node->data_dir() . "/base/1/1255"; +seek($file, 131, 0); +syswrite($file, '\0\0\0\0\0\0\0\0\0'); +seek($file, 15721, 0); +syswrite($file, '\0\0\0\0\0\0\0\0\0'); +close $file; + +# Verify that checksums are now broken +$node->command_fails(['pg_verify_checksums', '-D', $node->data_dir()]);