@@ -2689,11 +2689,6 @@ def test_missing_data_file(self):
26892689 'postgres' ,
26902690 "select pg_relation_filepath('pgbench_accounts')" ).rstrip ()
26912691
2692- pgdata = self .pgdata_content (node .data_dir )
2693-
2694- print (self .show_pb (
2695- backup_dir , 'node' , as_json = False , as_text = True ))
2696-
26972692 gdb = self .merge_backup (
26982693 backup_dir , "node" , delta_id ,
26992694 options = ['--log-level-file=VERBOSE' ], gdb = True )
@@ -2719,5 +2714,63 @@ def test_missing_data_file(self):
27192714
27202715 self .del_test_dir (module_name , fname )
27212716
2717+ # @unittest.skip("skip")
2718+ def test_missing_non_data_file (self ):
2719+ """
2720+ """
2721+ fname = self .id ().split ('.' )[3 ]
2722+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
2723+ node = self .make_simple_node (
2724+ base_dir = os .path .join (module_name , fname , 'node' ),
2725+ set_replication = True ,
2726+ initdb_params = ['--data-checksums' ],
2727+ pg_options = {'autovacuum' : 'off' })
2728+
2729+ self .init_pb (backup_dir )
2730+ self .add_instance (backup_dir , 'node' , node )
2731+ self .set_archiving (backup_dir , 'node' , node )
2732+ node .slow_start ()
2733+
2734+ # FULL backup
2735+ self .backup_node (backup_dir , 'node' , node )
2736+
2737+ # DELTA backup
2738+ delta_id = self .backup_node (backup_dir , 'node' , node , backup_type = 'delta' )
2739+
2740+ gdb = self .merge_backup (
2741+ backup_dir , "node" , delta_id ,
2742+ options = ['--log-level-file=VERBOSE' ], gdb = True )
2743+ gdb .set_breakpoint ('merge_files' )
2744+ gdb .run_until_break ()
2745+
2746+ # remove data file in incremental backup
2747+ file_to_remove = os .path .join (
2748+ backup_dir , 'backups' ,
2749+ 'node' , delta_id , 'database' , 'backup_label' )
2750+
2751+ os .remove (file_to_remove )
2752+
2753+ gdb .continue_execution_until_error ()
2754+
2755+ logfile = os .path .join (backup_dir , 'log' , 'pg_probackup.log' )
2756+ with open (logfile , 'r' ) as f :
2757+ logfile_content = f .read ()
2758+
2759+ self .assertIn (
2760+ 'ERROR: File "{0}" is not found' .format (file_to_remove ),
2761+ logfile_content )
2762+
2763+ self .assertIn (
2764+ 'ERROR: Backup files merging failed' ,
2765+ logfile_content )
2766+
2767+ self .assertEqual (
2768+ 'MERGING' , self .show_pb (backup_dir , 'node' )[0 ]['status' ])
2769+
2770+ self .assertEqual (
2771+ 'MERGING' , self .show_pb (backup_dir , 'node' )[1 ]['status' ])
2772+
2773+ self .del_test_dir (module_name , fname )
2774+
27222775# 1. Need new test with corrupted FULL backup
27232776# 2. different compression levels
0 commit comments