Hi, The attached patch adds a small test for recovery_end_command execution.
Currently, patch tests execution of recovery_end_command by creating dummy file, I am not wedded only to this approach, other suggestions also welcome. Also, we don't have a good test for archive_cleanup_command as well, I am not sure how we could test that which executes with every restart-point. Thanks to my colleague Neha Sharma for confirming the test execution on Windows. Regards, Amul
diff --git a/src/test/recovery/t/002_archiving.pl b/src/test/recovery/t/002_archiving.pl index ce60159f036..f90c698ba47 100644 --- a/src/test/recovery/t/002_archiving.pl +++ b/src/test/recovery/t/002_archiving.pl @@ -6,7 +6,7 @@ use strict; use warnings; use PostgresNode; use TestLib; -use Test::More tests => 3; +use Test::More tests => 4; use File::Copy; # Initialize primary node, doing archives @@ -65,13 +65,23 @@ $node_standby->promote; my $node_standby2 = PostgresNode->new('standby2'); $node_standby2->init_from_backup($node_primary, $backup_name, has_restoring => 1); +my $node_standby2_data = $node_standby2->data_dir; + +# Also, test recovery_end_command by creating empty file. +my $recovery_end_command_file = "$node_standby2_data/recovery_end_command.done"; +$node_standby2->append_conf('postgresql.conf', + "recovery_end_command='echo recovery_ended > $recovery_end_command_file'"); + $node_standby2->start; # Now promote standby2, and check that temporary files specifically # generated during archive recovery are removed by the end of recovery. $node_standby2->promote; -my $node_standby2_data = $node_standby2->data_dir; ok( !-f "$node_standby2_data/pg_wal/RECOVERYHISTORY", "RECOVERYHISTORY removed after promotion"); ok( !-f "$node_standby2_data/pg_wal/RECOVERYXLOG", "RECOVERYXLOG removed after promotion"); + +# Also, check recovery_end_command execution. +ok(-f "$recovery_end_command_file", + 'recovery_end_command executed after promotion');