Skip to content

Commit 0b4d09e

Browse files
committed
[Issue #109] added test validate.ValidateTest.test_recovery_target_backup_victim
1 parent 3cc9d81 commit 0b4d09e

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

Diff for: tests/validate.py

+59
Original file line numberDiff line numberDiff line change
@@ -3497,6 +3497,65 @@ def test_validate_target_lsn(self):
34973497
'--recovery-target-timeline=2',
34983498
'--recovery-target-lsn={0}'.format(target_lsn)])
34993499

3500+
# @unittest.expectedFailure
3501+
# @unittest.skip("skip")
3502+
def test_recovery_target_backup_victim(self):
3503+
"""
3504+
Check that for validation to recovery target
3505+
probackup chooses valid backup
3506+
https://github.com/postgrespro/pg_probackup/issues/104
3507+
"""
3508+
fname = self.id().split('.')[3]
3509+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
3510+
node = self.make_simple_node(
3511+
base_dir=os.path.join(module_name, fname, 'node'),
3512+
set_replication=True,
3513+
initdb_params=['--data-checksums'])
3514+
3515+
self.init_pb(backup_dir)
3516+
self.add_instance(backup_dir, 'node', node)
3517+
self.set_archiving(backup_dir, 'node', node)
3518+
node.slow_start()
3519+
3520+
# FULL backup
3521+
self.backup_node(backup_dir, 'node', node)
3522+
3523+
node.safe_psql(
3524+
"postgres",
3525+
"create table t_heap as select 1 as id, md5(i::text) as text, "
3526+
"md5(repeat(i::text,10))::tsvector as tsvector "
3527+
"from generate_series(0,10000) i")
3528+
3529+
target_time = node.safe_psql(
3530+
"postgres",
3531+
"select now()").rstrip()
3532+
3533+
node.safe_psql(
3534+
"postgres",
3535+
"create table t_heap1 as select 1 as id, md5(i::text) as text, "
3536+
"md5(repeat(i::text,10))::tsvector as tsvector "
3537+
"from generate_series(0,100) i")
3538+
3539+
gdb = self.backup_node(backup_dir, 'node', node, gdb=True)
3540+
3541+
gdb.set_breakpoint('pg_stop_backup')
3542+
gdb.run_until_break()
3543+
gdb.remove_all_breakpoints()
3544+
gdb._execute('signal SIGINT')
3545+
gdb.continue_execution_until_error()
3546+
3547+
backup_id = self.show_pb(backup_dir, 'node')[1]['id']
3548+
3549+
self.assertEqual(
3550+
'ERROR',
3551+
self.show_pb(backup_dir, 'node', backup_id)['status'],
3552+
'Backup STATUS should be "ERROR"')
3553+
3554+
self.validate_pb(
3555+
backup_dir, 'node',
3556+
options=['--recovery-target-time={0}'.format(target_time)])
3557+
3558+
35003559
# validate empty backup list
35013560
# page from future during validate
35023561
# page from future during backup

0 commit comments

Comments
 (0)