Skip to content

Commit 20dfb01

Browse files
committed
2 parents cd2655b + a261a83 commit 20dfb01

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

tests/restore.py

+59
Original file line numberDiff line numberDiff line change
@@ -3675,3 +3675,62 @@ def test_truncate_postgresql_auto_conf(self):
36753675

36763676
# Clean after yourself
36773677
self.del_test_dir(module_name, fname)
3678+
3679+
# @unittest.skip("skip")
3680+
def test_concurrent_restore(self):
3681+
""""""
3682+
fname = self.id().split('.')[3]
3683+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
3684+
node = self.make_simple_node(
3685+
base_dir=os.path.join(module_name, fname, 'node'),
3686+
set_replication=True,
3687+
initdb_params=['--data-checksums'])
3688+
3689+
self.init_pb(backup_dir)
3690+
self.add_instance(backup_dir, 'node', node)
3691+
self.set_archiving(backup_dir, 'node', node)
3692+
node.slow_start()
3693+
3694+
node.pgbench_init(scale=1)
3695+
3696+
# FULL backup
3697+
self.backup_node(
3698+
backup_dir, 'node', node,
3699+
options=['--stream', '--compress'])
3700+
3701+
pgbench = node.pgbench(options=['-T', '7', '-c', '1', '--no-vacuum'])
3702+
pgbench.wait()
3703+
3704+
# DELTA backup
3705+
self.backup_node(
3706+
backup_dir, 'node', node, backup_type='delta',
3707+
options=['--stream', '--compress', '--no-validate'])
3708+
3709+
pgdata1 = self.pgdata_content(node.data_dir)
3710+
3711+
node_restored = self.make_simple_node(
3712+
base_dir=os.path.join(module_name, fname, 'node_restored'))
3713+
3714+
node.cleanup()
3715+
node_restored.cleanup()
3716+
3717+
gdb = self.restore_node(
3718+
backup_dir, 'node', node, options=['--no-validate'], gdb=True)
3719+
3720+
gdb.set_breakpoint('restore_data_file')
3721+
gdb.run_until_break()
3722+
3723+
self.restore_node(
3724+
backup_dir, 'node', node_restored, options=['--no-validate'])
3725+
3726+
gdb.remove_all_breakpoints()
3727+
gdb.continue_execution_until_exit()
3728+
3729+
pgdata2 = self.pgdata_content(node.data_dir)
3730+
pgdata3 = self.pgdata_content(node_restored.data_dir)
3731+
3732+
self.compare_pgdata(pgdata1, pgdata2)
3733+
self.compare_pgdata(pgdata2, pgdata3)
3734+
3735+
# Clean after yourself
3736+
self.del_test_dir(module_name, fname)

0 commit comments

Comments
 (0)