Skip to content

Commit 66055c2

Browse files
committed
tests: added test_multiple_segments_in_multiple_tablespaces
1 parent 15b457d commit 66055c2

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

tests/cfs_backup.py

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,112 @@ def test_multiple_segments(self):
657657
self.assertEqual(page_result, self.node.safe_psql("postgres", "SELECT * FROM t_heap"), 'Lost data after restore')
658658

659659

660+
# @unittest.expectedFailure
661+
# @unittest.skip("skip")
662+
def test_multiple_segments_in_multiple_tablespaces(self):
663+
"""
664+
Case: Make full backup before created table in the tablespace.
665+
Make ptrack backup after create table.
666+
Check: incremental backup will not greater as full
667+
"""
668+
tblspace_name_1 = 'tblspace_name_1'
669+
tblspace_name_2 = 'tblspace_name_2'
670+
671+
self.create_tblspace_in_node(self.node, tblspace_name_1, True)
672+
self.create_tblspace_in_node(self.node, tblspace_name_2, True)
673+
674+
self.node.safe_psql(
675+
"postgres",
676+
"CREATE TABLE {0} TABLESPACE {1} \
677+
AS SELECT i AS id, MD5(i::text) AS text, \
678+
MD5(repeat(i::text,10))::tsvector AS tsvector \
679+
FROM generate_series(0,10050000) i".format('t_heap_1', tblspace_name_1)
680+
)
681+
682+
self.node.safe_psql(
683+
"postgres",
684+
"CREATE TABLE {0} TABLESPACE {1} \
685+
AS SELECT i AS id, MD5(i::text) AS text, \
686+
MD5(repeat(i::text,10))::tsvector AS tsvector \
687+
FROM generate_series(0,10050000) i".format('t_heap_2', tblspace_name_2)
688+
)
689+
690+
full_result_1 = self.node.safe_psql("postgres", "SELECT * FROM t_heap_1")
691+
full_result_2 = self.node.safe_psql("postgres", "SELECT * FROM t_heap_2")
692+
693+
try:
694+
backup_id_full = self.backup_node(self.backup_dir, 'node', self.node, backup_type='full')
695+
except ProbackupException as e:
696+
self.fail(
697+
"ERROR: Full backup failed.\n {0} \n {1}".format(
698+
repr(self.cmd),
699+
repr(e.message)
700+
)
701+
)
702+
703+
self.node.safe_psql(
704+
"postgres",
705+
'INSERT INTO {0} \
706+
SELECT i AS id, MD5(i::text) AS text, \
707+
MD5(repeat(i::text,10))::tsvector AS tsvector \
708+
FROM generate_series(0,10050000) i'.format('t_heap_1')
709+
)
710+
711+
self.node.safe_psql(
712+
"postgres",
713+
'INSERT INTO {0} \
714+
SELECT i AS id, MD5(i::text) AS text, \
715+
MD5(repeat(i::text,10))::tsvector AS tsvector \
716+
FROM generate_series(0,10050000) i'.format('t_heap_2')
717+
)
718+
719+
page_result_1 = self.node.safe_psql("postgres", "SELECT * FROM t_heap_1")
720+
page_result_2 = self.node.safe_psql("postgres", "SELECT * FROM t_heap_2")
721+
722+
try:
723+
backup_id_page = self.backup_node(self.backup_dir, 'node', self.node, backup_type='page')
724+
except ProbackupException as e:
725+
self.fail(
726+
"ERROR: Incremental backup failed.\n {0} \n {1}".format(
727+
repr(self.cmd),
728+
repr(e.message)
729+
)
730+
)
731+
732+
show_backup_full = self.show_pb(self.backup_dir, 'node', backup_id_full)
733+
show_backup_page = self.show_pb(self.backup_dir, 'node', backup_id_page)
734+
self.assertGreater(
735+
show_backup_page["data-bytes"],
736+
show_backup_full["data-bytes"],
737+
"ERROR: Size of incremental backup greater as full. \n INFO: {0} >{1}".format(
738+
show_backup_page["data-bytes"],
739+
show_backup_full["data-bytes"]
740+
)
741+
)
742+
743+
# CHECK FULL BACKUP
744+
self.node.stop()
745+
self.node.cleanup()
746+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name), ignore_errors=True)
747+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name_1), ignore_errors=True)
748+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name_2), ignore_errors=True)
749+
self.restore_node(self.backup_dir, 'node', self.node, backup_id=backup_id_full, options=["-j", "4"])
750+
self.node.start()
751+
self.assertEqual(full_result_1, self.node.safe_psql("postgres", "SELECT * FROM t_heap_1"), 'Lost data after restore')
752+
self.assertEqual(full_result_2, self.node.safe_psql("postgres", "SELECT * FROM t_heap_2"), 'Lost data after restore')
753+
754+
# CHECK PAGE BACKUP
755+
self.node.stop()
756+
self.node.cleanup()
757+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name), ignore_errors=True)
758+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name_1), ignore_errors=True)
759+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name_2), ignore_errors=True)
760+
self.restore_node(self.backup_dir, 'node', self.node, backup_id=backup_id_page, options=["-j", "4"])
761+
self.node.start()
762+
self.assertEqual(page_result_1, self.node.safe_psql("postgres", "SELECT * FROM t_heap_1"), 'Lost data after restore')
763+
self.assertEqual(page_result_2, self.node.safe_psql("postgres", "SELECT * FROM t_heap_2"), 'Lost data after restore')
764+
765+
660766
# @unittest.expectedFailure
661767
# @unittest.skip("skip")
662768
def test_fullbackup_after_create_table_page_after_create_table_stream(self):

0 commit comments

Comments
 (0)