@@ -3246,3 +3246,85 @@ def test_missing_database_map(self):
32463246
32473247 # Clean after yourself
32483248 self .del_test_dir (module_name , fname )
3249+
3250+ @unittest .skip ("skip" )
3251+ def test_stream_restore_command_options (self ):
3252+ """
3253+ correct handling of restore command options
3254+ when restoring STREAM backup
3255+
3256+ 1. Restore STREAM backup with --restore-command only
3257+ parameter, check that PostgreSQL recovery uses
3258+ restore_command to obtain WAL from archive.
3259+
3260+ 2. Restore STREAM backup wuth --restore-command
3261+ as replica, check that PostgreSQL recovery uses
3262+ restore_command to obtain WAL from archive.
3263+ """
3264+ fname = self .id ().split ('.' )[3 ]
3265+ node = self .make_simple_node (
3266+ base_dir = os .path .join (module_name , fname , 'node' ),
3267+ set_replication = True ,
3268+ initdb_params = ['--data-checksums' ],
3269+ pg_options = {'max_wal_size' : '32MB' })
3270+
3271+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
3272+ self .init_pb (backup_dir )
3273+ self .add_instance (backup_dir , 'node' , node )
3274+ self .set_archiving (backup_dir , 'node' , node )
3275+ node .slow_start ()
3276+
3277+ if self .get_version (node ) >= self .version_to_num ('12.0' ):
3278+ recovery_conf = os .path .join (node .data_dir , 'probackup_recovery.conf' )
3279+ else :
3280+ recovery_conf = os .path .join (node .data_dir , 'recovery.conf' )
3281+
3282+ # Take FULL
3283+ self .backup_node (
3284+ backup_dir , 'node' , node , options = ['--stream' ])
3285+
3286+ node .pgbench_init (scale = 1 )
3287+
3288+ node .safe_psql (
3289+ 'postgres' ,
3290+ 'CHECKPOINT' )
3291+
3292+ node .pgbench_init (scale = 1 )
3293+
3294+ # restore backup
3295+ node .cleanup ()
3296+ shutil .rmtree (os .path .join (node .logs_dir ))
3297+
3298+ # self.restore_node(backup_dir, 'node', node)
3299+ restore_cmd = self .get_restore_command (backup_dir , 'node' , node )
3300+
3301+ self .restore_node (
3302+ backup_dir , 'node' , node ,
3303+ options = [
3304+ '--restore-command={0}' .format (restore_cmd ),
3305+ '--recovery-target-action=pause' ,
3306+ '--recovery-target=latest' ])
3307+
3308+ self .assertTrue (
3309+ os .path .isfile (recovery_conf ),
3310+ "File {0} do not exists" .format (recovery_conf ))
3311+
3312+ node .slow_start ()
3313+
3314+ exit (1 )
3315+
3316+ # self.set_config(
3317+ # backup_dir ,'node',
3318+ # options=['--restore-command="cp {0}/%f %p"'.format(wal_dir)])
3319+ #
3320+ # # restore delta backup
3321+ # node.cleanup()
3322+ # self.restore_node(
3323+ # backup_dir, 'node', node, options=['--recovery-target=immediate'])
3324+ #
3325+ # self.assertTrue(
3326+ # os.path.isfile(recovery_conf),
3327+ # "File {0} do not exists".format(recovery_conf))
3328+
3329+ # Clean after yourself
3330+ self .del_test_dir (module_name , fname )
0 commit comments