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

Commit05e1ec1

Browse files
committed
tests: added backup.BackupTest.test_backup_with_less_privileges_role
1 parentf6cd14e commit05e1ec1

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

‎tests/backup.py‎

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,3 +1883,157 @@ def test_parent_choosing_2(self):
18831883

18841884
# Clean after yourself
18851885
self.del_test_dir(module_name,fname)
1886+
1887+
# @unittest.skip("skip")
1888+
deftest_backup_with_less_privileges_role(self):
1889+
"""
1890+
check permissions correctness from documentation:
1891+
https://github.com/postgrespro/pg_probackup/blob/master/Documentation.md#configuring-the-database-cluster
1892+
"""
1893+
fname=self.id().split('.')[3]
1894+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
1895+
node=self.make_simple_node(
1896+
base_dir=os.path.join(module_name,fname,'node'),
1897+
set_replication=True,
1898+
initdb_params=['--data-checksums'],
1899+
pg_options={
1900+
'archive_timeout':'30s',
1901+
'checkpoint_timeout':'30s'})
1902+
1903+
ifself.ptrack:
1904+
node.append_conf('postgresql.auto.conf','ptrack_enable = on')
1905+
1906+
self.init_pb(backup_dir)
1907+
self.add_instance(backup_dir,'node',node)
1908+
self.set_archiving(backup_dir,'node',node)
1909+
node.slow_start()
1910+
1911+
node.safe_psql(
1912+
'postgres',
1913+
'CREATE DATABASE backupdb')
1914+
1915+
# PG 9.5
1916+
ifself.get_version(node)<90600:
1917+
node.safe_psql(
1918+
'backupdb',
1919+
"BEGIN; "
1920+
"CREATE ROLE backup WITH LOGIN; "
1921+
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
1922+
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
1923+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
1924+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean) TO backup; "
1925+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup() TO backup; "
1926+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup; "
1927+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
1928+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
1929+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1930+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
1931+
"COMMIT;"
1932+
)
1933+
# PG 9.6
1934+
elifself.get_version(node)>90600andself.get_version(node)<100000:
1935+
node.safe_psql(
1936+
'backupdb',
1937+
"BEGIN; "
1938+
"CREATE ROLE backup WITH LOGIN; "
1939+
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
1940+
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
1941+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
1942+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup; "
1943+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup(boolean) TO backup; "
1944+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup; "
1945+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_xlog() TO backup; "
1946+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_xlog_replay_location() TO backup; "
1947+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
1948+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1949+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
1950+
"COMMIT;"
1951+
)
1952+
# >= 10
1953+
else:
1954+
node.safe_psql(
1955+
'backupdb',
1956+
"BEGIN; "
1957+
"CREATE ROLE backup WITH LOGIN; "
1958+
"GRANT USAGE ON SCHEMA pg_catalog TO backup; "
1959+
"GRANT EXECUTE ON FUNCTION pg_catalog.current_setting(text) TO backup; "
1960+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_is_in_recovery() TO backup; "
1961+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_start_backup(text, boolean, boolean) TO backup; "
1962+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_stop_backup(boolean, boolean) TO backup; "
1963+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_create_restore_point(text) TO backup; "
1964+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO backup; "
1965+
"GRANT EXECUTE ON FUNCTION pg_catalog.pg_last_wal_replay_lsn() TO backup; "
1966+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current() TO backup; "
1967+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_current_snapshot() TO backup; "
1968+
"GRANT EXECUTE ON FUNCTION pg_catalog.txid_snapshot_xmax(txid_snapshot) TO backup; "
1969+
"COMMIT;"
1970+
)
1971+
1972+
# enable STREAM backup
1973+
node.safe_psql(
1974+
'backupdb',
1975+
'ALTER ROLE backup WITH REPLICATION;')
1976+
1977+
# FULL backup
1978+
self.backup_node(
1979+
backup_dir,'node',node,
1980+
datname='backupdb',options=['--stream','-U','backup'])
1981+
self.backup_node(
1982+
backup_dir,'node',node,
1983+
datname='backupdb',options=['-U','backup'])
1984+
1985+
# PAGE
1986+
self.backup_node(
1987+
backup_dir,'node',node,backup_type='page',
1988+
datname='backupdb',options=['-U','backup'])
1989+
self.backup_node(
1990+
backup_dir,'node',node,backup_type='page',datname='backupdb',
1991+
options=['--stream','-U','backup'])
1992+
1993+
# DELTA
1994+
self.backup_node(
1995+
backup_dir,'node',node,backup_type='delta',
1996+
datname='backupdb',options=['-U','backup'])
1997+
self.backup_node(
1998+
backup_dir,'node',node,backup_type='delta',
1999+
datname='backupdb',options=['--stream','-U','backup'])
2000+
2001+
# Restore as replica
2002+
replica=self.make_simple_node(
2003+
base_dir=os.path.join(module_name,fname,'replica'))
2004+
replica.cleanup()
2005+
2006+
self.restore_node(backup_dir,'node',replica)
2007+
self.set_replica(node,replica)
2008+
self.add_instance(backup_dir,'replica',replica)
2009+
self.set_archiving(backup_dir,'replica',replica,replica=True)
2010+
2011+
replica.slow_start(replica=True)
2012+
2013+
# FULL backup from replica
2014+
self.backup_node(
2015+
backup_dir,'replica',replica,
2016+
datname='backupdb',options=['--stream','-U','backup'])
2017+
2018+
self.backup_node(
2019+
backup_dir,'replica',replica,datname='backupdb',
2020+
options=['-U','backup','--log-level-file=verbose'])
2021+
2022+
# PAGE
2023+
self.backup_node(
2024+
backup_dir,'replica',replica,backup_type='page',
2025+
datname='backupdb',options=['-U','backup'])
2026+
self.backup_node(
2027+
backup_dir,'replica',replica,backup_type='page',
2028+
datname='backupdb',options=['--stream','-U','backup'])
2029+
2030+
# DELTA
2031+
self.backup_node(
2032+
backup_dir,'replica',replica,backup_type='delta',
2033+
datname='backupdb',options=['-U','backup'])
2034+
self.backup_node(
2035+
backup_dir,'replica',replica,backup_type='delta',
2036+
datname='backupdb',options=['--stream','-U','backup'])
2037+
2038+
# Clean after yourself
2039+
self.del_test_dir(module_name,fname)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp