|
15 | 15 |
|
16 | 16 | classPtrackTest(ProbackupTest,unittest.TestCase): |
17 | 17 |
|
| 18 | +# @unittest.skip("skip") |
| 19 | +deftest_ptrack_eat_my_data(self): |
| 20 | +""" |
| 21 | + PGPRO-4051 |
| 22 | + """ |
| 23 | +fname=self.id().split('.')[3] |
| 24 | +backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup') |
| 25 | +node=self.make_simple_node( |
| 26 | +base_dir=os.path.join(module_name,fname,'node'), |
| 27 | +set_replication=True, |
| 28 | +ptrack_enable=True, |
| 29 | +initdb_params=['--data-checksums']) |
| 30 | + |
| 31 | +self.init_pb(backup_dir) |
| 32 | +self.add_instance(backup_dir,'node',node) |
| 33 | +self.set_archiving(backup_dir,'node',node) |
| 34 | +node.slow_start() |
| 35 | + |
| 36 | +ifnode.major_version>=12: |
| 37 | +node.safe_psql( |
| 38 | +"postgres", |
| 39 | +"CREATE EXTENSION ptrack") |
| 40 | + |
| 41 | +node.pgbench_init(scale=50) |
| 42 | + |
| 43 | +self.backup_node(backup_dir,'node',node) |
| 44 | + |
| 45 | +node_restored=self.make_simple_node( |
| 46 | +base_dir=os.path.join(module_name,fname,'node_restored')) |
| 47 | + |
| 48 | +pgbench=node.pgbench(options=['-T','300','-c','1','--no-vacuum']) |
| 49 | + |
| 50 | +foriinrange(10): |
| 51 | +print("Iteration: {0}".format(i)) |
| 52 | + |
| 53 | +sleep(2) |
| 54 | + |
| 55 | +self.backup_node(backup_dir,'node',node,backup_type='ptrack') |
| 56 | +# pgdata = self.pgdata_content(node.data_dir) |
| 57 | +# |
| 58 | +# node_restored.cleanup() |
| 59 | +# |
| 60 | +# self.restore_node(backup_dir, 'node', node_restored) |
| 61 | +# pgdata_restored = self.pgdata_content(node_restored.data_dir) |
| 62 | +# |
| 63 | +# self.compare_pgdata(pgdata, pgdata_restored) |
| 64 | + |
| 65 | +pgbench.terminate() |
| 66 | +pgbench.wait() |
| 67 | + |
| 68 | +self.switch_wal_segment(node) |
| 69 | + |
| 70 | +result=node.safe_psql("postgres","SELECT * FROM pgbench_accounts") |
| 71 | + |
| 72 | +node_restored.cleanup() |
| 73 | +self.restore_node(backup_dir,'node',node_restored) |
| 74 | +self.set_auto_conf( |
| 75 | +node_restored, {'port':node_restored.port}) |
| 76 | + |
| 77 | +node_restored.slow_start() |
| 78 | + |
| 79 | +balance=node_restored.safe_psql( |
| 80 | +'postgres', |
| 81 | +'select (select sum(tbalance) from pgbench_tellers) - ' |
| 82 | +'( select sum(bbalance) from pgbench_branches) + ' |
| 83 | +'( select sum(abalance) from pgbench_accounts ) - ' |
| 84 | +'(select sum(delta) from pgbench_history) as must_be_zero').rstrip() |
| 85 | + |
| 86 | +self.assertEqual('0',balance) |
| 87 | + |
| 88 | +# Logical comparison |
| 89 | +self.assertEqual( |
| 90 | +result, |
| 91 | +node_restored.safe_psql( |
| 92 | +'postgres', |
| 93 | +'SELECT * FROM pgbench_accounts'), |
| 94 | +'Data loss') |
| 95 | + |
| 96 | +# Clean after yourself |
| 97 | +self.del_test_dir(module_name,fname) |
| 98 | + |
18 | 99 | # @unittest.skip("skip") |
19 | 100 | deftest_ptrack_simple(self): |
20 | 101 | """make node, make full and ptrack stream backups," |
|