本文整理汇总了Python中barman.compression.CompressionManager类的典型用法代码示例。如果您正苦于以下问题:Python CompressionManager类的具体用法?Python CompressionManager怎么用?Python CompressionManager使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CompressionManager类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_get_compressor_invalid
def test_get_compressor_invalid(self):
#prepare mock obj
config_mock = mock.Mock()
# check custom compression method creation
comp_manager = CompressionManager(config_mock)
assert comp_manager.get_compressor("test_compression") is None
示例2: test_get_compressor_bzip2
def test_get_compressor_bzip2(self):
#prepare mock obj
config_mock = mock.Mock()
config_mock.compression = "bzip2"
# check custom compression method creation
comp_manager = CompressionManager(config_mock)
assert comp_manager.get_compressor() is not None
示例3: test_get_compressor_custom
def test_get_compressor_custom(self):
#prepare mock obj
config_mock = mock.Mock()
config_mock.compression = "custom"
config_mock.custom_compression_filter = "test_custom_compression_filter"
config_mock.custom_decompression_filter = \
"test_custom_decompression_filter"
# check custom compression method creation
comp_manager = CompressionManager(config_mock)
assert comp_manager.get_compressor() is not None
示例4: __init__
def __init__(self, server):
'''Constructor'''
self.name = "default"
self.server = server
self.config = server.config
self.available_backups = {}
self.compression_manager = CompressionManager(self.config)
示例5: __init__
def __init__(self, server):
'''Constructor'''
self.name = "default"
self.server = server
self.config = server.config
self.available_backups = {}
self.compression_manager = CompressionManager(self.config)
# used for error messages
self.current_action = None
示例6: __init__
def __init__(self, server):
"""
Constructor
"""
super(BackupManager, self).__init__()
self.name = "default"
self.server = server
self.config = server.config
self._backup_cache = None
self.compression_manager = CompressionManager(self.config, server.path)
self.executor = None
try:
self.executor = RsyncBackupExecutor(self)
except SshCommandException as e:
self.config.disabled = True
self.config.msg_list.append(str(e).strip())
示例7: BackupManager
class BackupManager(RemoteStatusMixin):
"""Manager of the backup archive for a server"""
DEFAULT_STATUS_FILTER = (BackupInfo.DONE,)
def __init__(self, server):
"""
Constructor
"""
super(BackupManager, self).__init__()
self.server = server
self.config = server.config
self._backup_cache = None
self.compression_manager = CompressionManager(self.config, server.path)
self.executor = None
try:
if self.config.backup_method == "postgres":
self.executor = PostgresBackupExecutor(self)
else:
self.executor = RsyncBackupExecutor(self)
except SshCommandException as e:
self.config.disabled = True
self.config.msg_list.append(str(e).strip())
@property
def mode(self):
"""
Property defining the BackupInfo mode content
"""
if self.executor:
return self.executor.mode
return None
def get_available_backups(self, status_filter=DEFAULT_STATUS_FILTER):
"""
Get a list of available backups
:param status_filter: default DEFAULT_STATUS_FILTER. The status of
the backup list returned
"""
# If the filter is not a tuple, create a tuple using the filter
if not isinstance(status_filter, tuple):
status_filter = tuple(status_filter,)
# Load the cache if necessary
if self._backup_cache is None:
self._load_backup_cache()
# Filter the cache using the status filter tuple
backups = {}
for key, value in self._backup_cache.items():
if value.status in status_filter:
backups[key] = value
return backups
def _load_backup_cache(self):
"""
Populate the cache of the available backups, reading information
from disk.
"""
self._backup_cache = {}
# Load all the backups from disk reading the backup.info files
for filename in glob("%s/*/backup.info" %
self.config.basebackups_directory):
backup = BackupInfo(self.server, filename)
self._backup_cache[backup.backup_id] = backup
def backup_cache_add(self, backup_info):
"""
Register a BackupInfo object to the backup cache.
NOTE: Initialise the cache - in case it has not been done yet
:param barman.infofile.BackupInfo backup_info: the object we want to
register in the cache
"""
# Load the cache if needed
if self._backup_cache is None:
self._load_backup_cache()
# Insert the BackupInfo object into the cache
self._backup_cache[backup_info.backup_id] = backup_info
def backup_cache_remove(self, backup_info):
"""
Remove a BackupInfo object from the backup cache
This method _must_ be called after removing the object from disk.
:param barman.infofile.BackupInfo backup_info: the object we want to
remove from the cache
"""
# Nothing to do if the cache is not loaded
if self._backup_cache is None:
return
# Remove the BackupInfo object from the backups cache
del self._backup_cache[backup_info.backup_id]
def get_backup(self, backup_id):
"""
Return the backup information for the given backup id.
If the backup_id is None or backup.info file doesn't exists,
#.........这里部分代码省略.........
示例8: test_check_with_compression
def test_check_with_compression(self):
#prepare mock obj
config_mock = mock.Mock()
comp_manager = CompressionManager(config_mock)
assert comp_manager.check('test_compression') is False
示例9: test_check_compression_none
def test_check_compression_none(self):
#prepare mock obj
config_mock = mock.Mock()
config_mock.compression = "custom"
comp_manager = CompressionManager(config_mock)
assert comp_manager.check() is True
示例10: BackupManager
class BackupManager(object):
'''Manager of the backup archive for a server'''
DEFAULT_STATUS_FILTER = (BackupInfo.DONE,)
DANGEROUS_OPTIONS = ['data_directory', 'config_file', 'hba_file',
'ident_file', 'external_pid_file', 'ssl_cert_file',
'ssl_key_file', 'ssl_ca_file', 'ssl_crl_file',
'unix_socket_directory']
def __init__(self, server):
'''Constructor'''
self.name = "default"
self.server = server
self.config = server.config
self.available_backups = {}
self.compression_manager = CompressionManager(self.config)
# used for error messages
self.current_action = None
def get_available_backups(self, status_filter=DEFAULT_STATUS_FILTER):
'''
Get a list of available backups
:param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup list returned
'''
if not isinstance(status_filter, tuple):
status_filter = tuple(status_filter,)
if status_filter not in self.available_backups:
available_backups = {}
for filename in glob("%s/*/backup.info" % self.config.basebackups_directory):
backup = BackupInfo(self.server, filename)
if backup.status not in status_filter:
continue
available_backups[backup.backup_id] = backup
self.available_backups[status_filter] = available_backups
return available_backups
else:
return self.available_backups[status_filter]
def get_previous_backup(self, backup_id, status_filter=DEFAULT_STATUS_FILTER):
'''
Get the previous backup (if any) in the catalog
:param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup returned
'''
if not isinstance(status_filter, tuple):
status_filter = tuple(status_filter)
backup = BackupInfo(self.server, backup_id=backup_id)
available_backups = self.get_available_backups(status_filter + (backup.status,))
ids = sorted(available_backups.keys())
try:
current = ids.index(backup_id)
while current > 0:
res = available_backups[ids[current - 1]]
if res.status in status_filter:
return res
current -= 1
else:
return None
except ValueError:
raise Exception('Could not find backup_id %s' % backup_id)
def get_next_backup(self, backup_id, status_filter=DEFAULT_STATUS_FILTER):
'''
Get the next backup (if any) in the catalog
:param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup returned
'''
if not isinstance(status_filter, tuple):
status_filter = tuple(status_filter)
backup = BackupInfo(self.server, backup_id=backup_id)
available_backups = self.get_available_backups(status_filter + (backup.status,))
ids = sorted(available_backups.keys())
try:
current = ids.index(backup_id)
while current < (len(ids) - 1):
res = available_backups[ids[current + 1]]
if res.status in status_filter:
return res
current += 1
else:
return None
except ValueError:
raise Exception('Could not find backup_id %s' % backup_id)
def get_last_backup(self, status_filter=DEFAULT_STATUS_FILTER):
'''
Get the last backup (if any) in the catalog
:param status_filter: default DEFAULT_STATUS_FILTER. The status of the backup returned
'''
available_backups = self.get_available_backups(status_filter)
if len(available_backups) == 0:
return None
ids = sorted(available_backups.keys())
return ids[-1]
def get_first_backup(self, status_filter=DEFAULT_STATUS_FILTER):
'''
#.........这里部分代码省略.........
示例11: test_decode_history_file
def test_decode_history_file(self, tmpdir):
compressor = mock.Mock()
# Regular history file
p = tmpdir.join('00000002.history')
p.write('1\t2/83000168\tat restore point "myrp"\n')
wal_info = WalFileInfo.from_file(p.strpath)
result = xlog.HistoryFileData(
tli=2,
parent_tli=1,
reason='at restore point "myrp"',
switchpoint=0x283000168)
assert xlog.decode_history_file(wal_info, compressor) == [result]
assert len(compressor.mock_calls) == 0
# Comments must be skipped
p = tmpdir.join('00000003.history')
p.write('# Comment\n1\t2/83000168\tat restore point "testcomment"\n')
wal_info = WalFileInfo.from_file(p.strpath)
result = xlog.HistoryFileData(
tli=3,
parent_tli=1,
reason='at restore point "testcomment"',
switchpoint=0x283000168)
assert xlog.decode_history_file(wal_info, compressor) == [result]
assert len(compressor.mock_calls) == 0
# History file with comments and empty lines
p = tmpdir.join('00000004.history')
p.write('# Comment\n\n1\t2/83000168\ttesting "testemptyline"\n')
wal_info = WalFileInfo.from_file(p.strpath)
result = xlog.HistoryFileData(
tli=4,
parent_tli=1,
reason='testing "testemptyline"',
switchpoint=0x283000168)
assert xlog.decode_history_file(wal_info, compressor) == [result]
assert len(compressor.mock_calls) == 0
# Test compression handling Fix for bug #66 on github
config_mock = mock.Mock()
config_mock.compression = "gzip"
# check custom compression method creation
comp_manager = CompressionManager(config_mock, None)
u = tmpdir.join('00000005.uncompressed')
p = tmpdir.join('00000005.history')
u.write('1\t2/83000168\tat restore point "myrp"\n')
result = xlog.HistoryFileData(
tli=5,
parent_tli=1,
reason='at restore point "myrp"',
switchpoint=0x283000168)
comp_manager.get_compressor('gzip').compress(u.strpath,
p.strpath)
wal_info = WalFileInfo.from_file(p.strpath)
assert xlog.decode_history_file(wal_info, comp_manager) == [result]
with pytest.raises(barman.exceptions.BadHistoryFileContents):
# Empty file
p.write('')
assert xlog.decode_history_file(wal_info, compressor)
assert len(compressor.mock_calls) == 0
with pytest.raises(barman.exceptions.BadHistoryFileContents):
# Missing field
p.write('1\t2/83000168')
assert xlog.decode_history_file(wal_info, compressor)
assert len(compressor.mock_calls) == 0
with pytest.raises(barman.exceptions.BadHistoryFileContents):
# Unattended field
p.write('1\t2/83000168\tat restore point "myrp"\ttest')
assert xlog.decode_history_file(wal_info, compressor)
assert len(compressor.mock_calls) == 0