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

Commit38407a0

Browse files
author
Artur Zakirov
committed
Fix validation test
1 parentc2410fc commit38407a0

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

‎tests/pb_lib.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def show_pb(self, node, id=None, options=[], as_text=False):
178178
ifline[0]!=six.b("#")[0]
179179
])
180180

181-
defvalidate_pb(self,node,id,options=[]):
181+
defvalidate_pb(self,node,id=None,options=[]):
182182
cmd_list= [
183183
"-B",self.backup_dir(node),
184184
"validate",

‎tests/validate_test.py

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
fromosimportpath,listdir
33
importsix
44
from .pb_libimportProbackupTest
5+
fromdatetimeimportdatetime,timedelta
56
fromtestgresimportstop_all
67
importsubprocess
78

@@ -18,9 +19,9 @@ def tearDownClass(cls):
1819
except:
1920
pass
2021

21-
deftest_validate_broke_wal_1(self):
22+
deftest_validate_wal_1(self):
2223
"""recovery to latest from full backup"""
23-
node=self.make_bnode('test_validate_broke_wal_1',base_dir="tmp_dirs/validate/broke_wal_1")
24+
node=self.make_bnode('test_validate_wal_1',base_dir="tmp_dirs/validate/wal_1")
2425
node.start()
2526
self.assertEqual(self.init_pb(node),six.b(""))
2627
node.pgbench_init(scale=2)
@@ -40,6 +41,9 @@ def test_validate_broke_wal_1(self):
4041
pgbench.wait()
4142
pgbench.stdout.close()
4243

44+
# Save time to validate
45+
target_time=datetime.now()
46+
4347
target_xid=None
4448
withnode.connect("postgres")ascon:
4549
res=con.execute("INSERT INTO tbl0005 VALUES ('inserted') RETURNING (xmin)")
@@ -49,13 +53,42 @@ def test_validate_broke_wal_1(self):
4953
node.execute("postgres","SELECT pg_switch_xlog()")
5054
node.stop({"-m":"immediate"})
5155

56+
id_backup=self.show_pb(node)[0].id
57+
58+
# Validate to real time
59+
self.assertIn(six.b("INFO: Backup validation stopped on"),
60+
self.validate_pb(node,options=["--time='{:%Y-%m-%d %H:%M:%S}'".format(
61+
target_time)]))
62+
63+
# Validate to unreal time
64+
self.assertIn(six.b("ERROR: no full backup found, cannot validate."),
65+
self.validate_pb(node,options=["--time='{:%Y-%m-%d %H:%M:%S}'".format(
66+
target_time-timedelta(days=2))]))
67+
68+
# Validate to unreal time #2
69+
self.assertIn(six.b("ERROR: there are no WAL records to time"),
70+
self.validate_pb(node,options=["--time='{:%Y-%m-%d %H:%M:%S}'".format(
71+
target_time+timedelta(days=2))]))
72+
73+
# Validate to real xid
74+
self.assertIn(six.b("INFO: Backup validation stopped on"),
75+
self.validate_pb(node,options=["--xid=%s"%target_xid]))
76+
77+
# Validate to unreal xid
78+
self.assertIn(six.b("ERROR: there are no WAL records to xid"),
79+
self.validate_pb(node,options=["--xid=%d"% (int(target_xid)+1000)]))
80+
81+
# Validate with backup ID
82+
self.assertIn(six.b("INFO: Backup validation stopped on"),
83+
self.validate_pb(node,id_backup))
84+
85+
# Validate broken WAL
5286
wals_dir=path.join(self.backup_dir(node),"wal")
5387
wals= [fforfinlistdir(wals_dir)ifpath.isfile(path.join(wals_dir,f))]
5488
wals.sort()
5589
withopen(path.join(wals_dir,wals[-3]),"rb+")asf:
5690
f.seek(256)
5791
f.write(six.b("blablabla"))
5892

59-
id_backup=self.show_pb(node)[0].id
6093
res=self.validate_pb(node,id_backup,options=['--xid=%s'%target_xid])
61-
self.assertIn(six.b("there arenot WAL records to xid"),res)
94+
self.assertIn(six.b("there areno WAL records to xid"),res)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp