@@ -3675,3 +3675,62 @@ def test_truncate_postgresql_auto_conf(self):
36753675
36763676 # Clean after yourself
36773677 self .del_test_dir (module_name , fname )
3678+
3679+ # @unittest.skip("skip")
3680+ def test_concurrent_restore (self ):
3681+ """"""
3682+ fname = self .id ().split ('.' )[3 ]
3683+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
3684+ node = self .make_simple_node (
3685+ base_dir = os .path .join (module_name , fname , 'node' ),
3686+ set_replication = True ,
3687+ initdb_params = ['--data-checksums' ])
3688+
3689+ self .init_pb (backup_dir )
3690+ self .add_instance (backup_dir , 'node' , node )
3691+ self .set_archiving (backup_dir , 'node' , node )
3692+ node .slow_start ()
3693+
3694+ node .pgbench_init (scale = 1 )
3695+
3696+ # FULL backup
3697+ self .backup_node (
3698+ backup_dir , 'node' , node ,
3699+ options = ['--stream' , '--compress' ])
3700+
3701+ pgbench = node .pgbench (options = ['-T' , '7' , '-c' , '1' , '--no-vacuum' ])
3702+ pgbench .wait ()
3703+
3704+ # DELTA backup
3705+ self .backup_node (
3706+ backup_dir , 'node' , node , backup_type = 'delta' ,
3707+ options = ['--stream' , '--compress' , '--no-validate' ])
3708+
3709+ pgdata1 = self .pgdata_content (node .data_dir )
3710+
3711+ node_restored = self .make_simple_node (
3712+ base_dir = os .path .join (module_name , fname , 'node_restored' ))
3713+
3714+ node .cleanup ()
3715+ node_restored .cleanup ()
3716+
3717+ gdb = self .restore_node (
3718+ backup_dir , 'node' , node , options = ['--no-validate' ], gdb = True )
3719+
3720+ gdb .set_breakpoint ('restore_data_file' )
3721+ gdb .run_until_break ()
3722+
3723+ self .restore_node (
3724+ backup_dir , 'node' , node_restored , options = ['--no-validate' ])
3725+
3726+ gdb .remove_all_breakpoints ()
3727+ gdb .continue_execution_until_exit ()
3728+
3729+ pgdata2 = self .pgdata_content (node .data_dir )
3730+ pgdata3 = self .pgdata_content (node_restored .data_dir )
3731+
3732+ self .compare_pgdata (pgdata1 , pgdata2 )
3733+ self .compare_pgdata (pgdata2 , pgdata3 )
3734+
3735+ # Clean after yourself
3736+ self .del_test_dir (module_name , fname )
0 commit comments