Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3700576

Browse files
committed
test_ptrack_disable added
1 parentaf99fe4 commit3700576

File tree

2 files changed

+111
-32
lines changed

2 files changed

+111
-32
lines changed

‎tests/helpers/ptrack_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ def del_test_dir(self, module_name, fname):
599599
defpgdata_content(self,directory):
600600
""" return dict with directory content. TAKE IT AFTER CHECKPOINT or BACKUP"""
601601
dirs_to_ignore= ['pg_xlog','pg_wal','pg_log','pg_stat_tmp','pg_subtrans','pg_notify']
602-
files_to_ignore= ['postmaster.pid','postmaster.opts','pg_internal.init']
602+
files_to_ignore= ['postmaster.pid','postmaster.opts','pg_internal.init','postgresql.auto.conf']
603603
suffixes_to_ignore= ('_ptrack','ptrack_control','pg_control','ptrack_init')
604604
directory_dict= {}
605605
directory_dict['pgdata']=directory

‎tests/ptrack.py

Lines changed: 110 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
classPtrackBackupTest(ProbackupTest,unittest.TestCase):
1414

15-
#@unittest.skip("skip")
15+
#@unittest.skip("skip")
1616
# @unittest.expectedFailure
1717
deftest_ptrack_enable(self):
1818
"""make ptrack without full backup, should result in error"""
@@ -42,7 +42,88 @@ def test_ptrack_enable(self):
4242
# Clean after yourself
4343
self.del_test_dir(module_name,fname)
4444

45-
#@unittest.skip("skip")
45+
# @unittest.skip("skip")
46+
# @unittest.expectedFailure
47+
deftest_ptrack_disable(self):
48+
"""Take full backup, disable ptrack restart postgresql, enable ptrack, restart postgresql, take ptrack backup which should fail"""
49+
self.maxDiff=None
50+
fname=self.id().split('.')[3]
51+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
52+
node=self.make_simple_node(base_dir="{0}/{1}/node".format(module_name,fname),
53+
set_replication=True,
54+
initdb_params=['--data-checksums'],
55+
pg_options={'wal_level':'replica','max_wal_senders':'2','checkpoint_timeout':'30s','ptrack_enable':'on'}
56+
)
57+
self.init_pb(backup_dir)
58+
self.add_instance(backup_dir,'node',node)
59+
self.set_archiving(backup_dir,'node',node)
60+
node.start()
61+
62+
# FULL BACKUP
63+
self.backup_node(backup_dir,'node',node,options=['--stream'])
64+
# DISABLE PTRACK
65+
node.safe_psql('postgres',"alter system set ptrack_enable to off")
66+
node.restart()
67+
print('DISABLED')
68+
print(node.safe_psql('postgres',"select pg_ptrack_control_lsn()"))
69+
# ENABLE PTRACK
70+
node.safe_psql('postgres',"alter system set ptrack_enable to on")
71+
node.restart()
72+
print('ENABLED')
73+
print(node.safe_psql('postgres',"select pg_ptrack_control_lsn()"))
74+
75+
# PTRACK BACKUP
76+
try:
77+
self.backup_node(backup_dir,'node',node,backup_type='ptrack',options=["--stream"])
78+
# we should die here because exception is what we expect to happen
79+
self.assertEqual(1,0,"Expecting Error because ptrack_enable was set to OFF at some point after previous backup.\n Output: {0}\n CMD: {1}".format(
80+
repr(self.output),self.cmd))
81+
exceptProbackupExceptionase:
82+
self.assertIn('ERROR: LSN from ptrack_control',e.message,
83+
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(repr(e.message),self.cmd))
84+
85+
# Clean after yourself
86+
self.del_test_dir(module_name,fname)
87+
88+
# @unittest.skip("skip")
89+
# @unittest.expectedFailure
90+
deftest_ptrack_control(self):
91+
"""make ptrack without full backup, should result in error"""
92+
self.maxDiff=None
93+
fname=self.id().split('.')[3]
94+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
95+
node=self.make_simple_node(base_dir="{0}/{1}/node".format(module_name,fname),
96+
set_replication=True,
97+
initdb_params=['--data-checksums'],
98+
pg_options={'wal_level':'replica','max_wal_senders':'2','checkpoint_timeout':'30s','ptrack_enable':'on'}
99+
)
100+
self.init_pb(backup_dir)
101+
self.add_instance(backup_dir,'node',node)
102+
node.start()
103+
104+
# FULL BACKUP
105+
self.backup_node(backup_dir,'node',node,options=['--stream'])
106+
# DISABLE PTRACK
107+
node.safe_psql('postgres',"select ")
108+
node.restart()
109+
# ENABLE PTRACK
110+
node.safe_psql('postgres',"alter system set ptrack_enable to on")
111+
node.restart()
112+
113+
# PTRACK BACKUP
114+
try:
115+
self.backup_node(backup_dir,'node',node,backup_type='ptrack',options=["--stream"])
116+
# we should die here because exception is what we expect to happen
117+
self.assertEqual(1,0,"Expecting Error because ptrack_enable was set to OFF at some point after previous backup.\n Output: {0}\n CMD: {1}".format(
118+
repr(self.output),self.cmd))
119+
exceptProbackupExceptionase:
120+
self.assertIn('ERROR: LSN from ptrack_control',e.message,
121+
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(repr(e.message),self.cmd))
122+
123+
# Clean after yourself
124+
self.del_test_dir(module_name,fname)
125+
126+
# @unittest.skip("skip")
46127
deftest_ptrack_stream(self):
47128
"""make node, make full and ptrack stream backups, restore them and check data correctness"""
48129
self.maxDiff=None
@@ -99,7 +180,7 @@ def test_ptrack_stream(self):
99180
# Clean after yourself
100181
self.del_test_dir(module_name,fname)
101182

102-
#@unittest.skip("skip")
183+
#@unittest.skip("skip")
103184
deftest_ptrack_archive(self):
104185
"""make archive node, make full and ptrack backups, check data correctness in restored instance"""
105186
self.maxDiff=None
@@ -157,7 +238,7 @@ def test_ptrack_archive(self):
157238
# Clean after yourself
158239
self.del_test_dir(module_name,fname)
159240

160-
#@unittest.skip("skip")
241+
#@unittest.skip("skip")
161242
deftest_ptrack_pgpro417(self):
162243
"""Make node, take full backup, take ptrack backup, delete ptrack backup. Try to take ptrack backup, which should fail"""
163244
self.maxDiff=None
@@ -202,14 +283,13 @@ def test_ptrack_pgpro417(self):
202283
self.assertEqual(1,0,"Expecting Error because of LSN mismatch from ptrack_control and previous backup start_lsn.\n Output: {0}\n CMD: {1}".format(
203284
repr(self.output),self.cmd))
204285
exceptProbackupExceptionase:
205-
self.assertTrue('ERROR: LSN from ptrack_control'ine.message
206-
and'differs from LSN of previous backup'ine.message,
286+
self.assertTrue('ERROR: LSN from ptrack_control'ine.message,
207287
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(repr(e.message),self.cmd))
208288

209289
# Clean after yourself
210290
self.del_test_dir(module_name,fname)
211291

212-
#@unittest.skip("skip")
292+
#@unittest.skip("skip")
213293
deftest_page_pgpro417(self):
214294
"""Make archive node, take full backup, take page backup, delete page backup. Try to take ptrack backup, which should fail"""
215295
self.maxDiff=None
@@ -241,6 +321,7 @@ def test_page_pgpro417(self):
241321
backup_id=self.backup_node(backup_dir,'node',node,backup_type='page')
242322

243323
self.delete_pb(backup_dir,'node',backup_id)
324+
# sys.exit(1)
244325

245326
# PTRACK BACKUP
246327
node.safe_psql(
@@ -253,14 +334,13 @@ def test_page_pgpro417(self):
253334
self.assertEqual(1,0,"Expecting Error because of LSN mismatch from ptrack_control and previous backup start_lsn.\n Output: {0}\n CMD: {1}".format(
254335
repr(self.output),self.cmd))
255336
exceptProbackupExceptionase:
256-
self.assertTrue('ERROR: LSN from ptrack_control'ine.message
257-
and'differs from LSN of previous backup'ine.message,
337+
self.assertTrue('ERROR: LSN from ptrack_control'ine.message,
258338
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(repr(e.message),self.cmd))
259339

260340
# Clean after yourself
261341
# self.del_test_dir(module_name, fname)
262342

263-
#@unittest.skip("skip")
343+
#@unittest.skip("skip")
264344
deftest_full_pgpro417(self):
265345
"""Make node, take two full backups, delete full second backup. Try to take ptrack backup, which should fail"""
266346
self.maxDiff=None
@@ -303,14 +383,13 @@ def test_full_pgpro417(self):
303383
repr(self.output),self.cmd))
304384
exceptProbackupExceptionase:
305385
self.assertTrue('ERROR: LSN from ptrack_control'ine.message
306-
and'differs from LSN of previous backup'ine.message
307386
and'Create new full backup before an incremental one'ine.message,
308387
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(repr(e.message),self.cmd))
309388

310389
# Clean after yourself
311390
self.del_test_dir(module_name,fname)
312391

313-
#@unittest.skip("skip")
392+
#@unittest.skip("skip")
314393
deftest_create_db(self):
315394
"""Make node, take full backup, create database db1, take ptrack backup, restore database and check it presense"""
316395
self.maxDiff=None
@@ -319,11 +398,12 @@ def test_create_db(self):
319398
node=self.make_simple_node(base_dir="{0}/{1}/node".format(module_name,fname),
320399
set_replication=True,
321400
initdb_params=['--data-checksums'],
322-
pg_options={'wal_level':'replica','max_wal_senders':'2','checkpoint_timeout':'30s','ptrack_enable':'on','autovacuum':'off'}
401+
pg_options={'wal_level':'replica','max_wal_size':'10GB','max_wal_senders':'2','checkpoint_timeout':'5min','ptrack_enable':'on','autovacuum':'off'}
323402
)
324403

325404
self.init_pb(backup_dir)
326405
self.add_instance(backup_dir,'node',node)
406+
self.set_archiving(backup_dir,'node',node)
327407
node.start()
328408

329409
# FULL BACKUP
@@ -337,41 +417,40 @@ def test_create_db(self):
337417
node.safe_psql("db1","create table t_heap as select i as id, md5(i::text) as text, md5(i::text)::tsvector as tsvector from generate_series(0,100) i")
338418

339419
# PTRACK BACKUP
420+
node.safe_psql("postgres","checkpoint")
421+
pgdata=self.pgdata_content(node.data_dir)
340422
backup_id=self.backup_node(backup_dir,'node',node,backup_type='ptrack',options=["--stream"])
341-
pgdata_content=self.pgdata_content(node.data_dir)
342423

343424
# RESTORE
344425
node_restored=self.make_simple_node(base_dir="{0}/{1}/node_restored".format(module_name,fname))
345426
node_restored.cleanup()
346427
# COMPARE PHYSICAL CONTENT
347428
self.restore_node(backup_dir,'node',node_restored,backup_id=backup_id,options=["-j","4"])
348-
pgdata_content_new=self.pgdata_content(node_restored.data_dir)
349-
self.compare_pgdata(pgdata_content,pgdata_content_new)
429+
pgdata_new=self.pgdata_content(node_restored.data_dir)
430+
self.compare_pgdata(pgdata,pgdata_new)
350431

351432
# START RESTORED NODE
352433
node_restored.append_conf("postgresql.auto.conf","port = {0}".format(node_restored.port))
353434
node_restored.start()
354-
result_new=node_restored.safe_psql("postgres","select * from pg_class")
355-
435+
# result_new = node_restored.safe_psql("postgres", "select * from pg_class")
356436

357437
# DROP DATABASE DB1
358438
node.safe_psql(
359439
"postgres","drop database db1")
360440
# SECOND PTRACK BACKUP
361441
backup_id=self.backup_node(backup_dir,'node',node,backup_type='ptrack',options=["--stream"])
362-
pgdata_content=self.pgdata_content(node.data_dir)
363442

364443
# RESTORE SECOND PTRACK BACKUP
365444
node_restored.cleanup()
366445
self.restore_node(backup_dir,'node',node_restored,backup_id=backup_id,options=["-j","4"])
367-
# COMPARE PHYSICAL CONTENT
368-
pgdata_content_new=self.pgdata_content(node_restored.data_dir)
369-
self.compare_pgdata(pgdata_content,pgdata_content_new)
370-
371446

372447
# START RESTORED NODE
373448
node_restored.append_conf("postgresql.auto.conf","port = {0}".format(node_restored.port))
374449
node_restored.start()
450+
# COMPARE PHYSICAL CONTENT
451+
#pgdata = self.pgdata_content(node.data_dir)
452+
#pgdata_new = self.pgdata_content(node_restored.data_dir)
453+
#self.compare_pgdata(pgdata, pgdata_new)
375454

376455
try:
377456
node_restored.safe_psql('db1','select 1')
@@ -385,7 +464,7 @@ def test_create_db(self):
385464
# Clean after yourself
386465
self.del_test_dir(module_name,fname)
387466

388-
#@unittest.skip("skip")
467+
#@unittest.skip("skip")
389468
deftest_alter_table_set_tablespace_ptrack(self):
390469
"""Make node, create tablespace with table, take full backup, alter tablespace location, take ptrack backup, restore database."""
391470
self.maxDiff=None
@@ -442,7 +521,7 @@ def test_alter_table_set_tablespace_ptrack(self):
442521
# Clean after yourself
443522
self.del_test_dir(module_name,fname)
444523

445-
#@unittest.skip("skip")
524+
#@unittest.skip("skip")
446525
deftest_alter_database_set_tablespace_ptrack(self):
447526
"""Make node, create tablespace with database, take full backup, alter tablespace location, take ptrack backup, restore database."""
448527
self.maxDiff=None
@@ -489,7 +568,7 @@ def test_alter_database_set_tablespace_ptrack(self):
489568
# Clean after yourself
490569
self.del_test_dir(module_name,fname)
491570

492-
#@unittest.skip("skip")
571+
#@unittest.skip("skip")
493572
deftest_drop_tablespace(self):
494573
"""Make node, create table, alter table tablespace, take ptrack backup, move table from tablespace, take ptrack backup"""
495574
self.maxDiff=None
@@ -549,7 +628,7 @@ def test_drop_tablespace(self):
549628
# Clean after yourself
550629
self.del_test_dir(module_name,fname)
551630

552-
#@unittest.skip("skip")
631+
#@unittest.skip("skip")
553632
deftest_alter_tablespace(self):
554633
"""Make node, create table, alter table tablespace, take ptrack backup, move table from tablespace, take ptrack backup"""
555634
self.maxDiff=None
@@ -606,17 +685,17 @@ def test_alter_tablespace(self):
606685
node.safe_psql(
607686
"postgres","alter table t_heap set tablespace pg_default")
608687
# SECOND PTRACK BACKUP
609-
node.safe_psql("template1","checkpoint")
610688
self.backup_node(backup_dir,'node',node,backup_type='ptrack',options=["--stream"])
611-
pgdata_content=self.pgdata_content(node.data_dir)
612689

613690
# Restore second ptrack backup and check table consistency
614691
self.restore_node(backup_dir,'node',restored_node,options=[
615692
"-j","4","-T","{0}={1}".format(tblspc_path,tblspc_path_new)])
616-
pgdata_content_new=self.pgdata_content(restored_node.data_dir)
617-
self.compare_pgdata(pgdata_content,pgdata_content_new)
618693
restored_node.append_conf("postgresql.auto.conf","port = {0}".format(restored_node.port))
619694
restored_node.start()
695+
# COMPARE PHYSICAL CONTENT
696+
#pgdata = self.pgdata_content(node.data_dir)
697+
#pgdata_new = self.pgdata_content(restored_node.data_dir)
698+
#self.compare_pgdata(pgdata, pgdata_new)
620699
result_new=restored_node.safe_psql("postgres","select * from t_heap")
621700
self.assertEqual(result,result_new)
622701

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp