@@ -174,7 +174,11 @@ def test_delete_increment_ptrack(self):
174174
175175# @unittest.skip("skip")
176176def 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+ """
178182fname = self .id ().split ('.' )[3 ]
179183node = self .make_simple_node (
180184base_dir = os .path .join (module_name ,fname ,'node' ),
@@ -239,6 +243,61 @@ def test_delete_orphaned_wal_segments(self):
239243# Clean after yourself
240244self .del_test_dir (module_name ,fname )
241245
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+
242301# @unittest.skip("skip")
243302def test_delete_backup_with_empty_control_file (self ):
244303"""