Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0bac131

Browse files
committed
tests: added external.ExternalTest.test_external_merge_3
1 parent 486cdc2 commit 0bac131

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

tests/external.py

+94
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ def test_external_simple(self):
5858
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(
5959
repr(e.message), self.cmd))
6060

61+
sleep(1)
62+
6163
# FULL backup
6264
self.backup_node(
6365
backup_dir, 'node', node, backup_type="full",
@@ -944,6 +946,98 @@ def test_external_merge_single(self):
944946
# Clean after yourself
945947
self.del_test_dir(module_name, fname)
946948

949+
# @unittest.expectedFailure
950+
# @unittest.skip("skip")
951+
def test_external_merge_3(self):
952+
""""""
953+
fname = self.id().split('.')[3]
954+
backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup')
955+
node = self.make_simple_node(
956+
base_dir=os.path.join(module_name, fname, 'node'),
957+
set_replication=True,
958+
initdb_params=['--data-checksums'],
959+
pg_options={'autovacuum': 'off'})
960+
961+
self.init_pb(backup_dir)
962+
self.add_instance(backup_dir, 'node', node)
963+
self.set_archiving(backup_dir, 'node', node)
964+
node.slow_start()
965+
966+
node.pgbench_init(scale=3)
967+
968+
# FULL backup
969+
self.backup_node(backup_dir, 'node', node, options=["-j", "4"])
970+
971+
external_dir1 = self.get_tblspace_path(node, 'external_dir1')
972+
external_dir2 = self.get_tblspace_path(node, 'external_dir2')
973+
974+
pgbench = node.pgbench(options=['-T', '30', '-c', '1', '--no-vacuum'])
975+
pgbench.wait()
976+
977+
# FULL backup
978+
backup_id = self.backup_node(
979+
backup_dir, 'node', node)
980+
981+
# fill external directories with changed data
982+
self.restore_node(
983+
backup_dir, 'node', node,
984+
data_dir=external_dir1)
985+
986+
self.restore_node(
987+
backup_dir, 'node', node,
988+
data_dir=external_dir2)
989+
990+
self.delete_pb(backup_dir, 'node', backup_id=backup_id)
991+
992+
# page backup with external directories
993+
self.backup_node(
994+
backup_dir, 'node', node, backup_type="page",
995+
options=[
996+
"-j", "4",
997+
"-E", "{0}{1}{2}".format(
998+
external_dir1,
999+
self.EXTERNAL_DIRECTORY_DELIMITER,
1000+
external_dir2)])
1001+
1002+
# page backup with external directories
1003+
backup_id = self.backup_node(
1004+
backup_dir, 'node', node, backup_type="page",
1005+
options=[
1006+
"-j", "4",
1007+
"-E", "{0}{1}{2}".format(
1008+
external_dir1,
1009+
self.EXTERNAL_DIRECTORY_DELIMITER,
1010+
external_dir2)])
1011+
1012+
pgdata = self.pgdata_content(
1013+
node.base_dir, exclude_dirs=['logs'])
1014+
1015+
self.merge_backup(backup_dir, 'node', backup_id=backup_id)
1016+
1017+
# RESTORE
1018+
node.cleanup()
1019+
shutil.rmtree(node.base_dir, ignore_errors=True)
1020+
1021+
external_dir1_new = self.get_tblspace_path(node, 'external_dir1')
1022+
external_dir2_new = self.get_tblspace_path(node, 'external_dir2')
1023+
1024+
self.restore_node(
1025+
backup_dir, 'node', node,
1026+
options=[
1027+
"-j", "4",
1028+
"--external-mapping={0}={1}".format(
1029+
external_dir1, external_dir1_new),
1030+
"--external-mapping={0}={1}".format(
1031+
external_dir2, external_dir2_new)])
1032+
1033+
pgdata_restored = self.pgdata_content(
1034+
node.base_dir, exclude_dirs=['logs'])
1035+
1036+
self.compare_pgdata(pgdata, pgdata_restored)
1037+
1038+
# Clean after yourself
1039+
self.del_test_dir(module_name, fname)
1040+
9471041
# @unittest.expectedFailure
9481042
# @unittest.skip("skip")
9491043
def test_external_merge_double(self):

0 commit comments

Comments
 (0)