@@ -2689,11 +2689,6 @@ def test_missing_data_file(self):
2689
2689
'postgres' ,
2690
2690
"select pg_relation_filepath('pgbench_accounts')" ).rstrip ()
2691
2691
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
-
2697
2692
gdb = self .merge_backup (
2698
2693
backup_dir , "node" , delta_id ,
2699
2694
options = ['--log-level-file=VERBOSE' ], gdb = True )
@@ -2719,5 +2714,63 @@ def test_missing_data_file(self):
2719
2714
2720
2715
self .del_test_dir (module_name , fname )
2721
2716
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
+
2722
2775
# 1. Need new test with corrupted FULL backup
2723
2776
# 2. different compression levels
0 commit comments