@@ -801,3 +801,50 @@ def test_delete_multiple_descendants_dry_run(self):
801801
802802 # Clean after yourself
803803 self .del_test_dir (module_name , fname )
804+
805+ def test_delete_error_backups (self ):
806+ """delete increment and all after him"""
807+ fname = self .id ().split ('.' )[3 ]
808+ node = self .make_simple_node (
809+ base_dir = os .path .join (module_name , fname , 'node' ),
810+ initdb_params = ['--data-checksums' ])
811+
812+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
813+ self .init_pb (backup_dir )
814+ self .add_instance (backup_dir , 'node' , node )
815+ self .set_archiving (backup_dir , 'node' , node )
816+ node .slow_start ()
817+
818+ # full backup mode
819+ self .backup_node (backup_dir , 'node' , node )
820+ # page backup mode
821+ self .backup_node (backup_dir , 'node' , node , backup_type = "page" )
822+
823+ # Take FULL BACKUP
824+ backup_id_a = self .backup_node (backup_dir , 'node' , node )
825+ # Take PAGE BACKUP
826+ backup_id_b = self .backup_node (backup_dir , 'node' , node , backup_type = "page" )
827+
828+ # Change status to ERROR
829+ self .change_backup_status (backup_dir , 'node' , backup_id_a , 'ERROR' )
830+ self .change_backup_status (backup_dir , 'node' , backup_id_b , 'ERROR' )
831+
832+ print (self .show_pb (backup_dir , as_text = True , as_json = False ))
833+
834+ show_backups = self .show_pb (backup_dir , 'node' )
835+ self .assertEqual (len (show_backups ), 4 )
836+
837+ # delete error backups
838+ self .delete_pb (backup_dir , 'node' , options = ['--error-state' ])
839+
840+ print (self .show_pb (backup_dir , as_text = True , as_json = False ))
841+
842+ show_backups = self .show_pb (backup_dir , 'node' )
843+ self .assertEqual (len (show_backups ), 2 )
844+
845+ self .assertEqual (show_backups [0 ]['status' ], "OK" )
846+ self .assertEqual (show_backups [1 ]['status' ], "OK" )
847+
848+ # Clean after yourself
849+ self .del_test_dir (module_name , fname )
850+
0 commit comments