@@ -174,7 +174,11 @@ def test_delete_increment_ptrack(self):
174
174
175
175
# @unittest.skip("skip")
176
176
def test_delete_orphaned_wal_segments (self ):
177
- """make archive node, make three full backups, delete second backup without --wal option, then delete orphaned wals via --wal option"""
177
+ """
178
+ make archive node, make three full backups,
179
+ delete second backup without --wal option,
180
+ then delete orphaned wals via --wal option
181
+ """
178
182
fname = self .id ().split ('.' )[3 ]
179
183
node = self .make_simple_node (
180
184
base_dir = os .path .join (module_name , fname , 'node' ),
@@ -239,6 +243,61 @@ def test_delete_orphaned_wal_segments(self):
239
243
# Clean after yourself
240
244
self .del_test_dir (module_name , fname )
241
245
246
+ # @unittest.skip("skip")
247
+ def test_delete_wal_between_multiple_timelines (self ):
248
+ """
249
+ /-------B1--
250
+ A1----------------A2----
251
+
252
+ delete A1 backup, check that WAL segments on [A1, A2) and
253
+ [A1, B1) are deleted and backups B1 and A2 keep
254
+ their WAL
255
+ """
256
+ fname = self .id ().split ('.' )[3 ]
257
+ node = self .make_simple_node (
258
+ base_dir = os .path .join (module_name , fname , 'node' ),
259
+ initdb_params = ['--data-checksums' ])
260
+
261
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
262
+ self .init_pb (backup_dir )
263
+ self .add_instance (backup_dir , 'node' , node )
264
+ self .set_archiving (backup_dir , 'node' , node )
265
+ node .slow_start ()
266
+
267
+ A1 = self .backup_node (backup_dir , 'node' , node )
268
+
269
+ # load some data to node
270
+ node .pgbench_init (scale = 3 )
271
+
272
+ node2 = self .make_simple_node (
273
+ base_dir = os .path .join (module_name , fname , 'node2' ))
274
+ node2 .cleanup ()
275
+
276
+ self .restore_node (backup_dir , 'node' , node2 )
277
+ node2 .append_conf (
278
+ 'postgresql.auto.conf' , "port = {0}" .format (node2 .port ))
279
+ node2 .slow_start ()
280
+
281
+ # load some more data to node
282
+ node .pgbench_init (scale = 3 )
283
+
284
+ # take A2
285
+ A2 = self .backup_node (backup_dir , 'node' , node )
286
+
287
+ # load some more data to node2
288
+ node2 .pgbench_init (scale = 2 )
289
+
290
+ B1 = self .backup_node (
291
+ backup_dir , 'node' ,
292
+ node2 , data_dir = node2 .data_dir )
293
+
294
+ self .delete_pb (backup_dir , 'node' , backup_id = A1 , options = ['--wal' ])
295
+
296
+ self .validate_pb (backup_dir )
297
+
298
+ # Clean after yourself
299
+ self .del_test_dir (module_name , fname )
300
+
242
301
# @unittest.skip("skip")
243
302
def test_delete_backup_with_empty_control_file (self ):
244
303
"""
0 commit comments