Skip to content

Commit fa06d8a

Browse files
committed
tests: keep some history tests
1 parent d8f717d commit fa06d8a

File tree

1 file changed

+123
-2
lines changed

1 file changed

+123
-2
lines changed

tests/restore_test.py

Lines changed: 123 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,7 +1242,7 @@ def test_archive_restore_to_restore_point(self):
12421242
# Clean after yourself
12431243
self.del_test_dir(module_name, fname)
12441244

1245-
# @unittest.skip("skip")
1245+
@unittest.skip("skip")
12461246
# @unittest.expectedFailure
12471247
def test_zags_block_corrupt(self):
12481248
fname = self.id().split('.')[3]
@@ -1314,8 +1314,129 @@ def test_zags_block_corrupt(self):
13141314
backup_dir, 'node', node_restored)
13151315

13161316
node_restored.append_conf("postgresql.auto.conf", "archive_mode = 'off'")
1317+
node_restored.append_conf("postgresql.auto.conf", "hot_standby = 'on'")
13171318
node_restored.append_conf(
13181319
"postgresql.auto.conf", "port = {0}".format(node_restored.port))
13191320

13201321
node_restored.slow_start()
1321-
exit(1)
1322+
1323+
@unittest.skip("skip")
1324+
# @unittest.expectedFailure
1325+
def test_zags_block_corrupt_1(self):
1326+
fname = self.id().split('.')[3]
1327+
node = self.make_simple_node(
1328+
base_dir="{0}/{1}/node".format(module_name, fname),
1329+
initdb_params=['--data-checksums'],
1330+
pg_options={
1331+
'wal_level': 'replica',
1332+
'autovacuum': 'off',
1333+
'full_page_write': 'on'}
1334+
)
1335+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
1336+
self.init_pb(backup_dir)
1337+
self.add_instance(backup_dir, 'node', node)
1338+
self.set_archiving(backup_dir, 'node', node)
1339+
node.start()
1340+
1341+
self.backup_node(backup_dir, 'node', node)
1342+
1343+
node.safe_psql('postgres', 'create table tbl(i int)')
1344+
1345+
node.safe_psql('postgres', 'create index idx ON tbl (i)')
1346+
1347+
node.safe_psql(
1348+
'postgres',
1349+
'insert into tbl select i from generate_series(0,100000) as i')
1350+
1351+
print(node.safe_psql(
1352+
'postgres',
1353+
"select pg_relation_size('idx')"))
1354+
1355+
node.safe_psql(
1356+
'postgres',
1357+
'delete from tbl where i%2 = 0')
1358+
1359+
node.safe_psql(
1360+
'postgres',
1361+
'explain analyze select i from tbl order by i')
1362+
1363+
node.safe_psql(
1364+
'postgres',
1365+
'select i from tbl order by i')
1366+
1367+
node.safe_psql(
1368+
'postgres',
1369+
'create extension pageinspect')
1370+
1371+
print(node.safe_psql(
1372+
'postgres',
1373+
"select * from bt_page_stats('idx',1)"))
1374+
1375+
node.safe_psql(
1376+
'postgres',
1377+
'checkpoint')
1378+
1379+
node.safe_psql(
1380+
'postgres',
1381+
'insert into tbl select i from generate_series(0,100) as i')
1382+
1383+
node.safe_psql(
1384+
'postgres',
1385+
'insert into tbl select i from generate_series(0,100) as i')
1386+
1387+
node.safe_psql(
1388+
'postgres',
1389+
'insert into tbl select i from generate_series(0,100) as i')
1390+
1391+
node.safe_psql(
1392+
'postgres',
1393+
'insert into tbl select i from generate_series(0,100) as i')
1394+
1395+
self.switch_wal_segment(node)
1396+
1397+
node_restored = self.make_simple_node(
1398+
base_dir="{0}/{1}/node_restored".format(module_name, fname),
1399+
initdb_params=['--data-checksums'],
1400+
pg_options={'wal_level': 'replica'}
1401+
)
1402+
1403+
pgdata = self.pgdata_content(node.data_dir)
1404+
1405+
node_restored.cleanup()
1406+
1407+
self.restore_node(
1408+
backup_dir, 'node', node_restored)
1409+
1410+
node_restored.append_conf("postgresql.auto.conf", "archive_mode = 'off'")
1411+
node_restored.append_conf("postgresql.auto.conf", "hot_standby = 'on'")
1412+
node_restored.append_conf(
1413+
"postgresql.auto.conf", "port = {0}".format(node_restored.port))
1414+
1415+
node_restored.slow_start()
1416+
1417+
while True:
1418+
with open(node_restored.pg_log_file, 'r') as f:
1419+
if 'selected new timeline ID' in f.read():
1420+
break
1421+
1422+
with open(node_restored.pg_log_file, 'r') as f:
1423+
print(f.read())
1424+
1425+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1426+
1427+
self.compare_pgdata(pgdata, pgdata_restored)
1428+
1429+
# pg_xlogdump_path = self.get_bin_path('pg_xlogdump')
1430+
1431+
# pg_xlogdump = self.run_binary(
1432+
# [
1433+
# pg_xlogdump_path, '-b',
1434+
# os.path.join(backup_dir, 'wal', 'node', '000000010000000000000003'),
1435+
# ' | ', 'grep', 'Btree', ''
1436+
# ], async=False)
1437+
1438+
if pg_xlogdump.returncode:
1439+
self.assertFalse(
1440+
True,
1441+
'Failed to start pg_wal_dump: {0}'.format(
1442+
pg_receivexlog.communicate()[1]))

0 commit comments

Comments
 (0)