@@ -3916,3 +3916,59 @@ def test_restore_issue_313(self):
3916
3916
3917
3917
# Clean after yourself
3918
3918
self .del_test_dir (module_name , fname )
3919
+
3920
+ # @unittest.skip("skip")
3921
+ def test_restore_with_waldir (self ):
3922
+ """recovery using tablespace-mapping option and page backup"""
3923
+ fname = self .id ().split ('.' )[3 ]
3924
+ node = self .make_simple_node (
3925
+ base_dir = os .path .join (module_name , fname , 'node' ),
3926
+ initdb_params = ['--data-checksums' ])
3927
+
3928
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
3929
+ self .init_pb (backup_dir )
3930
+ self .add_instance (backup_dir , 'node' , node )
3931
+ self .set_archiving (backup_dir , 'node' , node )
3932
+ node .slow_start ()
3933
+
3934
+
3935
+ with node .connect ("postgres" ) as con :
3936
+ con .execute (
3937
+ "CREATE TABLE tbl AS SELECT * "
3938
+ "FROM generate_series(0,3) AS integer" )
3939
+ con .commit ()
3940
+
3941
+ # Full backup
3942
+ backup_id = self .backup_node (backup_dir , 'node' , node )
3943
+
3944
+ node .stop ()
3945
+ node .cleanup ()
3946
+
3947
+ # Create waldir
3948
+ waldir_path = os .path .join (node .base_dir , "waldir" )
3949
+ os .makedirs (waldir_path )
3950
+
3951
+ # Test recovery from latest
3952
+ self .assertIn (
3953
+ "INFO: Restore of backup {0} completed." .format (backup_id ),
3954
+ self .restore_node (
3955
+ backup_dir , 'node' , node ,
3956
+ options = [
3957
+ "-X" , "%s" % (waldir_path )]),
3958
+ '\n Unexpected Error Message: {0}\n CMD: {1}' .format (
3959
+ repr (self .output ), self .cmd ))
3960
+ node .slow_start ()
3961
+
3962
+ count = node .execute ("postgres" , "SELECT count(*) FROM tbl" )
3963
+ self .assertEqual (count [0 ][0 ], 4 )
3964
+
3965
+ # check pg_wal is symlink
3966
+ if node .major_version >= 10 :
3967
+ wal_path = os .path .join (node .data_dir , "pg_wal" )
3968
+ else :
3969
+ wal_path = os .path .join (node .data_dir , "pg_xlog" )
3970
+
3971
+ self .assertEqual (os .path .islink (wal_path ), True )
3972
+
3973
+ # Clean after yourself
3974
+ self .del_test_dir (module_name , fname )
0 commit comments