Improve one of the test cases in 035_standby_logical_decoding.pl.
authorAmit Kapila <[email protected]>
Fri, 28 Apr 2023 03:15:19 +0000 (08:45 +0530)
committerAmit Kapila <[email protected]>
Fri, 28 Apr 2023 03:15:19 +0000 (08:45 +0530)
The test to ensure that decoding changes via logical slot from another
database will fail was incorrectly done on the primary node instead of on
the standby node.

In the passing, make the test to wait for replay catchup by using
wait_for_replay_catchup(). This will make it consistent with the way we
wait at other places in the test.

Author: Shi yu
Reviewed-by: Bertrand Drouvot, Amit Kapila
Discussion: https://postgr.es/m/OSZPR01MB6310B0A507A0F2A2D379F38CFD6A9@OSZPR01MB6310.jpnprd01.prod.outlook.com

src/test/recovery/t/035_standby_logical_decoding.pl

index f6d644741276d0b0994905a26b4f04d1d636c31f..66d264f230897e2f31903861f1c86378e4e0739f 100644 (file)
@@ -361,7 +361,7 @@ $node_primary->safe_psql('testdb',
        qq[INSERT INTO decoding_test(x,y) SELECT s, s::text FROM generate_series(5,50) s;]
 );
 
-$node_primary->wait_for_catchup($node_standby);
+$node_primary->wait_for_replay_catchup($node_standby);
 
 my $stdout_recv = $node_standby->pg_recvlogical_upto(
     'testdb', 'behaves_ok_activeslot', $endpos, $default_timeout,
@@ -384,12 +384,17 @@ is($stdout_recv, '', 'pg_recvlogical acknowledged changes');
 
 $node_primary->safe_psql('postgres', 'CREATE DATABASE otherdb');
 
-is( $node_primary->psql(
+# Wait for catchup to ensure that the new database is visible to other sessions
+# on the standby.
+$node_primary->wait_for_replay_catchup($node_standby);
+
+($result, $stdout, $stderr) = $node_standby->psql(
         'otherdb',
         "SELECT lsn FROM pg_logical_slot_peek_changes('behaves_ok_activeslot', NULL, NULL) ORDER BY lsn DESC LIMIT 1;"
-    ),
-    3,
-    'replaying logical slot from another database fails');
+    );
+ok( $stderr =~
+         m/replication slot "behaves_ok_activeslot" was not created in this database/,
+       "replaying logical slot from another database fails");
 
 ##################################################
 # Test that we can subscribe on the standby with the publication