本文整理汇总了Python中testing_helpers.build_config_from_dicts函数的典型用法代码示例。如果您正苦于以下问题:Python build_config_from_dicts函数的具体用法?Python build_config_from_dicts怎么用?Python build_config_from_dicts使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了build_config_from_dicts函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_bad_init
def test_bad_init(self):
"""
Check the server is buildable with an empty configuration
"""
server = Server(build_config_from_dicts(
main_conf={
'conninfo': '',
'ssh_command': '',
}
).get_server('main'))
assert server.config.disabled
# ARCHIVER_OFF_BACKCOMPATIBILITY - START OF CODE
# # Check that either archiver or streaming_archiver are set
# server = Server(build_config_from_dicts(
# main_conf={
# 'archiver': 'off',
# 'streaming_archiver': 'off'
# }
# ).get_server('main'))
# assert server.config.disabled
# assert "No archiver enabled for server 'main'. " \
# "Please turn on 'archiver', 'streaming_archiver' or " \
# "both" in server.config.msg_list
# ARCHIVER_OFF_BACKCOMPATIBILITY - START OF CODE
server = Server(build_config_from_dicts(
main_conf={
'archiver': 'off',
'streaming_archiver': 'on',
'slot_name': ''
}
).get_server('main'))
assert server.config.disabled
assert "Streaming-only archiver requires 'streaming_conninfo' and " \
"'slot_name' options to be properly configured" \
in server.config.msg_list
示例2: test_get_server_with_conflicts
def test_get_server_with_conflicts(self, monkeypatch, capsys):
"""
Test get_server method using a configuration containing errors
:param monkeypatch monkeypatch: pytest patcher
"""
# Mock the args from argparse
args = Mock()
# conflicting directories
monkeypatch.setattr(barman, '__config__', build_config_from_dicts(
main_conf={
'wals_directory': '/some/barman/home/main/wals',
'basebackups_directory': '/some/barman/home/main/wals',
}))
args.server_name = 'main'
with pytest.raises(SystemExit):
get_server(args, True)
out, err = capsys.readouterr()
assert err
assert "ERROR: Conflicting path:" in err
# conflicting directories with on_error_stop=False
monkeypatch.setattr(barman, '__config__', build_config_from_dicts(
main_conf={
'wals_directory': '/some/barman/home/main/wals',
'basebackups_directory': '/some/barman/home/main/wals',
}))
args.server_name = 'main'
get_server(args, on_error_stop=False)
# In this case the server is returned and a warning message is emitted
out, err = capsys.readouterr()
assert err
assert "ERROR: Conflicting path:" in err
示例3: test_csv_values_recovery_options
def test_csv_values_recovery_options(self):
"""
Simple test for recovery_options values: '' and get-wal
test case
global value: recovery_options = ''
expected: recovery_options = None
test case
global value: recovery_options = 'get-wal'
expected: recovery_options = empty RecoveryOptions obj
"""
# Build configuration with empty recovery_options
c = build_config_from_dicts({'recovery_options': ''}, None)
main = c.get_server('main')
expected = build_config_dictionary({
'config': c,
'recovery_options': RecoveryOptions('', '', ''),
})
assert main.__dict__ == expected
# Build configuration with recovery_options set to get-wal
c = build_config_from_dicts({'recovery_options': 'get-wal'}, None)
main = c.get_server('main')
expected = build_config_dictionary({
'config': c,
'recovery_options': RecoveryOptions('get-wal', '', ''),
})
assert main.__dict__ == expected
示例4: test_populate_servers_following_symlink
def test_populate_servers_following_symlink(self, tmpdir):
"""
Test for the presence of conflicting paths in configuration between all
the servers
"""
incoming_dir = tmpdir.mkdir("incoming")
wals_dir = tmpdir.join("wal")
wals_dir.mksymlinkto(incoming_dir.strpath)
c = build_config_from_dicts(
global_conf=None,
main_conf={
'basebackups_directory': incoming_dir.strpath,
'incoming_wals_directory': incoming_dir.strpath,
'wals_directory': wals_dir.strpath,
'backup_directory': tmpdir.strpath,
})
c._populate_servers()
# If there is one or more path errors are present,
# the msg_list of the 'main' server is populated during
# the creation of the server configuration object
assert len(c._servers['main'].msg_list) == 2
symlink = 0
for msg in c._servers['main'].msg_list:
# Check for symlinks presence
if "(symlink to: " in msg:
symlink += 1
assert symlink == 1
示例5: test_populate_servers
def test_populate_servers(self):
"""
Test for the presence of conflicting paths in configuration between all
the servers
"""
c = build_config_from_dicts(
global_conf=None,
main_conf={
'basebackups_directory': '/some/barman/home/main/base',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
},
test_conf={
'basebackups_directory': '/some/barman/home/test/wals',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
})
# attribute servers_msg_list is empty before _populate_server()
assert len(c.servers_msg_list) == 0
c._populate_servers()
# after _populate_servers() if there is a global paths error
# servers_msg_list is created in configuration
assert c.servers_msg_list
assert len(c.servers_msg_list) == 4
示例6: test_get_server_list_global_error_continue
def test_get_server_list_global_error_continue(self, monkeypatch):
"""
Test the population of the list of global errors for diagnostic purposes
(diagnose invocation)
:param monkeypatch monkeypatch: pytest patcher
"""
monkeypatch.setattr(barman, '__config__', build_config_from_dicts(
global_conf=None,
main_conf={
'basebackups_directory': '/some/barman/home/main/base',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
},
test_conf={
'basebackups_directory': '/some/barman/home/test/wals',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
}))
server_dict = get_server_list(on_error_stop=False)
global_error_list = barman.__config__.servers_msg_list
# Check for the presence of servers
assert server_dict
# Check for the presence of global errors
assert global_error_list
assert len(global_error_list) == 4
示例7: test_csv_values_global_conflict
def test_csv_values_global_conflict(self, out_mock):
"""
test case
global value: backup_options = exclusive_backup, concurrent_backup
server value: backup_options =
expected: backup_options = exclusive_backup
Empty value is not allowed in BackupOptions class, so we expect the
configuration parser to fall back to the global value.
The global backup_options holds conflicting parameters, so we expect the
config builder to fall back to ignore de directive.
:param out_mock: Mock the output
"""
# build a string with conflicting values
conflict = "%s, %s" % (BackupOptions.EXCLUSIVE_BACKUP,
BackupOptions.CONCURRENT_BACKUP)
# add backup_options to minimal configuration string
c = build_config_from_dicts(
{'backup_options': conflict},
None)
main = c.get_server('main')
# create the expected dictionary
expected = build_config_dictionary({'config': main.config})
assert main.__dict__ == expected
# use the mocked output class to verify the presence of the warning
# for a bad configuration parameter
out_mock.warning.assert_called_with("Invalid configuration value '%s' "
"for key %s in %s: %s", None,
'backup_options',
'[barman] section', mock.ANY)
示例8: test_csv_values_invalid_server_value
def test_csv_values_invalid_server_value(self, out_mock):
"""
test case
global: backup_options = exclusive_backup
server: backup_options = none_of_your_business
result = backup_options = exclusive_backup
The 'none_of_your_business' value on server section,
is not an allowed value for the BackupOptions class,
We expect to the config builder to fallback to the global
'exclusive_backup' value
"""
# add backup_options to minimal configuration string
c = build_config_from_dicts(
{'backup_options': BackupOptions.EXCLUSIVE_BACKUP},
{'backup_options': 'none_of_your_business'})
main = c.get_server('main')
# create the expected dictionary
expected = build_config_dictionary({'config': main.config})
assert main.__dict__ == expected
# use the mocked output class to verify the presence of the warning
# for a bad configuration parameter
out_mock.warning.assert_called_with("Invalid configuration value '%s' "
"for key %s in %s: %s",
None, 'backup_options',
'[main] section', mock.ANY)
示例9: test_init
def test_init(self, tmpdir):
"""
Test the init method
"""
# Build a basic configuration
config = build_config_from_dicts({
'barman_lock_directory': tmpdir.strpath})
config.name = 'main'
# Acquire a lock and initialise the ProjectManager.
# Expect the ProjectManager to Retrieve the
# "Running process" identified by the lock
lock = ServerWalReceiveLock(tmpdir.strpath, 'main')
with lock:
pm = ProcessManager(config)
# Test for the length of the process list
assert len(pm.process_list) == 1
# Test for the server identifier of the process
assert pm.process_list[0].server_name == 'main'
# Test for the task type
assert pm.process_list[0].task == 'receive-wal'
# Read the pid from the lockfile and test id against the ProcessInfo
# contained in the process_list
with open(lock.filename, 'r') as lockfile:
pid = lockfile.read().strip()
assert int(pid) == pm.process_list[0].pid
# Test lock file parse error.
# Skip the lock and don't raise any exception.
with lock:
with open(lock.filename, 'w') as lockfile:
lockfile.write("invalid")
pm = ProcessManager(config)
assert len(pm.process_list) == 0
示例10: test_server_conflict_paths
def test_server_conflict_paths(self):
"""
Test for the presence of conflicting paths for a server
"""
# Build a configuration with conflicts:
# basebackups_directory = /some/barman/home/main/wals
# wals_directory = /some/barman/home/main/wals
c = build_config_from_dicts(main_conf={
'archiver': 'on',
'basebackups_directory': '/some/barman/home/main/wals',
'description': ' Text with quotes ',
})
main = c.get_server('main')
# create the expected dictionary
expected = build_config_dictionary({
'config': main.config,
'disabled': True,
'basebackups_directory': '/some/barman/home/main/wals',
'msg_list': [
'Conflicting path: wals_directory=/some/barman/home/main/wals '
'conflicts with \'basebackups_directory\' '
'for server \'main\''],
'description': 'Text with quotes',
})
assert main.__dict__ == expected
示例11: test_csv_values_multikey_invalid_server_value
def test_csv_values_multikey_invalid_server_value(self, out_mock):
"""
test case
global: backup_options = concurrent_backup
server: backup_options = exclusive_backup, none_of_your_business
result = backup_options = concurrent_backup
the 'none_of_your_business' value on server section invalidates the
whole csv string, because is not an allowed value of the BackupOptions
class.
We expect to fallback to the global 'concurrent_backup' value.
"""
# build a string with a wrong value
wrong_parameters = "%s, %s" % (BackupOptions.EXCLUSIVE_BACKUP,
'none_of_your_business')
# add backup_options to minimal configuration string
c = build_config_from_dicts(
{'backup_options': BackupOptions.CONCURRENT_BACKUP},
{'backup_options': wrong_parameters})
main = c.get_server('main')
# create the expected dictionary
expected = build_config_dictionary({
'config': main.config,
'backup_options': set(['concurrent_backup']),
})
assert main.__dict__ == expected
# use the mocked output class to verify the presence of the warning
# for a bad configuration parameter
out_mock.warning.assert_called_with("Invalid configuration value '%s' "
"for key %s in %s: %s", None,
'backup_options',
'[main] section', mock.ANY)
示例12: test_init
def test_init(self):
"""
Basic initialization test with minimal parameters
"""
server = Server(build_config_from_dicts(
global_conf={
'archiver': 'on'
}).get_server('main'))
assert not server.config.disabled
示例13: test_get_server_list
def test_get_server_list(self, monkeypatch, capsys):
"""
Test the get_server_list method
:param monkeypatch monkeypatch: pytest patcher
"""
monkeypatch.setattr(barman, '__config__', build_config_from_dicts())
server_dict = get_server_list()
assert server_dict
# Expect 2 test servers Main and Test
assert len(server_dict) == 2
# Test the method with global errors
monkeypatch.setattr(barman, '__config__', build_config_from_dicts(
global_conf=None,
main_conf={
'basebackups_directory': '/some/barman/home/main/base',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
'archiver': 'on',
},
test_conf={
'basebackups_directory': '/some/barman/home/test/wals',
'incoming_wals_directory': '/some/barman/home/main/incoming',
'wals_directory': '/some/barman/home/main/wals',
'backup_directory': '/some/barman/home/main',
'archiver': 'on',
}))
# Expect the method to fail and exit
with pytest.raises(SystemExit):
get_server_list()
out, err = capsys.readouterr()
# Check for the presence of error messages
assert err
# Check paths in error messages
assert 'Conflicting path: ' \
'basebackups_directory=/some/barman/home/main/base' in err
assert 'Conflicting path: ' \
'incoming_wals_directory=/some/barman/home/main/incoming' in err
assert 'Conflicting path: ' \
'wals_directory=/some/barman/home/main/wals' in err
assert 'Conflicting path: ' \
'backup_directory=/some/barman/home/main' in err
示例14: test_bad_init
def test_bad_init(self):
"""
Check the server is buildable with an empty configuration
"""
server = Server(build_config_from_dicts(
main_conf={
'conninfo': '',
'ssh_command': '',
}
).get_server('main'))
assert server.config.disabled
示例15: test_manage_server_command
def test_manage_server_command(self, monkeypatch, capsys):
"""
Test manage_server_command method checking
the various types of error output
:param monkeypatch monkeypatch: pytest patcher
"""
# Build a server with a config with path conflicts
monkeypatch.setattr(barman, '__config__', build_config_from_dicts(
main_conf=build_config_dictionary({
'wals_directory': '/some/barman/home/main/wals',
'basebackups_directory': '/some/barman/home/main/wals',
'archiver': 'on',
})))
server = Server(barman.__config__.get_server('main'))
# Test a not blocking WARNING message
manage_server_command(server)
out, err = capsys.readouterr()
# Expect an ERROR message because of conflicting paths
assert 'ERROR: Conflicting path' in err
# Build a server with a config without path conflicts
monkeypatch.setattr(barman, '__config__', build_config_from_dicts())
server = Server(barman.__config__.get_server('main'))
# Set the server as not active
server.config.active = False
# Request to treat inactive as errors
to_be_executed = manage_server_command(server, inactive_is_error=True)
out, err = capsys.readouterr()
# Expect a ERROR message because of a not active server
assert 'ERROR: Inactive server' in err
assert not to_be_executed
# Request to treat inactive as warning
to_be_executed = manage_server_command(server, inactive_is_error=False)
out, err = capsys.readouterr()
# Expect no error whatsoever
assert err == ''
assert not to_be_executed