@@ -711,14 +711,12 @@ def test_create_db(self):
711
711
1 ,0 ,
712
712
"Expecting Error because we are connecting to deleted database"
713
713
"\n Output: {0}\n CMD: {1}" .format (
714
- repr (self .output ),self .cmd )
715
- )
714
+ repr (self .output ),self .cmd ))
716
715
except QueryException as e :
717
716
self .assertTrue (
718
717
'FATAL: database "db1" does not exist' in e .message ,
719
718
'\n Unexpected Error Message: {0}\n CMD: {1}' .format (
720
- repr (e .message ),self .cmd )
721
- )
719
+ repr (e .message ),self .cmd ))
722
720
723
721
# Clean after yourself
724
722
self .del_test_dir (module_name ,fname )
@@ -1307,3 +1305,53 @@ def test_delta_nullified_heap_page_backup(self):
1307
1305
1308
1306
# Clean after yourself
1309
1307
self .del_test_dir (module_name ,fname )
1308
+
1309
+ def test_delta_backup_from_past (self ):
1310
+ """
1311
+ make node, take FULL stream backup, take DELTA stream backup,
1312
+ restore FULL backup, try to take second DELTA stream backup
1313
+ """
1314
+ fname = self .id ().split ('.' )[3 ]
1315
+ node = self .make_simple_node (
1316
+ base_dir = os .path .join (module_name ,fname ,'node' ),
1317
+ initdb_params = ['--data-checksums' ])
1318
+
1319
+ backup_dir = os .path .join (self .tmp_path ,module_name ,fname ,'backup' )
1320
+ self .init_pb (backup_dir )
1321
+ self .add_instance (backup_dir ,'node' ,node )
1322
+ node .slow_start ()
1323
+
1324
+ backup_id = self .backup_node (
1325
+ backup_dir ,'node' ,node ,options = ['--stream' ])
1326
+
1327
+ node .pgbench_init (scale = 3 )
1328
+
1329
+ # First DELTA
1330
+ self .backup_node (
1331
+ backup_dir ,'node' ,node ,
1332
+ backup_type = 'delta' ,options = ['--stream' ])
1333
+
1334
+ # Restore FULL backup
1335
+ node .cleanup ()
1336
+ self .restore_node (backup_dir ,'node' ,node ,backup_id = backup_id )
1337
+ node .slow_start ()
1338
+
1339
+ # Second DELTA backup
1340
+ try :
1341
+ self .backup_node (
1342
+ backup_dir ,'node' ,node ,
1343
+ backup_type = 'delta' ,options = ['--stream' ])
1344
+ # we should die here because exception is what we expect to happen
1345
+ self .assertEqual (
1346
+ 1 ,0 ,
1347
+ "Expecting Error because we are backing up an instance from the past"
1348
+ "\n Output: {0}\n CMD: {1}" .format (
1349
+ repr (self .output ),self .cmd ))
1350
+ except QueryException as e :
1351
+ self .assertTrue (
1352
+ 'Insert error message' in e .message ,
1353
+ '\n Unexpected Error Message: {0}\n CMD: {1}' .format (
1354
+ repr (e .message ),self .cmd ))
1355
+
1356
+ # Clean after yourself
1357
+ self .del_test_dir (module_name ,fname )