@@ -1281,3 +1281,87 @@ def test_drop_table(self):
1281
1281
1282
1282
# Clean after yourself
1283
1283
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