@@ -128,6 +128,69 @@ def test_ptrack_disable(self):
128128 # Clean after yourself
129129 self .del_test_dir (module_name , fname )
130130
131+ # @unittest.skip("skip")
132+ def test_page_get_block (self ):
133+ """make node, make full and ptrack stream backups,"
134+ " restore them and check data correctness"""
135+ fname = self .id ().split ('.' )[3 ]
136+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
137+ node = self .make_simple_node (
138+ base_dir = "{0}/{1}/node" .format (module_name , fname ),
139+ set_replication = True ,
140+ initdb_params = ['--data-checksums' ],
141+ pg_options = {
142+ 'wal_level' : 'replica' ,
143+ 'max_wal_senders' : '2' ,
144+ 'checkpoint_timeout' : '300s' ,
145+ 'ptrack_enable' : 'on'
146+ }
147+ )
148+ self .init_pb (backup_dir )
149+ self .add_instance (backup_dir , 'node' , node )
150+ self .set_archiving (backup_dir , 'node' , node )
151+ node .start ()
152+
153+ node .safe_psql (
154+ "postgres" ,
155+ "create table t_heap as select i"
156+ " as id from generate_series(0,1) i"
157+ )
158+
159+ self .backup_node (backup_dir , 'node' , node )
160+ gdb = self .backup_node (
161+ backup_dir , 'node' , node , backup_type = 'page' ,
162+ options = ['--stream' , '--log-level-file=verbose' ],
163+ gdb = True
164+ )
165+
166+ node .safe_psql (
167+ "postgres" ,
168+ "update t_heap set id = 100500" )
169+
170+ self .backup_node (
171+ backup_dir , 'node' , node ,
172+ backup_type = 'page' , options = ['--stream' ]
173+ )
174+ pgdata = self .pgdata_content (node .data_dir )
175+
176+ result = node .safe_psql ("postgres" , "SELECT * FROM t_heap" )
177+ node .cleanup ()
178+ self .restore_node (backup_dir , 'node' , node , options = ["-j" , "4" ])
179+ pgdata_restored = self .pgdata_content (node .data_dir )
180+
181+ node .start ()
182+ # Logical comparison
183+ self .assertEqual (
184+ result ,
185+ node .safe_psql ("postgres" , "SELECT * FROM t_heap" )
186+ )
187+
188+ # Physical comparison
189+ self .compare_pgdata (pgdata , pgdata_restored )
190+
191+ # Clean after yourself
192+ # self.del_test_dir(module_name, fname)
193+
131194 # @unittest.skip("skip")
132195 def test_ptrack_get_block (self ):
133196 """make node, make full and ptrack stream backups,"
0 commit comments