|
12 | 12 | import unittest
|
13 | 13 | import shutil
|
14 | 14 |
|
15 |
| -from .helpers.cfs_helpers import find_by_extensions, find_by_name |
| 15 | +from .helpers.cfs_helpers import find_by_name |
16 | 16 | from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
|
17 | 17 |
|
18 | 18 |
|
|
22 | 22 | tblspace_name_new = 'cfs_tblspace_new'
|
23 | 23 |
|
24 | 24 |
|
25 |
| -class CfsRestoreBaseTest(ProbackupTest, unittest.TestCase): |
| 25 | +class CfsRestoreBase(ProbackupTest, unittest.TestCase): |
26 | 26 | def setUp(self):
|
27 | 27 | self.fname = self.id().split('.')[3]
|
28 | 28 | self.backup_dir = os.path.join(self.tmp_path, module_name, self.fname, 'backup')
|
@@ -67,7 +67,7 @@ def tearDown(self):
|
67 | 67 | self.del_test_dir(module_name, self.fname)
|
68 | 68 |
|
69 | 69 |
|
70 |
| -class CfsRestoreNoencEmptyTablespaceTest(CfsRestoreBaseTest): |
| 70 | +class CfsRestoreNoencEmptyTablespaceTest(CfsRestoreBase): |
71 | 71 | # @unittest.expectedFailure
|
72 | 72 | # @unittest.skip("skip")
|
73 | 73 | def test_restore_empty_tablespace_from_fullbackup(self):
|
@@ -111,7 +111,7 @@ def test_restore_empty_tablespace_from_fullbackup(self):
|
111 | 111 | )
|
112 | 112 |
|
113 | 113 |
|
114 |
| -class CfsRestoreNoencTest(CfsRestoreBaseTest): |
| 114 | +class CfsRestoreNoencTest(CfsRestoreBase): |
115 | 115 | def add_data_in_cluster(self):
|
116 | 116 | self.node.safe_psql(
|
117 | 117 | "postgres",
|
@@ -147,7 +147,7 @@ def test_restore_from_fullbackup_to_old_location(self):
|
147 | 147 | )
|
148 | 148 | self.assertTrue(
|
149 | 149 | 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" |
151 | 151 | )
|
152 | 152 | try:
|
153 | 153 | self.node.start()
|
@@ -285,14 +285,100 @@ def test_restore_from_fullbackup_to_new_location_5_jobs(self):
|
285 | 285 | self.node_new.cleanup()
|
286 | 286 |
|
287 | 287 | # @unittest.expectedFailure
|
288 |
| - @unittest.skip("skip") |
| 288 | + # @unittest.skip("skip") |
289 | 289 | 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 | + ) |
291 | 333 |
|
292 | 334 | # @unittest.expectedFailure
|
293 |
| - @unittest.skip("skip") |
| 335 | + # @unittest.skip("skip") |
294 | 336 | 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 | + ) |
296 | 382 |
|
297 | 383 | # @unittest.expectedFailure
|
298 | 384 | @unittest.skip("skip")
|
|
0 commit comments