Skip to content

Commit c670de2

Browse files
committed
tests: update compatibility module
1 parent 0410ff8 commit c670de2

File tree

1 file changed

+144
-7
lines changed

1 file changed

+144
-7
lines changed

tests/compatibility.py

Lines changed: 144 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,8 @@ def test_page_vacuum_truncate(self):
10411041
"postgres",
10421042
"vacuum t_heap")
10431043

1044-
self.backup_node(backup_dir, 'node', node, old_binary=True)
1044+
id1 = self.backup_node(backup_dir, 'node', node, old_binary=True)
1045+
pgdata1 = self.pgdata_content(node.data_dir)
10451046

10461047
node.safe_psql(
10471048
"postgres",
@@ -1051,8 +1052,9 @@ def test_page_vacuum_truncate(self):
10511052
"postgres",
10521053
"vacuum t_heap")
10531054

1054-
self.backup_node(
1055+
id2 = self.backup_node(
10551056
backup_dir, 'node', node, backup_type='page', old_binary=True)
1057+
pgdata2 = self.pgdata_content(node.data_dir)
10561058

10571059
node.safe_psql(
10581060
"postgres",
@@ -1061,23 +1063,49 @@ def test_page_vacuum_truncate(self):
10611063
"md5(repeat(i::text,10))::tsvector as tsvector "
10621064
"from generate_series(0,1) i")
10631065

1064-
self.backup_node(
1066+
id3 = self.backup_node(
10651067
backup_dir, 'node', node, backup_type='page', old_binary=True)
1066-
1067-
pgdata = self.pgdata_content(node.data_dir)
1068+
pgdata3 = self.pgdata_content(node.data_dir)
10681069

10691070
node_restored = self.make_simple_node(
10701071
base_dir=os.path.join(module_name, fname, 'node_restored'))
10711072
node_restored.cleanup()
10721073

1073-
self.restore_node(backup_dir, 'node', node_restored)
1074+
self.restore_node(
1075+
backup_dir, 'node', node_restored,
1076+
data_dir=node_restored.data_dir, backup_id=id1)
10741077

10751078
# Physical comparison
10761079
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1077-
self.compare_pgdata(pgdata, pgdata_restored)
1080+
self.compare_pgdata(pgdata1, pgdata_restored)
10781081

10791082
self.set_auto_conf(node_restored, {'port': node_restored.port})
10801083
node_restored.slow_start()
1084+
node_restored.cleanup()
1085+
1086+
self.restore_node(
1087+
backup_dir, 'node', node_restored,
1088+
data_dir=node_restored.data_dir, backup_id=id2)
1089+
1090+
# Physical comparison
1091+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1092+
self.compare_pgdata(pgdata2, pgdata_restored)
1093+
1094+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1095+
node_restored.slow_start()
1096+
node_restored.cleanup()
1097+
1098+
self.restore_node(
1099+
backup_dir, 'node', node_restored,
1100+
data_dir=node_restored.data_dir, backup_id=id3)
1101+
1102+
# Physical comparison
1103+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1104+
self.compare_pgdata(pgdata3, pgdata_restored)
1105+
1106+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1107+
node_restored.slow_start()
1108+
node_restored.cleanup()
10811109

10821110
# Clean after yourself
10831111
self.del_test_dir(module_name, fname)
@@ -1162,6 +1190,115 @@ def test_page_vacuum_truncate_compression(self):
11621190
# Clean after yourself
11631191
self.del_test_dir(module_name, fname)
11641192

1193+
# @unittest.skip("skip")
1194+
def test_page_vacuum_truncate_compressed_1(self):
1195+
"""
1196+
make node, create table, take full backup,
1197+
delete all data, vacuum relation,
1198+
take page backup, insert some data,
1199+
take second page backup,
1200+
restore latest page backup using new binary
1201+
and check data correctness
1202+
old binary should be 2.2.x version
1203+
"""
1204+
fname = self.id().split('.')[3]
1205+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
1206+
node = self.make_simple_node(
1207+
base_dir=os.path.join(module_name, fname, 'node'),
1208+
set_replication=True,
1209+
initdb_params=['--data-checksums'],
1210+
pg_options={'autovacuum': 'off'})
1211+
1212+
self.init_pb(backup_dir, old_binary=True)
1213+
self.add_instance(backup_dir, 'node', node, old_binary=True)
1214+
self.set_archiving(backup_dir, 'node', node, old_binary=True)
1215+
node.slow_start()
1216+
1217+
node.safe_psql(
1218+
"postgres",
1219+
"create sequence t_seq; "
1220+
"create table t_heap as select i as id, "
1221+
"md5(i::text) as text, "
1222+
"md5(repeat(i::text,10))::tsvector as tsvector "
1223+
"from generate_series(0,1024) i")
1224+
1225+
node.safe_psql(
1226+
"postgres",
1227+
"vacuum t_heap")
1228+
1229+
id1 = self.backup_node(
1230+
backup_dir, 'node', node,
1231+
old_binary=True, options=['--compress'])
1232+
pgdata1 = self.pgdata_content(node.data_dir)
1233+
1234+
node.safe_psql(
1235+
"postgres",
1236+
"delete from t_heap")
1237+
1238+
node.safe_psql(
1239+
"postgres",
1240+
"vacuum t_heap")
1241+
1242+
id2 = self.backup_node(
1243+
backup_dir, 'node', node, backup_type='page',
1244+
old_binary=True, options=['--compress'])
1245+
pgdata2 = self.pgdata_content(node.data_dir)
1246+
1247+
node.safe_psql(
1248+
"postgres",
1249+
"insert into t_heap select i as id, "
1250+
"md5(i::text) as text, "
1251+
"md5(repeat(i::text,10))::tsvector as tsvector "
1252+
"from generate_series(0,1) i")
1253+
1254+
id3 = self.backup_node(
1255+
backup_dir, 'node', node, backup_type='page',
1256+
old_binary=True, options=['--compress'])
1257+
pgdata3 = self.pgdata_content(node.data_dir)
1258+
1259+
node_restored = self.make_simple_node(
1260+
base_dir=os.path.join(module_name, fname, 'node_restored'))
1261+
node_restored.cleanup()
1262+
1263+
self.restore_node(
1264+
backup_dir, 'node', node_restored,
1265+
data_dir=node_restored.data_dir, backup_id=id1)
1266+
1267+
# Physical comparison
1268+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1269+
self.compare_pgdata(pgdata1, pgdata_restored)
1270+
1271+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1272+
node_restored.slow_start()
1273+
node_restored.cleanup()
1274+
1275+
self.restore_node(
1276+
backup_dir, 'node', node_restored,
1277+
data_dir=node_restored.data_dir, backup_id=id2)
1278+
1279+
# Physical comparison
1280+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1281+
self.compare_pgdata(pgdata2, pgdata_restored)
1282+
1283+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1284+
node_restored.slow_start()
1285+
node_restored.cleanup()
1286+
1287+
self.restore_node(
1288+
backup_dir, 'node', node_restored,
1289+
data_dir=node_restored.data_dir, backup_id=id3)
1290+
1291+
# Physical comparison
1292+
pgdata_restored = self.pgdata_content(node_restored.data_dir)
1293+
self.compare_pgdata(pgdata3, pgdata_restored)
1294+
1295+
self.set_auto_conf(node_restored, {'port': node_restored.port})
1296+
node_restored.slow_start()
1297+
node_restored.cleanup()
1298+
1299+
# Clean after yourself
1300+
self.del_test_dir(module_name, fname)
1301+
11651302
# @unittest.skip("skip")
11661303
def test_hidden_files(self):
11671304
"""

0 commit comments

Comments
 (0)