@@ -3499,7 +3499,7 @@ def test_validate_target_lsn(self):
3499
3499
3500
3500
# @unittest.expectedFailure
3501
3501
# @unittest.skip("skip")
3502
- def test_recovery_target_backup_victim (self ):
3502
+ def test_recovery_target_time_backup_victim (self ):
3503
3503
"""
3504
3504
Check that for validation to recovery target
3505
3505
probackup chooses valid backup
@@ -3555,6 +3555,61 @@ def test_recovery_target_backup_victim(self):
3555
3555
backup_dir ,'node' ,
3556
3556
options = ['--recovery-target-time={0}' .format (target_time )])
3557
3557
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 )])
3558
3613
3559
3614
# validate empty backup list
3560
3615
# page from future during validate