You've already forked pg_probackup
mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2025-07-16 07:14:15 +02:00
tests: support remote tests
This commit is contained in:
@ -19,6 +19,9 @@ Enable compatibility tests:
|
|||||||
Specify path to pg_probackup binary file. By default tests use <Path to Git repository>/pg_probackup/
|
Specify path to pg_probackup binary file. By default tests use <Path to Git repository>/pg_probackup/
|
||||||
export PGPROBACKUPBIN=<path to pg_probackup>
|
export PGPROBACKUPBIN=<path to pg_probackup>
|
||||||
|
|
||||||
|
Remote backup depends on key authentithication to local machine via ssh as current user.
|
||||||
|
PGPROBACKUP_SSH_REMOTE=ON
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
pip install testgres
|
pip install testgres
|
||||||
pip install psycopg2
|
pip install psycopg2
|
||||||
|
@ -264,6 +264,34 @@ class ProbackupTest(object):
|
|||||||
if self.verbose:
|
if self.verbose:
|
||||||
print('PGPROBACKUPBIN_OLD is not an executable file')
|
print('PGPROBACKUPBIN_OLD is not an executable file')
|
||||||
|
|
||||||
|
self.remote = False
|
||||||
|
self.remote_host = None
|
||||||
|
self.remote_port = None
|
||||||
|
self.remote_user = None
|
||||||
|
|
||||||
|
if 'PGPROBACKUP_SSH_REMOTE' in self.test_env:
|
||||||
|
self.remote = True
|
||||||
|
|
||||||
|
# if 'PGPROBACKUP_SSH_HOST' in self.test_env:
|
||||||
|
# self.remote_host = self.test_env['PGPROBACKUP_SSH_HOST']
|
||||||
|
# else
|
||||||
|
# print('PGPROBACKUP_SSH_HOST is not set')
|
||||||
|
# exit(1)
|
||||||
|
#
|
||||||
|
# if 'PGPROBACKUP_SSH_PORT' in self.test_env:
|
||||||
|
# self.remote_port = self.test_env['PGPROBACKUP_SSH_PORT']
|
||||||
|
# else
|
||||||
|
# print('PGPROBACKUP_SSH_PORT is not set')
|
||||||
|
# exit(1)
|
||||||
|
#
|
||||||
|
# if 'PGPROBACKUP_SSH_USER' in self.test_env:
|
||||||
|
# self.remote_user = self.test_env['PGPROBACKUP_SSH_USER']
|
||||||
|
# else
|
||||||
|
# print('PGPROBACKUP_SSH_USER is not set')
|
||||||
|
# exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def make_simple_node(
|
def make_simple_node(
|
||||||
self,
|
self,
|
||||||
base_dir=None,
|
base_dir=None,
|
||||||
@ -604,14 +632,19 @@ class ProbackupTest(object):
|
|||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
raise ProbackupException(e.output.decode('utf-8'), command)
|
raise ProbackupException(e.output.decode('utf-8'), command)
|
||||||
|
|
||||||
def init_pb(self, backup_dir, old_binary=False):
|
def init_pb(self, backup_dir, options=[], old_binary=False):
|
||||||
|
|
||||||
shutil.rmtree(backup_dir, ignore_errors=True)
|
shutil.rmtree(backup_dir, ignore_errors=True)
|
||||||
|
|
||||||
|
if self.remote:
|
||||||
|
options = options + [
|
||||||
|
'--remote-proto=ssh',
|
||||||
|
'--remote-host=localhost']
|
||||||
|
|
||||||
return self.run_pb([
|
return self.run_pb([
|
||||||
'init',
|
'init',
|
||||||
'-B', backup_dir
|
'-B', backup_dir
|
||||||
],
|
] + options,
|
||||||
old_binary=old_binary
|
old_binary=old_binary
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -624,6 +657,11 @@ class ProbackupTest(object):
|
|||||||
'-D', node.data_dir
|
'-D', node.data_dir
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if self.remote:
|
||||||
|
options = options + [
|
||||||
|
'--remote-proto=ssh',
|
||||||
|
'--remote-host=localhost']
|
||||||
|
|
||||||
return self.run_pb(cmd + options, old_binary=old_binary)
|
return self.run_pb(cmd + options, old_binary=old_binary)
|
||||||
|
|
||||||
def set_config(self, backup_dir, instance, old_binary=False, options=[]):
|
def set_config(self, backup_dir, instance, old_binary=False, options=[]):
|
||||||
@ -672,6 +710,11 @@ class ProbackupTest(object):
|
|||||||
'-d', 'postgres',
|
'-d', 'postgres',
|
||||||
'--instance={0}'.format(instance)
|
'--instance={0}'.format(instance)
|
||||||
]
|
]
|
||||||
|
if self.remote:
|
||||||
|
options = options + [
|
||||||
|
'--remote-proto=ssh',
|
||||||
|
'--remote-host=localhost']
|
||||||
|
|
||||||
if backup_type:
|
if backup_type:
|
||||||
cmd_list += ['-b', backup_type]
|
cmd_list += ['-b', backup_type]
|
||||||
|
|
||||||
@ -702,6 +745,11 @@ class ProbackupTest(object):
|
|||||||
'-D', data_dir,
|
'-D', data_dir,
|
||||||
'--instance={0}'.format(instance)
|
'--instance={0}'.format(instance)
|
||||||
]
|
]
|
||||||
|
if self.remote:
|
||||||
|
options = options + [
|
||||||
|
'--remote-proto=ssh',
|
||||||
|
'--remote-host=localhost']
|
||||||
|
|
||||||
if backup_id:
|
if backup_id:
|
||||||
cmd_list += ['-i', backup_id]
|
cmd_list += ['-i', backup_id]
|
||||||
|
|
||||||
@ -895,6 +943,9 @@ class ProbackupTest(object):
|
|||||||
backup_dir.replace("\\","\\\\"),
|
backup_dir.replace("\\","\\\\"),
|
||||||
instance)
|
instance)
|
||||||
|
|
||||||
|
if self.remote:
|
||||||
|
archive_command = archive_command + '--remote-proto=ssh --remote-host=localhost '
|
||||||
|
|
||||||
if self.archive_compress or compress:
|
if self.archive_compress or compress:
|
||||||
archive_command = archive_command + '--compress '
|
archive_command = archive_command + '--compress '
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user