@@ -3443,6 +3443,60 @@ def test_validate_corrupt_tablespace_map(self):
3443
3443
'\n Unexpected Error Message: {0}\n CMD: {1}' .format (
3444
3444
repr (e .message ), self .cmd ))
3445
3445
3446
+ # @unittest.expectedFailure
3447
+ # @unittest.skip("skip")
3448
+ def test_validate_target_lsn (self ):
3449
+ """
3450
+ Check validation to specific LSN
3451
+ """
3452
+ fname = self .id ().split ('.' )[3 ]
3453
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
3454
+ node = self .make_simple_node (
3455
+ base_dir = os .path .join (module_name , fname , 'node' ),
3456
+ set_replication = True ,
3457
+ initdb_params = ['--data-checksums' ])
3458
+
3459
+ self .init_pb (backup_dir )
3460
+ self .add_instance (backup_dir , 'node' , node )
3461
+ self .set_archiving (backup_dir , 'node' , node )
3462
+ node .slow_start ()
3463
+
3464
+ # FULL backup
3465
+ self .backup_node (backup_dir , 'node' , node )
3466
+
3467
+ node .safe_psql (
3468
+ "postgres" ,
3469
+ "create table t_heap as select 1 as id, md5(i::text) as text, "
3470
+ "md5(repeat(i::text,10))::tsvector as tsvector "
3471
+ "from generate_series(0,10000) i" )
3472
+
3473
+ node_restored = self .make_simple_node (
3474
+ base_dir = os .path .join (module_name , fname , 'node_restored' ))
3475
+ node_restored .cleanup ()
3476
+
3477
+ self .restore_node (backup_dir , 'node' , node_restored )
3478
+
3479
+ node_restored .append_conf (
3480
+ "postgresql.auto.conf" , "port = {0}" .format (node_restored .port ))
3481
+
3482
+ node_restored .slow_start ()
3483
+
3484
+ self .switch_wal_segment (node )
3485
+
3486
+ backup_id = self .backup_node (
3487
+ backup_dir , 'node' , node_restored ,
3488
+ data_dir = node_restored .data_dir )
3489
+
3490
+ target_lsn = self .show_pb (backup_dir , 'node' )[1 ]['stop-lsn' ]
3491
+
3492
+ self .delete_pb (backup_dir , 'node' , backup_id )
3493
+
3494
+ self .validate_pb (
3495
+ backup_dir , 'node' ,
3496
+ options = [
3497
+ '--recovery-target-timeline=2' ,
3498
+ '--recovery-target-lsn={0}' .format (target_lsn )])
3499
+
3446
3500
# validate empty backup list
3447
3501
# page from future during validate
3448
3502
# page from future during backup
0 commit comments