Skip to content

Commit 46c1430

Browse files
committed
[Issue #320] incorrect crc calculation for pg_filenode.map
1 parent 8041e66 commit 46c1430

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

tests/incr_restore.py

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import shutil
1111
import json
1212
from testgres import QueryException
13+
from distutils.dir_util import copy_tree
1314

1415

1516
module_name = 'incr_restore'
@@ -2390,5 +2391,114 @@ def test_incremental_partial_restore_exclude_tablespace_checksum(self):
23902391
# Clean after yourself
23912392
self.del_test_dir(module_name, fname, [node2])
23922393

2394+
def test_incremental_pg_filenode_map(self):
2395+
""""""
2396+
fname = self.id().split('.')[3]
2397+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
2398+
node = self.make_simple_node(
2399+
base_dir=os.path.join(module_name, fname, 'node'),
2400+
initdb_params=['--data-checksums'])
2401+
2402+
self.init_pb(backup_dir)
2403+
self.add_instance(backup_dir, 'node', node)
2404+
self.set_archiving(backup_dir, 'node', node)
2405+
node.slow_start()
2406+
2407+
node1 = self.make_simple_node(
2408+
base_dir=os.path.join(module_name, fname, 'node1'),
2409+
initdb_params=['--data-checksums'])
2410+
node1.cleanup()
2411+
2412+
node.pgbench_init(scale=5)
2413+
2414+
# FULL backup
2415+
backup_id = self.backup_node(backup_dir, 'node', node)
2416+
2417+
# in node1 restore full backup
2418+
self.restore_node(backup_dir, 'node', node1)
2419+
self.set_auto_conf(node1, {'port': node1.port})
2420+
node1.slow_start()
2421+
2422+
pgbench = node.pgbench(
2423+
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
2424+
options=['-T', '10', '-c', '1'])
2425+
2426+
pgbench = node1.pgbench(
2427+
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
2428+
options=['-T', '10', '-c', '1'])
2429+
2430+
node.safe_psql(
2431+
'postgres',
2432+
'reindex index pg_type_oid_index')
2433+
2434+
# FULL backup
2435+
backup_id = self.backup_node(backup_dir, 'node', node)
2436+
2437+
node1.stop()
2438+
2439+
2440+
# incremental restore into node1
2441+
self.restore_node(backup_dir, 'node', node1, options=["-I", "checksum", '--log-level-file=VERBOSE'])
2442+
2443+
self.set_auto_conf(node1, {'port': node1.port})
2444+
node1.slow_start()
2445+
2446+
node1.safe_psql(
2447+
'postgres',
2448+
'select 1')
2449+
2450+
# Clean after yourself
2451+
self.del_test_dir(module_name, fname)
2452+
2453+
2454+
def test_incr_backup_filenode_map(self):
2455+
""""""
2456+
fname = self.id().split('.')[3]
2457+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
2458+
node = self.make_simple_node(
2459+
base_dir=os.path.join(module_name, fname, 'node'),
2460+
initdb_params=['--data-checksums'])
2461+
2462+
self.init_pb(backup_dir)
2463+
self.add_instance(backup_dir, 'node', node)
2464+
self.set_archiving(backup_dir, 'node', node)
2465+
node.slow_start()
2466+
2467+
node1 = self.make_simple_node(
2468+
base_dir=os.path.join(module_name, fname, 'node1'),
2469+
initdb_params=['--data-checksums'])
2470+
node1.cleanup()
2471+
2472+
node.pgbench_init(scale=5)
2473+
2474+
# FULL backup
2475+
backup_id = self.backup_node(backup_dir, 'node', node)
2476+
2477+
pgbench = node.pgbench(
2478+
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
2479+
options=['-T', '10', '-c', '1'])
2480+
2481+
backup_id = self.backup_node(backup_dir, 'node', node, backup_type='delta')
2482+
2483+
node.safe_psql(
2484+
'postgres',
2485+
'reindex index pg_type_oid_index')
2486+
2487+
backup_id = self.backup_node(
2488+
backup_dir, 'node', node, backup_type='delta', options=['--log-level-file=VERBOSE'])
2489+
2490+
# incremental restore into node1
2491+
node.cleanup()
2492+
2493+
self.restore_node(backup_dir, 'node', node)
2494+
node.slow_start()
2495+
2496+
node.safe_psql(
2497+
'postgres',
2498+
'select 1')
2499+
2500+
# Clean after yourself
2501+
self.del_test_dir(module_name, fname)
2502+
23932503
# check that MinRecPoint and BackupStartLsn are correctly used in case of --incrementa-lsn
23942504
# incremental restore + partial restore.

0 commit comments

Comments
 (0)