@@ -3499,7 +3499,7 @@ def test_validate_target_lsn(self):
34993499
35003500# @unittest.expectedFailure
35013501# @unittest.skip("skip")
3502- def test_recovery_target_backup_victim (self ):
3502+ def test_recovery_target_time_backup_victim (self ):
35033503"""
35043504 Check that for validation to recovery target
35053505 probackup chooses valid backup
@@ -3555,6 +3555,61 @@ def test_recovery_target_backup_victim(self):
35553555backup_dir ,'node' ,
35563556options = ['--recovery-target-time={0}' .format (target_time )])
35573557
3558+ # @unittest.expectedFailure
3559+ # @unittest.skip("skip")
3560+ def test_recovery_target_lsn_backup_victim (self ):
3561+ """
3562+ Check that for validation to recovery target
3563+ probackup chooses valid backup
3564+ https://github.com/postgrespro/pg_probackup/issues/104
3565+ """
3566+ fname = self .id ().split ('.' )[3 ]
3567+ backup_dir = os .path .join (self .tmp_path ,module_name ,fname ,'backup' )
3568+ node = self .make_simple_node (
3569+ base_dir = os .path .join (module_name ,fname ,'node' ),
3570+ set_replication = True ,
3571+ initdb_params = ['--data-checksums' ])
3572+
3573+ self .init_pb (backup_dir )
3574+ self .add_instance (backup_dir ,'node' ,node )
3575+ self .set_archiving (backup_dir ,'node' ,node )
3576+ node .slow_start ()
3577+
3578+ # FULL backup
3579+ self .backup_node (backup_dir ,'node' ,node )
3580+
3581+ node .safe_psql (
3582+ "postgres" ,
3583+ "create table t_heap as select 1 as id, md5(i::text) as text, "
3584+ "md5(repeat(i::text,10))::tsvector as tsvector "
3585+ "from generate_series(0,10000) i" )
3586+
3587+ node .safe_psql (
3588+ "postgres" ,
3589+ "create table t_heap1 as select 1 as id, md5(i::text) as text, "
3590+ "md5(repeat(i::text,10))::tsvector as tsvector "
3591+ "from generate_series(0,100) i" )
3592+
3593+ gdb = self .backup_node (backup_dir ,'node' ,node ,gdb = True )
3594+
3595+ gdb .set_breakpoint ('pg_stop_backup' )
3596+ gdb .run_until_break ()
3597+ gdb .remove_all_breakpoints ()
3598+ gdb ._execute ('signal SIGINT' )
3599+ gdb .continue_execution_until_error ()
3600+
3601+ backup_id = self .show_pb (backup_dir ,'node' )[1 ]['id' ]
3602+
3603+ self .assertEqual (
3604+ 'ERROR' ,
3605+ self .show_pb (backup_dir ,'node' ,backup_id )['status' ],
3606+ 'Backup STATUS should be "ERROR"' )
3607+
3608+ target_lsn = self .show_pb (backup_dir ,'node' ,backup_id )['start-lsn' ]
3609+
3610+ self .validate_pb (
3611+ backup_dir ,'node' ,
3612+ options = ['--recovery-target-lsn={0}' .format (target_lsn )])
35583613
35593614# validate empty backup list
35603615# page from future during validate