1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2025-03-17 21:18:00 +02:00

tests: added set_auto_conf()

This commit is contained in:
Grigory Smolkin 2019-09-14 02:49:41 +03:00
parent 9f817080e6
commit 2413516389

View File

@ -1018,46 +1018,76 @@ class ProbackupTest(object):
self, backup_dir, instance, node, replica=False,
overwrite=False, compress=False, old_binary=False):
# parse postgresql.auto.conf
options = {}
if replica:
archive_mode = 'always'
node.append_conf('postgresql.auto.conf', 'hot_standby = on')
options['archive_mode'] = 'always'
options['hot_standby'] = 'on'
else:
archive_mode = 'on'
options['archive_mode'] = 'on'
node.append_conf(
'postgresql.auto.conf',
'archive_mode = {0}'.format(archive_mode)
)
if os.name == 'posix':
archive_command = '"{0}" archive-push -B {1} --instance={2} '.format(
options['archive_command'] = '"{0}" archive-push -B {1} --instance={2} '.format(
self.probackup_path, backup_dir, instance)
elif os.name == 'nt':
archive_command = '"{0}" archive-push -B {1} --instance={2} '.format(
options['archive_command'] = '"{0}" archive-push -B {1} --instance={2} '.format(
self.probackup_path.replace("\\","\\\\"),
backup_dir.replace("\\","\\\\"),
instance)
backup_dir.replace("\\","\\\\"), instance)
# don`t forget to kill old_binary after remote ssh release
if self.remote and not old_binary:
archive_command = archive_command + '--remote-proto=ssh --remote-host=localhost '
options['archive_command'] += '--remote-proto=ssh '
options['archive_command'] += '--remote-host=localhost '
if self.archive_compress or compress:
archive_command = archive_command + '--compress '
options['archive_command'] += '--compress '
if overwrite:
archive_command = archive_command + '--overwrite '
options['archive_command'] += '--overwrite '
if os.name == 'posix':
archive_command = archive_command + '--wal-file-path=%p --wal-file-name=%f'
options['archive_command'] += '--wal-file-path=%p --wal-file-name=%f'
elif os.name == 'nt':
archive_command = archive_command + '--wal-file-path="%p" --wal-file-name="%f"'
options['archive_command'] += '--wal-file-path="%p" --wal-file-name="%f"'
node.append_conf(
'postgresql.auto.conf',
"archive_command = '{0}'".format(
archive_command))
self.set_auto_conf(node, options)
def set_auto_conf(self, node, options):
# parse postgresql.auto.conf
path = os.path.join(node.data_dir, 'postgresql.auto.conf')
with open(path, 'r') as f:
raw_content = f.read()
current_options = {}
for line in raw_content.splitlines():
# ignore comments
if line.startswith('#'):
continue
name, var = line.partition('=')[::2]
name = name.strip()
var = var.strip()
var = var.strip('"')
var = var.strip("'")
current_options[name] = var
for option in options:
current_options[option] = options[option]
auto_conf = ''
for option in current_options:
auto_conf += "{0} = '{1}'\n".format(
option, current_options[option])
with open(path, 'wt') as f:
f.write(auto_conf)
f.flush()
f.close()
def set_replica(
self, master, replica,