Skip to content

Commit 87f214e

Browse files
committed
tests: added validate.ValidateTest.test_recovery_target_lsn_backup_victim
1 parent cd00806 commit 87f214e

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

tests/pgpro560.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
44
from datetime import datetime, timedelta
55
import subprocess
6+
from time import sleep
67

78

89
module_name = 'pgpro560'
@@ -98,6 +99,8 @@ def test_pgpro560_systemid_mismatch(self):
9899
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(
99100
repr(e.message), self.cmd))
100101

102+
sleep(1)
103+
101104
try:
102105
self.backup_node(
103106
backup_dir, 'node1', node2,

tests/validate.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3499,7 +3499,7 @@ def test_validate_target_lsn(self):
34993499

35003500
# @unittest.expectedFailure
35013501
# @unittest.skip("skip")
3502-
def test_recovery_target_backup_victim(self):
3502+
def test_recovery_target_time_backup_victim(self):
35033503
"""
35043504
Check that for validation to recovery target
35053505
probackup chooses valid backup
@@ -3555,6 +3555,61 @@ def test_recovery_target_backup_victim(self):
35553555
backup_dir, 'node',
35563556
options=['--recovery-target-time={0}'.format(target_time)])
35573557

3558+
# @unittest.expectedFailure
3559+
# @unittest.skip("skip")
3560+
def test_recovery_target_lsn_backup_victim(self):
3561+
"""
3562+
Check that for validation to recovery target
3563+
probackup chooses valid backup
3564+
https://github.com/postgrespro/pg_probackup/issues/104
3565+
"""
3566+
fname = self.id().split('.')[3]
3567+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
3568+
node = self.make_simple_node(
3569+
base_dir=os.path.join(module_name, fname, 'node'),
3570+
set_replication=True,
3571+
initdb_params=['--data-checksums'])
3572+
3573+
self.init_pb(backup_dir)
3574+
self.add_instance(backup_dir, 'node', node)
3575+
self.set_archiving(backup_dir, 'node', node)
3576+
node.slow_start()
3577+
3578+
# FULL backup
3579+
self.backup_node(backup_dir, 'node', node)
3580+
3581+
node.safe_psql(
3582+
"postgres",
3583+
"create table t_heap as select 1 as id, md5(i::text) as text, "
3584+
"md5(repeat(i::text,10))::tsvector as tsvector "
3585+
"from generate_series(0,10000) i")
3586+
3587+
node.safe_psql(
3588+
"postgres",
3589+
"create table t_heap1 as select 1 as id, md5(i::text) as text, "
3590+
"md5(repeat(i::text,10))::tsvector as tsvector "
3591+
"from generate_series(0,100) i")
3592+
3593+
gdb = self.backup_node(backup_dir, 'node', node, gdb=True)
3594+
3595+
gdb.set_breakpoint('pg_stop_backup')
3596+
gdb.run_until_break()
3597+
gdb.remove_all_breakpoints()
3598+
gdb._execute('signal SIGINT')
3599+
gdb.continue_execution_until_error()
3600+
3601+
backup_id = self.show_pb(backup_dir, 'node')[1]['id']
3602+
3603+
self.assertEqual(
3604+
'ERROR',
3605+
self.show_pb(backup_dir, 'node', backup_id)['status'],
3606+
'Backup STATUS should be "ERROR"')
3607+
3608+
target_lsn = self.show_pb(backup_dir, 'node', backup_id)['start-lsn']
3609+
3610+
self.validate_pb(
3611+
backup_dir, 'node',
3612+
options=['--recovery-target-lsn={0}'.format(target_lsn)])
35583613

35593614
# validate empty backup list
35603615
# page from future during validate

0 commit comments

Comments
 (0)