Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c90b45a

Browse files
committed
tests: added tests.merge.MergeTest.test_missing_data_file
1 parent 24c3874 commit c90b45a

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

tests/merge.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2655,5 +2655,69 @@ def test_merge_page_header_map_retry(self):
26552655
# Clean after yourself
26562656
self.del_test_dir(module_name, fname)
26572657

2658+
# @unittest.skip("skip")
2659+
def test_missing_data_file(self):
2660+
"""
2661+
"""
2662+
fname = self.id().split('.')[3]
2663+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
2664+
node = self.make_simple_node(
2665+
base_dir=os.path.join(module_name, fname, 'node'),
2666+
set_replication=True,
2667+
initdb_params=['--data-checksums'],
2668+
pg_options={'autovacuum': 'off'})
2669+
2670+
self.init_pb(backup_dir)
2671+
self.add_instance(backup_dir, 'node', node)
2672+
self.set_archiving(backup_dir, 'node', node)
2673+
node.slow_start()
2674+
2675+
# Add data
2676+
node.pgbench_init(scale=1)
2677+
2678+
# FULL backup
2679+
self.backup_node(backup_dir, 'node', node)
2680+
2681+
# Change data
2682+
pgbench = node.pgbench(options=['-T', '5', '-c', '1'])
2683+
pgbench.wait()
2684+
2685+
# DELTA backup
2686+
delta_id = self.backup_node(backup_dir, 'node', node, backup_type='delta')
2687+
2688+
path = node.safe_psql(
2689+
'postgres',
2690+
"select pg_relation_filepath('pgbench_accounts')").rstrip()
2691+
2692+
pgdata = self.pgdata_content(node.data_dir)
2693+
2694+
print(self.show_pb(
2695+
backup_dir, 'node', as_json=False, as_text=True))
2696+
2697+
gdb = self.merge_backup(
2698+
backup_dir, "node", delta_id,
2699+
options=['--log-level-file=VERBOSE'], gdb=True)
2700+
gdb.set_breakpoint('merge_files')
2701+
gdb.run_until_break()
2702+
2703+
# remove data file in incremental backup
2704+
file_to_remove = os.path.join(
2705+
backup_dir, 'backups',
2706+
'node', delta_id, 'database', path)
2707+
2708+
os.remove(file_to_remove)
2709+
2710+
gdb.continue_execution_until_error()
2711+
2712+
logfile = os.path.join(backup_dir, 'log', 'pg_probackup.log')
2713+
with open(logfile, 'r') as f:
2714+
logfile_content = f.read()
2715+
2716+
self.assertIn(
2717+
'ERROR: Cannot open backup file "{0}": No such file or directory'.format(file_to_remove),
2718+
logfile_content)
2719+
2720+
self.del_test_dir(module_name, fname)
2721+
26582722
# 1. Need new test with corrupted FULL backup
26592723
# 2. different compression levels

0 commit comments

Comments
 (0)