Skip to content

Commit da50370

Browse files
committed
[Issue #283] added tests.replica.ReplicaTest.test_replica_via_basebackup
1 parent c63a2b8 commit da50370

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/replica.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1728,6 +1728,81 @@ def test_instance_from_the_past(self):
17281728
# Clean after yourself
17291729
self.del_test_dir(module_name, fname)
17301730

1731+
# @unittest.skip("skip")
1732+
def test_replica_via_basebackup(self):
1733+
"""
1734+
"""
1735+
fname = self.id().split('.')[3]
1736+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
1737+
node = self.make_simple_node(
1738+
base_dir=os.path.join(module_name, fname, 'node'),
1739+
set_replication=True,
1740+
initdb_params=['--data-checksums'],
1741+
pg_options={'autovacuum': 'off', 'hot_standby': 'on'})
1742+
1743+
self.init_pb(backup_dir)
1744+
self.add_instance(backup_dir, 'node', node)
1745+
self.set_archiving(backup_dir, 'node', node)
1746+
1747+
node.slow_start()
1748+
1749+
node.pgbench_init(scale=10)
1750+
1751+
#FULL backup
1752+
full_id = self.backup_node(backup_dir, 'node', node)
1753+
1754+
pgbench = node.pgbench(
1755+
options=['-T', '10', '-c', '1', '--no-vacuum'])
1756+
pgbench.wait()
1757+
1758+
node.cleanup()
1759+
1760+
self.restore_node(
1761+
backup_dir, 'node', node,
1762+
options=['--recovery-target=latest', '--recovery-target-action=promote'])
1763+
node.slow_start()
1764+
1765+
# Timeline 2
1766+
# Take stream page backup from instance in timeline2
1767+
page_id = self.backup_node(
1768+
backup_dir, 'node', node, backup_type='full', options=['--stream'])
1769+
1770+
node.cleanup()
1771+
1772+
# restore stream backup
1773+
self.restore_node(backup_dir, 'node', node)
1774+
1775+
xlog_dir = 'pg_wal'
1776+
if self.get_version(node) < 100000:
1777+
xlog_dir = 'pg_xlog'
1778+
1779+
filepath = os.path.join(node.data_dir, xlog_dir, "00000002.history")
1780+
self.assertTrue(
1781+
os.path.exists(filepath),
1782+
"History file do not exists: {0}".format(filepath))
1783+
1784+
node.slow_start()
1785+
1786+
# "pg_receivewal --create-slot --slot archive_slot --if-not-exists "
1787+
# "&& pg_receivewal --synchronous -Z 1 /tmp/wal --slot archive_slot --no-loop"
1788+
node_restored = self.make_simple_node(
1789+
base_dir=os.path.join(module_name, fname, 'node_restored'))
1790+
node_restored.cleanup()
1791+
1792+
pg_basebackup_path = self.get_bin_path('pg_basebackup')
1793+
1794+
self.run_binary(
1795+
[
1796+
pg_basebackup_path, '-p', str(node.port), '-h', 'localhost',
1797+
'-R', '-X', 'stream', '-D', node_restored.data_dir
1798+
])
1799+
1800+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1801+
node_restored.slow_start(replica=True)
1802+
1803+
# Clean after yourself
1804+
self.del_test_dir(module_name, fname)
1805+
17311806
# TODO:
17321807
# null offset STOP LSN and latest record in previous segment is conrecord (manual only)
17331808
# archiving from promoted delayed replica

0 commit comments

Comments
 (0)