summaryrefslogtreecommitdiffstats
path: root/src/bin/pg_controldata/t
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:15:05 +0000
commit46651ce6fe013220ed397add242004d764fc0153 (patch)
tree6e5299f990f88e60174a1d3ae6e48eedd2688b2b /src/bin/pg_controldata/t
parentInitial commit. (diff)
downloadpostgresql-14-46651ce6fe013220ed397add242004d764fc0153.tar.xz
postgresql-14-46651ce6fe013220ed397add242004d764fc0153.zip
Adding upstream version 14.5.upstream/14.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/bin/pg_controldata/t')
-rw-r--r--src/bin/pg_controldata/t/001_pg_controldata.pl44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/bin/pg_controldata/t/001_pg_controldata.pl b/src/bin/pg_controldata/t/001_pg_controldata.pl
new file mode 100644
index 0000000..c3f3aca
--- /dev/null
+++ b/src/bin/pg_controldata/t/001_pg_controldata.pl
@@ -0,0 +1,44 @@
+
+# Copyright (c) 2021, PostgreSQL Global Development Group
+
+use strict;
+use warnings;
+use PostgresNode;
+use TestLib;
+use Test::More tests => 17;
+
+program_help_ok('pg_controldata');
+program_version_ok('pg_controldata');
+program_options_handling_ok('pg_controldata');
+command_fails(['pg_controldata'], 'pg_controldata without arguments fails');
+command_fails([ 'pg_controldata', 'nonexistent' ],
+ 'pg_controldata with nonexistent directory fails');
+
+my $node = get_new_node('main');
+$node->init;
+
+command_like([ 'pg_controldata', $node->data_dir ],
+ qr/checkpoint/, 'pg_controldata produces output');
+
+
+# check with a corrupted pg_control
+
+my $pg_control = $node->data_dir . '/global/pg_control';
+my $size = (stat($pg_control))[7];
+
+open my $fh, '>', $pg_control or BAIL_OUT($!);
+binmode $fh;
+
+# fill file with zeros
+print $fh pack("x[$size]");
+close $fh;
+
+command_checks_all(
+ [ 'pg_controldata', $node->data_dir ],
+ 0,
+ [
+ qr/WARNING: Calculated CRC checksum does not match value stored in file/,
+ qr/WARNING: invalid WAL segment size/
+ ],
+ [qr/^$/],
+ 'pg_controldata with corrupted pg_control');