From 6dc2eaf9db642db486a0cb600757cd6d52d3bce0 Mon Sep 17 00:00:00 2001 From: Grigory Smolkin Date: Fri, 27 Dec 2019 00:39:35 +0300 Subject: [PATCH] [Issue #155] tests fixes --- tests/archive.py | 85 ++++++++++++++++++++++++++++++++++++++++++---- tests/delete.py | 8 ++--- tests/retention.py | 40 +++++++++++----------- 3 files changed, 102 insertions(+), 31 deletions(-) diff --git a/tests/archive.py b/tests/archive.py index 5650afe8..16f9aa8b 100644 --- a/tests/archive.py +++ b/tests/archive.py @@ -1413,10 +1413,18 @@ class ArchiveTest(ProbackupTest, unittest.TestCase): self.assertEqual(timeline_1['status'], "OK") self.assertEqual(len(timeline_3['lost-segments']), 2) - self.assertEqual(timeline_3['lost-segments'][0]['begin-segno'], '0000000000000012') - self.assertEqual(timeline_3['lost-segments'][0]['end-segno'], '0000000000000013') - self.assertEqual(timeline_3['lost-segments'][1]['begin-segno'], '0000000000000017') - self.assertEqual(timeline_3['lost-segments'][1]['end-segno'], '0000000000000017') + self.assertEqual( + timeline_3['lost-segments'][0]['begin-segno'], + '000000030000000000000012') + self.assertEqual( + timeline_3['lost-segments'][0]['end-segno'], + '000000030000000000000013') + self.assertEqual( + timeline_3['lost-segments'][1]['begin-segno'], + '000000030000000000000017') + self.assertEqual( + timeline_3['lost-segments'][1]['end-segno'], + '000000030000000000000017') self.assertEqual(len(timeline_6['backups']), 0) self.assertEqual(len(timeline_5['backups']), 0) @@ -1487,7 +1495,9 @@ class ArchiveTest(ProbackupTest, unittest.TestCase): # sanity for timeline in timelines: - self.assertEqual(timeline['min-segno'], '0000000000000001') + self.assertEqual( + timeline['min-segno'], + '000000010000000000000001') self.assertEqual(timeline['status'], 'OK') self.del_test_dir(module_name, fname) @@ -1539,7 +1549,9 @@ class ArchiveTest(ProbackupTest, unittest.TestCase): # sanity for timeline in timelines: - self.assertEqual(timeline['min-segno'], '0000000000000002') + self.assertEqual( + timeline['min-segno'], + '000000010000000000000002') self.assertEqual(timeline['status'], 'OK') self.del_test_dir(module_name, fname) @@ -1690,8 +1702,67 @@ class ArchiveTest(ProbackupTest, unittest.TestCase): self.del_test_dir(module_name, fname) + # @unittest.skip("skip") + # @unittest.expectedFailure + def test_hexadecimal_timeline(self): + """ + Check that timelines are correct. + """ + fname = self.id().split('.')[3] + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') + node = self.make_simple_node( + base_dir=os.path.join(module_name, fname, 'node'), + set_replication=True, + initdb_params=['--data-checksums'], + pg_options={'autovacuum': 'off'}) + + self.init_pb(backup_dir) + self.add_instance(backup_dir, 'node', node) + self.set_archiving(backup_dir, 'node', node) + node.slow_start() + + backup_id = self.backup_node(backup_dir, 'node', node) + node.pgbench_init(scale=2) + + # create timelines + for i in range(1, 13): + # print(i) + node.cleanup() + self.restore_node( + backup_dir, 'node', node, + options=['--recovery-target-timeline={0}'.format(i)]) + node.slow_start() + node.pgbench_init(scale=2) + + show = self.show_archive(backup_dir) + + timelines = show[0]['timelines'] + + print(timelines[0]) + + tli13 = timelines[0] + + self.assertEqual( + 13, + tli13['tli']) + + self.assertEqual( + 12, + tli13['parent-tli']) + + self.assertEqual( + backup_id, + tli13['closest-backup-id']) + + self.assertEqual( + '0000000D000000000000001B', + tli13['max-segno']) + + # Clean after yourself + self.del_test_dir(module_name, fname) + # important - switchpoint may be NullOffset LSN and not actually existing in archive to boot. -# so write validation code accordingly +# so write WAL validation code accordingly # change wal-seg-size # diff --git a/tests/delete.py b/tests/delete.py index d6e9b2db..389584e8 100644 --- a/tests/delete.py +++ b/tests/delete.py @@ -766,8 +766,8 @@ class DeleteTest(ProbackupTest, unittest.TestCase): output) self.assertIn( - 'On timeline 1 WAL segments between 0000000000000001 ' - 'and 0000000000000003 can be removed', + 'On timeline 1 WAL segments between 000000010000000000000001 ' + 'and 000000010000000000000003 can be removed', output) self.assertEqual(len(self.show_pb(backup_dir, 'node')), 4) @@ -791,8 +791,8 @@ class DeleteTest(ProbackupTest, unittest.TestCase): output) self.assertIn( - 'On timeline 1 WAL segments between 0000000000000001 ' - 'and 0000000000000003 will be removed', + 'On timeline 1 WAL segments between 000000010000000000000001 ' + 'and 000000010000000000000003 will be removed', output) self.assertEqual(len(self.show_pb(backup_dir, 'node')), 1) diff --git a/tests/retention.py b/tests/retention.py index adbbd18a..d6ac6653 100644 --- a/tests/retention.py +++ b/tests/retention.py @@ -63,10 +63,10 @@ class RetentionTest(ProbackupTest, unittest.TestCase): if not wal_name.endswith(".backup"): if self.archive_compress: - wal_name = wal_name[-19:] + wal_name = wal_name[-27:] wal_name = wal_name[:-3] else: - wal_name = wal_name[-16:] + wal_name = wal_name[-24:] self.assertTrue(wal_name >= min_wal) self.assertTrue(wal_name <= max_wal) @@ -2234,8 +2234,8 @@ class RetentionTest(ProbackupTest, unittest.TestCase): '--log-level-console=verbose']) self.assertIn( - 'INFO: On timeline 4 WAL segments between 0000000000000002 ' - 'and 0000000000000006 can be removed', + 'INFO: On timeline 4 WAL segments between 000000040000000000000002 ' + 'and 000000040000000000000006 can be removed', output) self.assertIn( @@ -2259,8 +2259,8 @@ class RetentionTest(ProbackupTest, unittest.TestCase): options=['--delete-wal', '--log-level-console=verbose']) self.assertIn( - 'INFO: On timeline 4 WAL segments between 0000000000000002 ' - 'and 0000000000000006 will be removed', + 'INFO: On timeline 4 WAL segments between 000000040000000000000002 ' + 'and 000000040000000000000006 will be removed', output) self.assertIn( @@ -2281,11 +2281,11 @@ class RetentionTest(ProbackupTest, unittest.TestCase): self.assertEqual( show_tli4_before['min-segno'], - '0000000000000002') + '000000040000000000000002') self.assertEqual( show_tli4_after['min-segno'], - '0000000000000006') + '000000040000000000000006') self.assertFalse(show_tli5_after) @@ -2461,8 +2461,8 @@ class RetentionTest(ProbackupTest, unittest.TestCase): self.assertIn( 'LOG: Archive backup {0} to stay consistent protect from ' - 'purge WAL interval between 0000000000000004 and 0000000000000004 ' - 'on timeline 1'.format(B1), output) + 'purge WAL interval between 000000010000000000000004 ' + 'and 000000010000000000000004 on timeline 1'.format(B1), output) start_lsn_B4 = self.show_pb(backup_dir, 'node', B4)['start-lsn'] self.assertIn( @@ -2471,13 +2471,13 @@ class RetentionTest(ProbackupTest, unittest.TestCase): self.assertIn( 'LOG: Timeline 3 to stay reachable from timeline 1 protect ' - 'from purge WAL interval between 0000000000000005 and ' - '0000000000000008 on timeline 2', output) + 'from purge WAL interval between 000000020000000000000005 and ' + '000000020000000000000008 on timeline 2', output) self.assertIn( 'LOG: Timeline 3 to stay reachable from timeline 1 protect ' - 'from purge WAL interval between 0000000000000004 and ' - '0000000000000005 on timeline 1', output) + 'from purge WAL interval between 000000010000000000000004 and ' + '000000010000000000000005 on timeline 1', output) show_tli1_before = self.show_archive(backup_dir, 'node', tli=1) show_tli2_before = self.show_archive(backup_dir, 'node', tli=2) @@ -2509,11 +2509,11 @@ class RetentionTest(ProbackupTest, unittest.TestCase): self.assertEqual( show_tli4_before['min-segno'], - '0000000000000002') + '000000040000000000000002') self.assertEqual( show_tli4_after['min-segno'], - '0000000000000006') + '000000040000000000000006') self.assertFalse(show_tli5_after) @@ -2528,19 +2528,19 @@ class RetentionTest(ProbackupTest, unittest.TestCase): self.assertEqual( show_tli1_after['lost-segments'][0]['begin-segno'], - '0000000000000006') + '000000010000000000000006') self.assertEqual( show_tli1_after['lost-segments'][0]['end-segno'], - '0000000000000009') + '000000010000000000000009') self.assertEqual( show_tli2_after['lost-segments'][0]['begin-segno'], - '0000000000000009') + '000000020000000000000009') self.assertEqual( show_tli2_after['lost-segments'][0]['end-segno'], - '0000000000000009') + '000000020000000000000009') self.validate_pb(backup_dir, 'node')