@@ -3728,3 +3728,57 @@ def test_partial_validate_include(self):
3728
3728
# 716 if (read_len != MAXALIGN(header.compressed_size))
3729
3729
# -> 717 elog(ERROR, "cannot read block %u of \"%s\" read %lu of %d",
3730
3730
# 718 blknum, file->path, read_len, header.compressed_size);
3731
+
3732
+
3733
+ # @unittest.skip("skip")
3734
+ def test_not_validate_diffenent_pg_version (self ):
3735
+ """Do not validate backup, if binary is compiled with different PG version"""
3736
+ fname = self .id ().split ('.' )[3 ]
3737
+ node = self .make_simple_node (
3738
+ base_dir = os .path .join (module_name , fname , 'node' ),
3739
+ initdb_params = ['--data-checksums' ])
3740
+
3741
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
3742
+ self .init_pb (backup_dir )
3743
+ self .add_instance (backup_dir , 'node' , node )
3744
+ self .set_archiving (backup_dir , 'node' , node )
3745
+ node .slow_start ()
3746
+
3747
+ backup_id = self .backup_node (backup_dir , 'node' , node )
3748
+
3749
+ control_file = os .path .join (
3750
+ backup_dir , "backups" , "node" , backup_id ,
3751
+ "backup.control" )
3752
+
3753
+ pg_version = node .major_version
3754
+
3755
+ if pg_version .is_integer ():
3756
+ pg_version = int (pg_version )
3757
+
3758
+ fake_new_pg_version = pg_version + 1
3759
+
3760
+ with open (control_file , 'r' ) as f :
3761
+ data = f .read ();
3762
+
3763
+ data = data .replace (str (pg_version ), str (fake_new_pg_version ))
3764
+
3765
+ with open (control_file , 'w' ) as f :
3766
+ f .write (data );
3767
+
3768
+ try :
3769
+ self .validate_pb (backup_dir )
3770
+ self .assertEqual (
3771
+ 1 , 0 ,
3772
+ "Expecting Error because validation is forbidden if server version of backup "
3773
+ "is different from the server version of pg_probackup.\n Output: {0} \n CMD: {1}" .format (
3774
+ repr (self .output ), self .cmd ))
3775
+ except ProbackupException as e :
3776
+ self .assertIn (
3777
+ "ERROR: Backup was made with server version" ,
3778
+ e .message ,
3779
+ "\n Unexpected Error Message: {0}\n CMD: {1}" .format (
3780
+ repr (e .message ), self .cmd ))
3781
+
3782
+ # Clean after yourself
3783
+ self .del_test_dir (module_name , fname )
3784
+
0 commit comments