1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2026-04-27 21:28:03 +02:00
Files
pg_probackup/tests/pgpro560_test.py
2024-05-03 10:54:40 +02:00

71 lines
2.5 KiB
Python

import os
import unittest
from .helpers.ptrack_helpers import ProbackupTest
from datetime import datetime, timedelta
import subprocess
from time import sleep
class CheckSystemID(ProbackupTest):
# @unittest.skip("skip")
# @unittest.expectedFailure
def test_pgpro560_control_file_loss(self):
"""
https://jira.postgrespro.ru/browse/PGPRO-560
make node with stream support, delete control file
make backup
check that backup failed
"""
node = self.pg_node.make_simple('node',
set_replication=True)
self.pb.init()
self.pb.add_instance('node', node)
node.slow_start()
file = os.path.join(node.base_dir, 'data', 'global', 'pg_control')
# Not delete this file permanently
os.rename(file, os.path.join(node.base_dir, 'data', 'global', 'pg_control_copy'))
self.pb.backup_node('node', node, options=['--stream'],
expect_error='because pg_control was deleted')
self.assertMessage(regex=r'ERROR: Could not get control file:.*pg_control')
# Return this file to avoid Postger fail
os.rename(os.path.join(node.base_dir, 'data', 'global', 'pg_control_copy'), file)
def test_pgpro560_systemid_mismatch(self):
"""
https://jira.postgrespro.ru/browse/PGPRO-560
make node1 and node2
feed to backup PGDATA from node1 and PGPORT from node2
check that backup failed
"""
node1 = self.pg_node.make_simple('node1',
set_replication=True)
node1.slow_start()
node2 = self.pg_node.make_simple('node2',
set_replication=True)
node2.slow_start()
self.pb.init()
self.pb.add_instance('node1', node1)
self.pb.backup_node('node1', node2, options=['--stream'],
expect_error="because of SYSTEM ID mismatch")
self.assertMessage(contains='ERROR: Backup data directory was '
'initialized for system id')
self.assertMessage(contains='but connected instance system id is')
sleep(1)
self.pb.backup_node('node1', node2,
data_dir=node1.data_dir, options=['--stream'],
expect_error="because of of SYSTEM ID mismatch")
self.assertMessage(contains='ERROR: Backup data directory was '
'initialized for system id')
self.assertMessage(contains='but connected instance system id is')