From 486cdc274b67f6787b7812d884eec5f320e1ec32 Mon Sep 17 00:00:00 2001 From: Grigory Smolkin Date: Tue, 21 May 2019 19:29:49 +0300 Subject: [PATCH] tests: added restore.RestoreTest.test_restore_concurrent_drop_table --- tests/backup.py | 2 +- tests/restore.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/tests/backup.py b/tests/backup.py index 9d844a1f..1317829d 100644 --- a/tests/backup.py +++ b/tests/backup.py @@ -1022,7 +1022,7 @@ class BackupTest(ProbackupTest, unittest.TestCase): # FULL backup gdb = self.backup_node( backup_dir, 'node', node, - options=['--stream', '--compress', '--log-level-file=VERBOSE'], + options=['--stream', '--compress'], gdb=True) gdb.set_breakpoint('backup_data_file') diff --git a/tests/restore.py b/tests/restore.py index 666bf399..60d83759 100644 --- a/tests/restore.py +++ b/tests/restore.py @@ -2243,3 +2243,58 @@ class RestoreTest(ProbackupTest, unittest.TestCase): # Clean after yourself self.del_test_dir(module_name, fname) + + # @unittest.skip("skip") + def test_restore_concurrent_drop_table(self): + """""" + fname = self.id().split('.')[3] + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') + node = self.make_simple_node( + base_dir=os.path.join(module_name, fname, 'node'), + set_replication=True, + initdb_params=['--data-checksums']) + + self.init_pb(backup_dir) + self.add_instance(backup_dir, 'node', node) + self.set_archiving(backup_dir, 'node', node) + node.slow_start() + + node.pgbench_init(scale=1) + + # FULL backup + self.backup_node( + backup_dir, 'node', node, + options=['--stream', '--compress']) + + # DELTA backup + gdb = self.backup_node( + backup_dir, 'node', node, backup_type='delta', + options=['--stream', '--compress', '--no-validate'], + gdb=True) + + gdb.set_breakpoint('backup_data_file') + gdb.run_until_break() + + node.safe_psql( + 'postgres', + 'DROP TABLE pgbench_accounts') + + # do checkpoint to guarantee filenode removal + node.safe_psql( + 'postgres', + 'CHECKPOINT') + + gdb.remove_all_breakpoints() + gdb.continue_execution_until_exit() + + pgdata = self.pgdata_content(node.data_dir) + node.cleanup() + + self.restore_node( + backup_dir, 'node', node, options=['--no-validate']) + + pgdata_restored = self.pgdata_content(node.data_dir) + self.compare_pgdata(pgdata, pgdata_restored) + + # Clean after yourself + self.del_test_dir(module_name, fname)