Skip to content

Commit dd14c27

Browse files
s.logvinenkos.logvinenko
s.logvinenko
authored and
s.logvinenko
committed
Update tests. Add cfs_validate_backup test
1 parent 9489271 commit dd14c27

File tree

5 files changed

+143
-12
lines changed

5 files changed

+143
-12
lines changed

tests/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
ptrack_vacuum_bits_frozen, ptrack_vacuum_bits_visibility, \
88
ptrack_vacuum_full, ptrack_vacuum_truncate, pgpro560, pgpro589, \
99
false_positive, replica, compression, page, ptrack, archive, \
10-
cfs_backup_noenc, cfs_backup_enc, cfs_restore_noenc
10+
cfs_backup_noenc, cfs_backup_enc, cfs_restore_noenc, cfs_restore_enc, \
11+
cfs_validate_backup
1112

1213

1314
def load_tests(loader, tests, pattern):
@@ -40,7 +41,8 @@ def load_tests(loader, tests, pattern):
4041
suite.addTests(loader.loadTestsFromModule(cfs_backup_noenc))
4142
suite.addTests(loader.loadTestsFromModule(cfs_backup_enc))
4243
suite.addTests(loader.loadTestsFromModule(cfs_restore_noenc))
43-
44+
suite.addTests(loader.loadTestsFromModule(cfs_restore_enc))
45+
suite.addTests(loader.loadTestsFromModule(cfs_validate_backup))
4446
return suite
4547

4648
# ToDo:

tests/cfs_backup_enc.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import os
22

33
from .cfs_backup_noenc import CfsBackupNoEncTest
4-
from .helpers.cfs_helpers import find_by_name
54

65
module_name = 'cfs_backup_enc'
76
tblspace_name = 'cfs_tblspace'

tests/cfs_restore_enc.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import os
2+
3+
from .cfs_restore_noenc import CfsRestoreNoencEmptyTablespaceTest,CfsRestoreNoencTest
4+
5+
module_name = 'cfs_restore_enc'
6+
7+
8+
class CfsRestoreEncEmptyTablespaceTest(CfsRestoreNoencEmptyTablespaceTest):
9+
# --- Begin --- #
10+
def setUp(self):
11+
os.environ["PG_CIPHER_KEY"] = "super_secret_cipher_key"
12+
super(CfsRestoreNoencEmptyTablespaceTest, self).setUp()
13+
14+
15+
class CfsRestoreEncTest(CfsRestoreNoencTest):
16+
# --- Begin --- #
17+
def setUp(self):
18+
os.environ["PG_CIPHER_KEY"] = "super_secret_cipher_key"
19+
super(CfsRestoreNoencTest, self).setUp()

tests/cfs_restore_noenc.py

Lines changed: 95 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import unittest
1313
import shutil
1414

15-
from .helpers.cfs_helpers import find_by_extensions, find_by_name
15+
from .helpers.cfs_helpers import find_by_name
1616
from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
1717

1818

@@ -22,7 +22,7 @@
2222
tblspace_name_new = 'cfs_tblspace_new'
2323

2424

25-
class CfsRestoreBaseTest(ProbackupTest, unittest.TestCase):
25+
class CfsRestoreBase(ProbackupTest, unittest.TestCase):
2626
def setUp(self):
2727
self.fname = self.id().split('.')[3]
2828
self.backup_dir = os.path.join(self.tmp_path, module_name, self.fname, 'backup')
@@ -67,7 +67,7 @@ def tearDown(self):
6767
self.del_test_dir(module_name, self.fname)
6868

6969

70-
class CfsRestoreNoencEmptyTablespaceTest(CfsRestoreBaseTest):
70+
class CfsRestoreNoencEmptyTablespaceTest(CfsRestoreBase):
7171
# @unittest.expectedFailure
7272
# @unittest.skip("skip")
7373
def test_restore_empty_tablespace_from_fullbackup(self):
@@ -111,7 +111,7 @@ def test_restore_empty_tablespace_from_fullbackup(self):
111111
)
112112

113113

114-
class CfsRestoreNoencTest(CfsRestoreBaseTest):
114+
class CfsRestoreNoencTest(CfsRestoreBase):
115115
def add_data_in_cluster(self):
116116
self.node.safe_psql(
117117
"postgres",
@@ -147,7 +147,7 @@ def test_restore_from_fullbackup_to_old_location(self):
147147
)
148148
self.assertTrue(
149149
find_by_name([self.get_tblspace_path(self.node, tblspace_name)], ['pg_compression']),
150-
"ERROR: File pg_compression not found in backup dir"
150+
"ERROR: File pg_compression not found in tablespace dir"
151151
)
152152
try:
153153
self.node.start()
@@ -285,14 +285,100 @@ def test_restore_from_fullbackup_to_new_location_5_jobs(self):
285285
self.node_new.cleanup()
286286

287287
# @unittest.expectedFailure
288-
@unittest.skip("skip")
288+
# @unittest.skip("skip")
289289
def test_restore_from_fullbackup_to_old_location_tablespace_new_location(self):
290-
pass
290+
self.node.stop(['-m', 'immediate'])
291+
self.node.cleanup()
292+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name))
293+
294+
os.mkdir(self.get_tblspace_path(self.node, tblspace_name_new))
295+
296+
try:
297+
self.restore_node(
298+
self.backup_dir,
299+
'node', self.node,
300+
backup_id=self.backup_id,
301+
options=[
302+
"-T %s = %s".format(
303+
self.get_tblspace_path(self.node, tblspace_name),
304+
self.get_tblspace_path(self.node, tblspace_name_new)
305+
)
306+
]
307+
)
308+
except ProbackupException as e:
309+
self.fail(
310+
"ERROR: Restore from full backup failed. \n {0} \n {1}".format(
311+
repr(self.cmd),
312+
repr(e.message)
313+
)
314+
)
315+
self.assertTrue(
316+
find_by_name([self.get_tblspace_path(self.node, tblspace_name_new)], ['pg_compression']),
317+
"ERROR: File pg_compression not found in new tablespace location"
318+
)
319+
try:
320+
self.node.start()
321+
except ProbackupException as e:
322+
self.fail(
323+
"ERROR: Instance not started after restore. \n {0} \n {1}".format(
324+
repr(self.cmd),
325+
repr(e.message)
326+
)
327+
)
328+
329+
self.assertEqual(
330+
repr(self.node.safe_psql("postgres", "SELECT * FROM %s" % 't1')),
331+
repr(self.table_t1)
332+
)
291333

292334
# @unittest.expectedFailure
293-
@unittest.skip("skip")
335+
# @unittest.skip("skip")
294336
def test_restore_from_fullbackup_to_old_location_tablespace_new_location_3_jobs(self):
295-
pass
337+
self.node.stop(['-m', 'immediate'])
338+
self.node.cleanup()
339+
shutil.rmtree(self.get_tblspace_path(self.node, tblspace_name))
340+
341+
os.mkdir(self.get_tblspace_path(self.node, tblspace_name_new))
342+
343+
try:
344+
self.restore_node(
345+
self.backup_dir,
346+
'node', self.node,
347+
backup_id=self.backup_id,
348+
options=[
349+
"j",
350+
"3",
351+
"-T %s = %s".format(
352+
self.get_tblspace_path(self.node, tblspace_name),
353+
self.get_tblspace_path(self.node, tblspace_name_new)
354+
)
355+
]
356+
)
357+
except ProbackupException as e:
358+
self.fail(
359+
"ERROR: Restore from full backup failed. \n {0} \n {1}".format(
360+
repr(self.cmd),
361+
repr(e.message)
362+
)
363+
)
364+
self.assertTrue(
365+
find_by_name([self.get_tblspace_path(self.node, tblspace_name_new)], ['pg_compression']),
366+
"ERROR: File pg_compression not found in new tablespace location"
367+
)
368+
try:
369+
self.node.start()
370+
except ProbackupException as e:
371+
self.fail(
372+
"ERROR: Instance not started after restore. \n {0} \n {1}".format(
373+
repr(self.cmd),
374+
repr(e.message)
375+
)
376+
)
377+
378+
self.assertEqual(
379+
repr(self.node.safe_psql("postgres", "SELECT * FROM %s" % 't1')),
380+
repr(self.table_t1)
381+
)
296382

297383
# @unittest.expectedFailure
298384
@unittest.skip("skip")

tests/cfs_validate_backup.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import os
2+
import unittest
3+
import random
4+
5+
from .helpers.cfs_helpers import find_by_extensions, find_by_name, find_by_pattern, corrupt_file
6+
from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
7+
8+
module_name = 'cfs_validate_backup'
9+
tblspace_name = 'cfs_tblspace'
10+
11+
12+
class CfsValidateBackupNoenc(ProbackupTest,unittest.TestCase):
13+
def setUp(self):
14+
pass
15+
16+
def test_validate_fullbackup_empty_tablespace_after_delete_pg_compression(self):
17+
pass
18+
19+
def tearDown(self):
20+
pass
21+
22+
23+
class CfsValidateBackupNoenc(CfsValidateBackupNoenc):
24+
os.environ["PG_CIPHER_KEY"] = "super_secret_cipher_key"
25+
super(CfsValidateBackupNoenc).setUp()

0 commit comments

Comments
 (0)