@@ -1281,3 +1281,87 @@ def test_drop_table(self):
12811281
12821282        # Clean after yourself 
12831283        self .del_test_dir (module_name , fname )
1284+ 
1285+     # @unittest.skip("skip") 
1286+     def  test_basic_missing_file_permissions (self ):
1287+         """""" 
1288+         fname  =  self .id ().split ('.' )[3 ]
1289+         backup_dir  =  os .path .join (self .tmp_path , module_name , fname , 'backup' )
1290+         node  =  self .make_simple_node (
1291+             base_dir = os .path .join (module_name , fname , 'node' ),
1292+             set_replication = True ,
1293+             initdb_params = ['--data-checksums' ])
1294+ 
1295+         self .init_pb (backup_dir )
1296+         self .add_instance (backup_dir , 'node' , node )
1297+         node .slow_start ()
1298+ 
1299+         relative_path  =  node .safe_psql (
1300+             "postgres" ,
1301+             "select pg_relation_filepath('pg_class')" ).rstrip ()
1302+ 
1303+         full_path  =  os .path .join (node .data_dir , relative_path )
1304+ 
1305+         os .chmod (full_path , 000 )
1306+ 
1307+         try :
1308+             # FULL backup 
1309+             self .backup_node (
1310+                 backup_dir , 'node' , node , options = ['--stream' ])
1311+             # we should die here because exception is what we expect to happen 
1312+             self .assertEqual (
1313+                 1 , 0 ,
1314+                 "Expecting Error because of missing permissions" 
1315+                 "\n  Output: {0} \n  CMD: {1}" .format (
1316+                     repr (self .output ), self .cmd ))
1317+         except  ProbackupException  as  e :
1318+             self .assertIn (
1319+                 'ERROR: cannot open file' ,
1320+                 e .message ,
1321+                 '\n  Unexpected Error Message: {0}\n  CMD: {1}' .format (
1322+                     repr (e .message ), self .cmd ))
1323+ 
1324+         os .chmod (full_path , 700 )
1325+ 
1326+         # Clean after yourself 
1327+         self .del_test_dir (module_name , fname )
1328+ 
1329+     # @unittest.skip("skip") 
1330+     def  test_basic_missing_dir_permissions (self ):
1331+         """""" 
1332+         fname  =  self .id ().split ('.' )[3 ]
1333+         backup_dir  =  os .path .join (self .tmp_path , module_name , fname , 'backup' )
1334+         node  =  self .make_simple_node (
1335+             base_dir = os .path .join (module_name , fname , 'node' ),
1336+             set_replication = True ,
1337+             initdb_params = ['--data-checksums' ])
1338+ 
1339+         self .init_pb (backup_dir )
1340+         self .add_instance (backup_dir , 'node' , node )
1341+         node .slow_start ()
1342+ 
1343+         full_path  =  os .path .join (node .data_dir , 'pg_twophase' )
1344+ 
1345+         os .chmod (full_path , 000 )
1346+ 
1347+         try :
1348+             # FULL backup 
1349+             self .backup_node (
1350+                 backup_dir , 'node' , node , options = ['--stream' ])
1351+             # we should die here because exception is what we expect to happen 
1352+             self .assertEqual (
1353+                 1 , 0 ,
1354+                 "Expecting Error because of missing permissions" 
1355+                 "\n  Output: {0} \n  CMD: {1}" .format (
1356+                     repr (self .output ), self .cmd ))
1357+         except  ProbackupException  as  e :
1358+             self .assertIn (
1359+                 'ERROR: Cannot open directory' ,
1360+                 e .message ,
1361+                 '\n  Unexpected Error Message: {0}\n  CMD: {1}' .format (
1362+                     repr (e .message ), self .cmd ))
1363+ 
1364+         os .chmod (full_path , 700 )
1365+ 
1366+         # Clean after yourself 
1367+         self .del_test_dir (module_name , fname )
0 commit comments