Skip to content

Commit 7828e1f

Browse files
committed
tests: tests.restore_test.RestoreTest.test_zags_block_corrupt added
1 parent 85f7559 commit 7828e1f

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

tests/restore_test.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,3 +1241,70 @@ def test_archive_restore_to_restore_point(self):
12411241

12421242
# Clean after yourself
12431243
self.del_test_dir(module_name, fname)
1244+
1245+
# @unittest.skip("skip")
1246+
# @unittest.expectedFailure
1247+
def test_zags_block_corrupt(self):
1248+
fname = self.id().split('.')[3]
1249+
node = self.make_simple_node(
1250+
base_dir="{0}/{1}/node".format(module_name, fname),
1251+
initdb_params=['--data-checksums'],
1252+
pg_options={'wal_level': 'replica'}
1253+
)
1254+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
1255+
self.init_pb(backup_dir)
1256+
self.add_instance(backup_dir, 'node', node)
1257+
self.set_archiving(backup_dir, 'node', node)
1258+
node.start()
1259+
1260+
self.backup_node(backup_dir, 'node', node)
1261+
1262+
conn = node.connect()
1263+
with node.connect("postgres") as conn:
1264+
1265+
conn.execute(
1266+
"create table tbl(i int)")
1267+
conn.execute(
1268+
"create index idx ON tbl (i)")
1269+
conn.execute(
1270+
"insert into tbl select i from generate_series(0,400) as i")
1271+
conn.execute(
1272+
"select pg_relation_size('idx')")
1273+
conn.execute(
1274+
"delete from tbl where i < 100")
1275+
conn.execute(
1276+
"explain analyze select i from tbl order by i")
1277+
conn.execute(
1278+
"select i from tbl order by i")
1279+
conn.execute(
1280+
"create extension pageinspect")
1281+
print(conn.execute(
1282+
"select * from bt_page_stats('idx',1)"))
1283+
conn.execute(
1284+
"insert into tbl select i from generate_series(0,100) as i")
1285+
conn.execute(
1286+
"insert into tbl select i from generate_series(0,100) as i")
1287+
conn.execute(
1288+
"insert into tbl select i from generate_series(0,100) as i")
1289+
conn.execute(
1290+
"insert into tbl select i from generate_series(0,100) as i")
1291+
1292+
conn.commit()
1293+
1294+
node_restored = self.make_simple_node(
1295+
base_dir="{0}/{1}/node_restored".format(module_name, fname),
1296+
initdb_params=['--data-checksums'],
1297+
pg_options={'wal_level': 'replica'}
1298+
)
1299+
1300+
node_restored.cleanup()
1301+
1302+
self.restore_node(
1303+
backup_dir, 'node', node_restored)
1304+
1305+
node_restored.append_conf("postgresql.auto.conf", "archive_mode = 'off'")
1306+
node_restored.append_conf(
1307+
"postgresql.auto.conf", "port = {0}".format(node_restored.port))
1308+
1309+
node_restored.slow_start()
1310+
exit(1)

0 commit comments

Comments
 (0)