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

Commit69eed7a

Browse files
committed
tests: minor fixes for "archive" module
1 parent0515c2b commit69eed7a

File tree

4 files changed

+129
-10
lines changed

4 files changed

+129
-10
lines changed

‎tests/archive.py

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,6 @@ def test_pgpro434_3(self):
240240
backup_dir,'node',node,
241241
options=[
242242
"--archive-timeout=60",
243-
"--stream",
244243
"--log-level-file=info"],
245244
gdb=True)
246245

@@ -253,7 +252,83 @@ def test_pgpro434_3(self):
253252

254253
gdb.continue_execution_until_exit()
255254

256-
log_file=os.path.join(backup_dir,'log/pg_probackup.log')
255+
log_file=os.path.join(backup_dir,'log','pg_probackup.log')
256+
withopen(log_file,'r')asf:
257+
log_content=f.read()
258+
259+
self.assertIn(
260+
"ERROR: Switched WAL segment 000000010000000000000002 "
261+
"could not be archived in 60 seconds",
262+
log_content)
263+
264+
self.assertIn(
265+
"ERROR: Switched WAL segment 000000010000000000000002 "
266+
"could not be archived in 60 seconds",
267+
log_content)
268+
269+
log_file=os.path.join(node.logs_dir,'postgresql.log')
270+
withopen(log_file,'r')asf:
271+
log_content=f.read()
272+
273+
self.assertNotIn(
274+
'FailedAssertion',
275+
log_content,
276+
'PostgreSQL crashed because of a failed assert')
277+
278+
# Clean after yourself
279+
self.del_test_dir(module_name,fname)
280+
281+
# @unittest.skip("skip")
282+
deftest_pgpro434_4(self):
283+
"""
284+
Check pg_stop_backup_timeout, needed backup_timeout
285+
Fixed in commit d84d79668b0c139 and assert fixed by ptrack 1.7
286+
"""
287+
fname=self.id().split('.')[3]
288+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
289+
node=self.make_simple_node(
290+
base_dir=os.path.join(module_name,fname,'node'),
291+
set_replication=True,
292+
initdb_params=['--data-checksums'])
293+
294+
self.init_pb(backup_dir)
295+
self.add_instance(backup_dir,'node',node)
296+
self.set_archiving(backup_dir,'node',node)
297+
298+
node.slow_start()
299+
300+
gdb=self.backup_node(
301+
backup_dir,'node',node,
302+
options=[
303+
"--archive-timeout=60",
304+
"--log-level-file=info"],
305+
gdb=True)
306+
307+
gdb.set_breakpoint('pg_stop_backup')
308+
gdb.run_until_break()
309+
310+
node.append_conf(
311+
'postgresql.auto.conf',"archive_command = 'exit 1'")
312+
node.reload()
313+
314+
os.environ["PGAPPNAME"]="foo"
315+
316+
pid=node.safe_psql(
317+
"postgres",
318+
"SELECT pid "
319+
"FROM pg_stat_activity "
320+
"WHERE application_name = 'pg_probackup'").rstrip()
321+
322+
os.environ["PGAPPNAME"]="pg_probackup"
323+
324+
postgres_gdb=self.gdb_attach(pid)
325+
postgres_gdb.set_breakpoint('do_pg_stop_backup')
326+
postgres_gdb.continue_execution_until_running()
327+
328+
gdb.continue_execution_until_exit()
329+
# gdb._execute('detach')
330+
331+
log_file=os.path.join(backup_dir,'log','pg_probackup.log')
257332
withopen(log_file,'r')asf:
258333
log_content=f.read()
259334

‎tests/backup.py

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,6 +1528,7 @@ def test_backup_with_least_privileges_role(self):
15281528
'postgres',
15291529
'CREATE DATABASE backupdb')
15301530

1531+
# PG 9.5
15311532
ifself.get_version(node)<90600:
15321533
node.safe_psql(
15331534
'backupdb',
@@ -1559,6 +1560,43 @@ def test_backup_with_least_privileges_role(self):
15591560
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
15601561
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
15611562
)
1563+
# PG 9.6
1564+
elifself.get_version(node)>90600andself.get_version(node)<100000:
1565+
node.safe_psql(
1566+
'backupdb',
1567+
"REVOKE ALL ON DATABASE backupdb from PUBLIC; "
1568+
"REVOKE ALL ON SCHEMA public from PUBLIC; "
1569+
"REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC; "
1570+
"REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM PUBLIC; "
1571+
"REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM PUBLIC; "
1572+
"REVOKE ALL ON SCHEMA pg_catalog from PUBLIC; "
1573+
"REVOKE ALL ON ALL TABLES IN SCHEMA pg_catalog FROM PUBLIC; "
1574+
"REVOKE ALL ON ALL FUNCTIONS IN SCHEMA pg_catalog FROM PUBLIC; "
1575+
"REVOKE ALL ON ALL SEQUENCES IN SCHEMA pg_catalog FROM PUBLIC; "
1576+
"REVOKE ALL ON SCHEMA information_schema from PUBLIC; "
1577+
"REVOKE ALL ON ALL TABLES IN SCHEMA information_schema FROM PUBLIC; "
1578+
"REVOKE ALL ON ALL FUNCTIONS IN SCHEMA information_schema FROM PUBLIC; "
1579+
"REVOKE ALL ON ALL SEQUENCES IN SCHEMA information_schema FROM PUBLIC; "
1580+
"CREATE ROLE backup WITH LOGIN REPLICATION; "
1581+
"GRANT CONNECT ON DATABASE backupdb to backup; "
1582+
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
1583+
"GRANT SELECT ON TABLE pg_catalog.pg_proc TO backup; "
1584+
"GRANT SELECT ON TABLE pg_catalog.pg_database TO backup; "# for partial restore, checkdb and ptrack
1585+
"GRANT EXECUTE ON FUNCTION pg_catalog.nameeq(name, name) TO backup; "
1586+
"GRANT EXECUTE ON FUNCTION pg_catalog.textout(text) TO backup; "
1587+
"GRANT EXECUTE ON FUNCTION pg_catalog.timestamptz(timestamp with time zone, integer) TO backup; "
1588+
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
1589+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
1590+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_control_system() TO backup; "
1591+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup; "
1592+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup(boolean) TO backup; "
1593+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup; "
1594+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
1595+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
1596+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1597+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup;"
1598+
)
1599+
# >= 10
15621600
else:
15631601
node.safe_psql(
15641602
'backupdb',
@@ -1595,17 +1633,18 @@ def test_backup_with_least_privileges_role(self):
15951633

15961634
ifself.ptrack:
15971635
forfnamein [
1598-
'oideq(oid, oid)',
1599-
'ptrack_version()',
1600-
'pg_ptrack_clear()',
1601-
'pg_ptrack_control_lsn()',
1602-
'pg_ptrack_get_and_clear_db(oid, oid)',
1603-
'pg_ptrack_get_and_clear(oid, oid)',
1604-
'pg_ptrack_get_block_2(oid, oid, oid, bigint)']:
1636+
'pg_catalog.oideq(oid, oid)',
1637+
'pg_catalog.ptrack_version()',
1638+
'pg_catalog.pg_ptrack_clear()',
1639+
'pg_catalog.pg_ptrack_control_lsn()',
1640+
'pg_catalog.pg_ptrack_get_and_clear_db(oid, oid)',
1641+
'pg_catalog.pg_ptrack_get_and_clear(oid, oid)',
1642+
'pg_catalog.pg_ptrack_get_block_2(oid, oid, oid, bigint)',
1643+
'pg_catalog.pg_stop_backup()']:
16051644
# try:
16061645
node.safe_psql(
16071646
"backupdb",
1608-
"GRANT EXECUTE ON FUNCTIONpg_catalog.{0} "
1647+
"GRANT EXECUTE ON FUNCTION {0} "
16091648
"TO backup".format(fname))
16101649
# except:
16111650
# pass

‎tests/helpers/ptrack_helpers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,8 @@ def __init__(self, *args, **kwargs):
279279
ifself.test_env['PG_PROBACKUP_PTRACK']=='ON':
280280
self.ptrack=True
281281

282+
os.environ["PGAPPNAME"]="pg_probackup"
283+
282284
@property
283285
defpg_config_version(self):
284286
returnself.version_to_num(

‎tests/replica.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ def test_replica_stream_ptrack_backup(self):
1818
make node, take full backup, restore it and make replica from it,
1919
take full stream backup from replica
2020
"""
21+
ifnotself.ptrack:
22+
returnunittest.skip('Skipped because ptrack support is disabled')
23+
2124
fname=self.id().split('.')[3]
2225
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
2326
master=self.make_simple_node(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp