@@ -3675,3 +3675,62 @@ def test_truncate_postgresql_auto_conf(self):
3675
3675
3676
3676
# Clean after yourself
3677
3677
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