Skip to content

Commit 386276d

Browse files
committed
Test passed
1 parent f28f776 commit 386276d

File tree

1 file changed

+47
-37
lines changed

1 file changed

+47
-37
lines changed

src/test/recovery/t/016_snapfs_simple_checks.pl

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Simple checks
2-
#use Data::Dumper;
32
use strict;
43
use warnings;
54

@@ -50,69 +49,80 @@ ( $$ )
5049
$node_master->safe_psql('postgres',
5150
"select pg_make_snapshot();");
5251

53-
replay_wait( $node_master, $node_standby );
54-
55-
# Check for pg_control_snapshot() results
56-
my ( $master_out, $standby_out );
57-
$master_out = $node_master->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
58-
$standby_out = $node_standby->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
59-
60-
ok( $master_out eq '1|2|0', 'pg_control_snapshot() on master' );
61-
ok( $standby_out eq '1|1|0', 'pg_control_snapshot() on standby' );
62-
6352
# Make third snapshot
6453
$node_master->safe_psql('postgres',
6554
"select pg_make_snapshot();");
6655

6756
replay_wait( $node_master, $node_standby );
6857

69-
# Check for pg_control_snapshot() results another one
70-
$master_out = $node_master->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
71-
$standby_out = $node_standby->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
72-
73-
ok( $master_out eq '1|3|0', 'pg_control_snapshot() on master 2' );
74-
ok( $standby_out eq '1|2|0', 'pg_control_snapshot() on standby 2' );
58+
# Check for pg_control_snapshot() results
59+
my $master_out = $node_master->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
60+
my $standby_out = $node_standby->safe_psql( 'postgres', "select * from pg_control_snapshot()" );
7561

76-
# Standby checks
77-
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_recover_to_snapshot( 3 );" );
78-
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_recover_to_snapshot() is prohibited on replica' );
62+
ok( $master_out eq '1|3|0', 'pg_control_snapshot() on master' );
63+
ok( $standby_out eq '1|2|0', 'pg_control_snapshot() on standby' );
7964

65+
# Standby simple checks
8066
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_make_snapshot();" );
81-
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_make_snapshot() is prohibited on replica' );
67+
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_make_snapshot() is prohibited on standby' );
68+
69+
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_recover_to_snapshot( 3 );" );
70+
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_recover_to_snapshot() is prohibited on standby' );
8271

8372
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_switch_to_snapshot( 2 );" );
84-
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_switch_to_snapshot() is prohibited on replica' );
73+
like( $stderr, '/ERROR: Operation is not possible at replica/', 'pg_recover_to_snapshot() is prohibited on standby' );
8574

8675
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_set_backend_snapshot( 3 );" );
8776
like( $stderr, '/ERROR: Invalid snapshot/', 'Invalid snapshot number passed to pg_set_backend_snapshot() on standby' );
8877

89-
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_set_backend_snapshot( 2 );" );
90-
is( $ret, 0, 'Standby pg_set_backend_snapshot()' );
78+
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select * from pg_set_backend_snapshot( 2 ); select * from pg_get_backend_snapshot(); select * from pg_set_backend_snapshot( 0 );" );
79+
$stdout =~ s/\s//g;
80+
is( $stdout, 2, 'pg_get_backend_snapshot() on standby' );
9181

92-
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_set_backend_snapshot( 2 ); select pg_get_backend_snapshot();" );
82+
my $snapshot_size = $node_standby->safe_psql( 'postgres', "select pg_get_snapshot_size( 1 ) > 0" );
83+
ok( $snapshot_size eq 't', 'Snapshot size is greater than 0 on standby' );
9384

94-
$stdout =~ s/\s//;
85+
my $snapshot_timestamp = $node_standby->safe_psql( 'postgres', "select ( now() - pg_get_snapshot_timestamp( 1 ) ) > interval '0 seconds'" );
86+
ok( $snapshot_size eq 't', 'Snapshot age is greater than 0 on standby' );
87+
$snapshot_timestamp = $node_standby->safe_psql( 'postgres', "select ( now() - pg_get_snapshot_timestamp( 1 ) ) < interval '180 seconds'" );
88+
ok( $snapshot_size eq 't', 'Snapshot age is less than 180 seconds on standby' );
9589

96-
is( $stdout, 2, 'Standby pg_get_backend_snapshot()' );
90+
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select coalesce( pg_get_snapshot_timestamp( generate_series ), now() ) = coalesce( pg_get_snapshot_timestamp, now() ) and pg_size_pretty( pg_get_snapshot_size( generate_series ) ) = pg_size_pretty from snapfs_snapshots;" );
91+
$ret = () = $stdout =~ /t/g;
92+
is( $ret, 2, 'snapfs_snapshots view check on standby' );
9793

98-
# Master checks
9994

100-
( $ret, $stdout, $stderr ) = $node_standby->psql( 'postgres', "select pg_set_backend_snapshot( 3 );" );
95+
# Master simple checks
96+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_set_backend_snapshot( 4 );" );
10197
like( $stderr, '/ERROR: Invalid snapshot/', 'Invalid snapshot number passed to pg_set_backend_snapshot() on master' );
10298

103-
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_set_backend_snapshot( 2 );" );
104-
is( $ret, 0, 'Master pg_set_backend_snapshot()' );
99+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select * from pg_set_backend_snapshot( 2 ); select * from pg_get_backend_snapshot(); select * from pg_set_backend_snapshot( 0 );" );
100+
$stdout =~ s/\s//g;
101+
is( $stdout, 2, 'pg_get_backend_snapshot() on master' );
102+
103+
$snapshot_size = $node_master->safe_psql( 'postgres', "select pg_get_snapshot_size( 1 ) > 0" );
104+
ok( $snapshot_size eq 't', 'Snapshot size is greater than 0 on master' );
105105

106-
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_set_backend_snapshot( 2 ); select pg_get_backend_snapshot();" );
106+
$snapshot_timestamp = $node_master->safe_psql( 'postgres', "select ( now() - pg_get_snapshot_timestamp( 1 ) ) > interval '0 seconds'" );
107+
ok( $snapshot_size eq 't', 'Snapshot age is greater than 0 on master' );
108+
$snapshot_timestamp = $node_master->safe_psql( 'postgres', "select ( now() - pg_get_snapshot_timestamp( 1 ) ) < interval '180 seconds'" );
109+
ok( $snapshot_size eq 't', 'Snapshot age is less than 180 seconds on master' );
107110

108-
$stdout =~ s/\s//;
111+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select coalesce( pg_get_snapshot_timestamp( generate_series ), now() ) = coalesce( pg_get_snapshot_timestamp, now() ) and pg_size_pretty( pg_get_snapshot_size( generate_series ) ) = pg_size_pretty from snapfs_snapshots;" );
112+
$ret = () = $stdout =~ /t/g;
113+
is( $ret, 3, 'snapfs_snapshots view check on master' );
109114

110-
is( $stdout, 2, 'Master pg_get_backend_snapshot()' );
115+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_switch_to_snapshot( 4 );" );
116+
like( $stderr, '/ERROR: Invalid snapshot \d+, existed snapshots/', 'Invalid snapshot number passed to pg_recover_to_snapshot() on master' );
111117

118+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_switch_to_snapshot( 2 );" );
119+
ok( $ret eq 0, 'pg_switch_to_snapshot() on master' );
112120

113-
#print Dumper( $ret );
114-
#print Dumper( $stdout );
115-
#print Dumper( $stderr );
121+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_recover_to_snapshot( 2 );" );
122+
like( $stderr, '/ERROR: Can not perform operation inside snapshot/', 'pg_recover_to_snapshot() is prohibited in snapshot on master' );
116123

124+
( $ret, $stdout, $stderr ) = $node_master->psql( 'postgres', "select pg_switch_to_snapshot( 0 );" );
125+
$ret = $node_master->safe_psql( 'postgres', "select pg_recover_to_snapshot( 2 );" );
126+
ok( $ret eq '', 'pg_recover_to_snapshot() on master' );
117127

118128
done_testing();

0 commit comments

Comments
 (0)