remove all getapi in tests

This commit is contained in:
Emmanuel Garette 2018-08-15 08:35:22 +02:00
parent 6b6fa5e499
commit f6e963ae38
5 changed files with 689 additions and 1013 deletions

View File

@ -9,7 +9,7 @@ from tiramisu.option import BoolOption, IPOption, IntOption, StrOption, OptionDe
from tiramisu import Config
from tiramisu.error import ConfigError, PropertiesOptionError
from tiramisu.setting import groups
from tiramisu import getapi, undefined, Params, ParamValue, ParamOption
from tiramisu import undefined, Params, ParamValue, ParamOption
from tiramisu.api import TIRAMISU_VERSION
@ -46,14 +46,13 @@ def test_cache_config():
def test_cache():
od1 = make_description()
c = Config(od1)
api = getapi(c)
values = c._config.cfgimpl_get_values()
settings = c._config.cfgimpl_get_settings()
api.option('u1').value.get()
cfg = Config(od1)
values = cfg._config.cfgimpl_get_values()
settings = cfg._config.cfgimpl_get_settings()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.option('u2').value.get()
cfg.option('u2').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' in values._p_.get_cached()
@ -62,175 +61,146 @@ def test_cache():
def test_cache_importation():
od1 = make_description()
api = getapi(Config(od1))
api.option('u2').value.set(1)
export = api.value.exportation()
assert api.option.make_dict() == {'u1': [], 'u2': 1, 'u3': []}
api.option('u2').value.set(2)
assert api.option.make_dict() == {'u1': [], 'u2': 2, 'u3': []}
api.value.importation(export)
assert api.option.make_dict() == {'u1': [], 'u2': 1, 'u3': []}
cfg = Config(od1)
cfg.option('u2').value.set(1)
export = cfg.value.exportation()
assert cfg.option.make_dict() == {'u1': [], 'u2': 1, 'u3': []}
cfg.option('u2').value.set(2)
assert cfg.option.make_dict() == {'u1': [], 'u2': 2, 'u3': []}
cfg.value.importation(export)
assert cfg.option.make_dict() == {'u1': [], 'u2': 1, 'u3': []}
def test_cache_importation_property():
od1 = make_description()
api = getapi(Config(od1))
api.option('u2').property.add('prop')
export = api.property.exportation()
assert api.option('u2').property.get() == {'prop'}
api.option('u2').property.add('prop2')
assert api.option('u2').property.get() == {'prop', 'prop2'}
api.property.importation(export)
assert api.option('u2').property.get() == {'prop'}
cfg = Config(od1)
cfg.option('u2').property.add('prop')
export = cfg.property.exportation()
assert cfg.option('u2').property.get() == {'prop'}
cfg.option('u2').property.add('prop2')
assert cfg.option('u2').property.get() == {'prop', 'prop2'}
cfg.property.importation(export)
assert cfg.option('u2').property.get() == {'prop'}
def test_cache_importation_permissive():
od1 = make_description()
api = getapi(Config(od1))
api.option('u2').permissive.set(frozenset(['prop']))
export = api.permissive.exportation()
assert api.option('u2').permissive.get() == {'prop'}
api.option('u2').permissive.set(frozenset(['prop', 'prop2']))
assert api.option('u2').permissive.get() == {'prop', 'prop2'}
api.permissive.importation(export)
assert api.option('u2').permissive.get() == {'prop'}
#def test_get_cache():
# # force a value in cache, try if reget corrupted value
# od1 = make_description()
# c = Config(od1)
# api = getapi(c)
# values = c._config.cfgimpl_get_values()
# settings = c._config.cfgimpl_get_settings()
# ntime = time() + 1
# settings._p_.setcache('u1', set(['inject']), ntime, None)
# assert 'inject' in settings[od1.u1]
# values._p_.setcache('u1', 100, ntime, None)
# assert api.option('u1').value.get() == [100]
#def test_get_cache_no_expire():
# # force a value in cache, try if reget corrupted value
# od1 = make_description()
# c = Config(od1)
# api = getapi(c)
# values = c._config.cfgimpl_get_values()
# settings = c._config.cfgimpl_get_settings()
# settings._p_.setcache('u1', set(['inject2']), None, None)
# assert 'inject2' in settings[od1.u1]
# values._p_.setcache('u1', 200, None, None)
# assert api.option('u1').value.get() == [200]
cfg = Config(od1)
cfg.option('u2').permissive.set(frozenset(['prop']))
export = cfg.permissive.exportation()
assert cfg.option('u2').permissive.get() == {'prop'}
cfg.option('u2').permissive.set(frozenset(['prop', 'prop2']))
assert cfg.option('u2').permissive.get() == {'prop', 'prop2'}
cfg.permissive.importation(export)
assert cfg.option('u2').permissive.get() == {'prop'}
def test_cache_reset():
od1 = make_description()
c = Config(od1)
api = getapi(c)
values = c._config.cfgimpl_get_values()
settings = c._config.cfgimpl_get_settings()
cfg = Config(od1)
values = cfg._config.cfgimpl_get_values()
settings = cfg._config.cfgimpl_get_settings()
#when change a value
api.option('u1').value.get()
api.option('u2').value.get()
cfg.option('u1').value.get()
cfg.option('u2').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' in values._p_.get_cached()
assert 'u2' in settings._p_.get_cached()
assert 'u1' in values._p_.get_cached()
api.option('u2').value.set(1)
cfg.option('u2').value.set(1)
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' not in values._p_.get_cached()
assert 'u2' not in settings._p_.get_cached()
#when remove a value
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.option('u2').value.reset()
cfg.option('u2').value.reset()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' not in values._p_.get_cached()
assert 'u2' not in settings._p_.get_cached()
#when add/del property
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.option('u2').property.add('test')
cfg.option('u2').property.add('test')
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' not in values._p_.get_cached()
assert 'u2' not in settings._p_.get_cached()
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.option('u2').property.pop('test')
cfg.option('u2').property.pop('test')
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' not in values._p_.get_cached()
assert 'u2' not in settings._p_.get_cached()
#when enable/disabled property
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.property.add('test')
cfg.property.add('test')
assert 'u1' not in values._p_.get_cached()
assert 'u1' not in settings._p_.get_cached()
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.property.pop('test')
cfg.property.pop('test')
assert 'u1' not in values._p_.get_cached()
assert 'u1' not in settings._p_.get_cached()
def test_cache_reset_multi():
od1 = make_description()
c = Config(od1)
api = getapi(c)
values = c._config.cfgimpl_get_values()
settings = c._config.cfgimpl_get_settings()
api.option('u1').value.get()
api.option('u3').value.get()
cfg = Config(od1)
values = cfg._config.cfgimpl_get_values()
settings = cfg._config.cfgimpl_get_settings()
cfg.option('u1').value.get()
cfg.option('u3').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' in values._p_.get_cached()
assert 'u3' in settings._p_.get_cached()
#when change a value
api.option('u3').value.set([1])
cfg.option('u3').value.set([1])
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' not in values._p_.get_cached()
assert 'u3' not in settings._p_.get_cached()
#when append value
api.option('u1').value.get()
api.option('u3').value.get()
cfg.option('u1').value.get()
cfg.option('u3').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' in values._p_.get_cached()
assert 'u3' in settings._p_.get_cached()
api.option('u3').value.set([1, 1])
cfg.option('u3').value.set([1, 1])
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' not in values._p_.get_cached()
assert 'u3' not in settings._p_.get_cached()
#when pop value
api.option('u1').value.get()
api.option('u3').value.get()
cfg.option('u1').value.get()
cfg.option('u3').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' in values._p_.get_cached()
assert 'u3' in settings._p_.get_cached()
api.option('u3').value.set([1])
cfg.option('u3').value.set([1])
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' not in values._p_.get_cached()
assert 'u3' not in settings._p_.get_cached()
#when remove a value
api.option('u1').value.get()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
api.option('u3').value.reset()
cfg.option('u3').value.reset()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u3' not in values._p_.get_cached()
@ -239,168 +209,42 @@ def test_cache_reset_multi():
def test_reset_cache():
od1 = make_description()
c = Config(od1)
api = getapi(c)
values = c._config.cfgimpl_get_values()
settings = c._config.cfgimpl_get_settings()
api.option('u1').value.get()
cfg = Config(od1)
values = cfg._config.cfgimpl_get_values()
settings = cfg._config.cfgimpl_get_settings()
cfg.option('u1').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
c._config.cfgimpl_reset_cache(None, None)
cfg._config.cfgimpl_reset_cache(None, None)
assert 'u1' not in values._p_.get_cached()
assert 'u1' not in settings._p_.get_cached()
api.option('u1').value.get()
cfg.option('u1').value.get()
sleep(1)
api.option('u1').value.get()
cfg.option('u1').value.get()
sleep(1)
api.option('u2').value.get()
cfg.option('u2').value.get()
assert 'u1' in values._p_.get_cached()
assert 'u1' in settings._p_.get_cached()
assert 'u2' in values._p_.get_cached()
assert 'u2' in settings._p_.get_cached()
c._config.cfgimpl_reset_cache(None, None)
cfg._config.cfgimpl_reset_cache(None, None)
assert 'u1' not in values._p_.get_cached()
assert 'u1' not in settings._p_.get_cached()
assert 'u2' not in values._p_.get_cached()
assert 'u2' not in settings._p_.get_cached()
#def test_reset_cache_subconfig():
# od1 = make_description()
# od2 = OptionDescription('od2', '', [od1])
# c = Config(od2)
# api = getapi(c)
# values = c._config.cfgimpl_get_values()
# api.option('od1.u1').value.get()
# assert 'od1.u1' in values._p_.get_cached()
# c.od1.cfgimpl_reset_cache(None, None)
# assert 'od1.u1' not in values._p_.get_cached()
#def test_reset_cache_only_expired():
# od1 = make_description()
# c = Config(od1)
# api = getapi(c)
# api.property.add('expire')
# values = c._config.cfgimpl_get_values()
# settings = c._config.cfgimpl_get_settings()
# api.option('u1').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(True)
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# sleep(1)
# api.option('u1').value.get()
# sleep(1)
# api.option('u2').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# assert 'u2' in values._p_.get_cached()
# assert 'u2' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(True)
# assert 'u1' not in values._p_.get_cached()
# assert 'u1' not in settings._p_.get_cached()
# assert 'u2' in values._p_.get_cached()
# assert 'u2' in settings._p_.get_cached()
#def test_cache_not_expire():
# od1 = make_description()
# c = Config(od1)
# api = getapi(c)
# values = c._config.cfgimpl_get_values()
# settings = c._config.cfgimpl_get_settings()
# #api.property.pop('expire')
# api.option('u1').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(True)
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# sleep(1)
# api.option('u2').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# assert 'u2' in values._p_.get_cached()
# assert 'u2' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(True)
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# assert 'u2' in values._p_.get_cached()
# assert 'u2' in settings._p_.get_cached()
def test_cache_not_cache():
od1 = make_description()
c = Config(od1)
api = getapi(c)
values = c._config.cfgimpl_get_values()
settings = c._config.cfgimpl_get_settings()
api.property.pop('cache')
api.option('u1').value.get()
cfg = Config(od1)
values = cfg._config.cfgimpl_get_values()
settings = cfg._config.cfgimpl_get_settings()
cfg.property.pop('cache')
cfg.option('u1').value.get()
assert 'u1' not in values._p_.get_cached()
assert 'u1' not in settings._p_.get_cached()
#def test_reset_cache_only():
# od1 = make_description()
# c = Config(od1)
# api = getapi(c)
# values = c._config.cfgimpl_get_values()
# settings = c._config.cfgimpl_get_settings()
# api.option('u1').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(only=('values',))
# assert 'u1' not in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# api.option('u1').value.get()
# assert 'u1' in values._p_.get_cached()
# assert 'u1' in settings._p_.get_cached()
# c._config.cfgimpl_reset_cache(only=('settings',))
# assert 'u1' in values._p_.get_cached()
# assert 'u1' not in settings._p_.get_cached()
#def test_force_cache():
# u1 = IntOption('u1', '', multi=True)
# u2 = IntOption('u2', '')
# u3 = IntOption('u3', '', multi=True)
# u4 = IntOption('u4', '', properties=('disabled',))
# od = OptionDescription('od1', '', [u1, u2, u3, u4])
# c = Config(od)
# api = getapi(c)
# api.property.read_write()
# api.property.pop('expire')
# api.property.pop('disabled')
#
# c._config.cfgimpl_get_values().force_cache()
# compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'u1': {None: ([], None)},
# 'u2': {None: (None, None)},
# 'u3': {None: ([], None)},
# 'u4': {None: (None, None)}})
# compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'u1': {None: (set(['empty']), None)},
# 'u2': {None: (set([]), None)},
# 'u3': {None: (set(['empty']), None)},
# 'u4': {None: (set(['disabled']), None)}})
# api.property.read_only()
#
# c._config.cfgimpl_get_values().force_cache()
# compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'u1': {None: ([], None)},
# 'u2': {None: (None, None)},
# 'u3': {None: ([], None)}})
# compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'empty', 'everything_frozen', 'frozen', 'mandatory', 'validator', 'warnings']), None)},
# 'u1': {None: (set(['empty']), None)},
# 'u2': {None: (set([]), None)},
# 'u3': {None: (set(['empty']), None)},
# 'u4': {None: (set(['disabled']), None)}})
#
# c._config.cfgimpl_get_settings().remove('cache')
# raises(ConfigError, "c._config.cfgimpl_get_values().force_cache()")
def test_cache_master_slave():
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau", multi=True)
@ -408,14 +252,13 @@ def test_cache_master_slave():
#interface1.impl_set_group_type(groups.master)
maconfig = OptionDescription('toto', '', [interface1])
cfg = Config(maconfig)
api = getapi(cfg)
api.property.read_write()
cfg.property.read_write()
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {}
#
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
api.option('ip_admin_eth0.ip_admin_eth0').value.get()
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get()
cfg.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
cfg.option('ip_admin_eth0.ip_admin_eth0').value.get()
cfg.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get()
cache = cfg._config.cfgimpl_get_values()._p_.get_cached()
if TIRAMISU_VERSION == 2:
assert set(cache.keys()) == set(['ip_admin_eth0.ip_admin_eth0'])
@ -435,10 +278,10 @@ def test_cache_master_slave():
else:
assert set(cache['ip_admin_eth0.netmask_admin_eth0'].keys()) == set([0])
#
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2', '192.168.1.1'])
api.option('ip_admin_eth0.ip_admin_eth0').value.get()
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get()
api.option('ip_admin_eth0.netmask_admin_eth0', 1).value.get()
cfg.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2', '192.168.1.1'])
cfg.option('ip_admin_eth0.ip_admin_eth0').value.get()
cfg.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get()
cfg.option('ip_admin_eth0.netmask_admin_eth0', 1).value.get()
cache = cfg._config.cfgimpl_get_values()._p_.get_cached()
if TIRAMISU_VERSION == 2:
assert set(cache.keys()) == set(['ip_admin_eth0.ip_admin_eth0'])
@ -482,11 +325,10 @@ def test_cache_callback():
val5 = StrOption('val5', "", callback=return_value, callback_params=Params(kwargs={'value': ParamValue('yes')}), multi=True)
maconfig = OptionDescription('rootconfig', '', [val1, val2, val3, val4, val5])
cfg = Config(maconfig)
api = getapi(cfg)
api.property.read_write()
cfg.property.read_write()
if TIRAMISU_VERSION == 2:
api.property.pop('expire')
api.option.make_dict()
cfg.property.pop('expire')
cfg.option.make_dict()
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)}}
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val1': {None: ('val', None)},
@ -494,12 +336,12 @@ def test_cache_callback():
'val3': {None: ('yes', None)},
'val4': {None: ('val', None)},
'val5': {None: (['yes'], None)}})
api.option('val1').value.set('new')
cfg.option('val1').value.set('new')
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)}}
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val3': {None: ('yes', None)},
'val5': {None: (['yes'], None)}})
api.option.make_dict()
cfg.option.make_dict()
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)}}
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val1': {None: ('new', None)},
@ -507,7 +349,7 @@ def test_cache_callback():
'val3': {None: ('yes', None)},
'val4': {None: ('new', None)},
'val5': {None: (['yes'], None)}})
api.option('val3').value.set('new2')
cfg.option('val3').value.set('new2')
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)}}
@ -515,7 +357,7 @@ def test_cache_callback():
'val2': {None: ('new', None)},
'val4': {None: ('new', None)},
'val5': {None: (['yes'], None)}})
api.option.make_dict()
cfg.option.make_dict()
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)}}
@ -524,7 +366,7 @@ def test_cache_callback():
'val3': {None: ('new2', None)},
'val4': {None: ('new', None)},
'val5': {None: (['yes'], None)}})
api.option('val4').value.set('new3')
cfg.option('val4').value.set('new3')
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)},
@ -533,7 +375,7 @@ def test_cache_callback():
'val2': {None: ('new', None)},
'val3': {None: ('new2', None)},
'val5': {None: (['yes'], None)}})
api.option.make_dict()
cfg.option.make_dict()
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)},
@ -543,7 +385,7 @@ def test_cache_callback():
'val3': {None: ('new2', None)},
'val4': {None: ('new3', None)},
'val5': {None: (['yes'], None)}})
api.option('val5').value.set([undefined, 'new4'])
cfg.option('val5').value.set([undefined, 'new4'])
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)},
@ -553,7 +395,7 @@ def test_cache_callback():
'val2': {None: ('new', None)},
'val3': {None: ('new2', None)},
'val4': {None: ('new3', None)}})
api.option.make_dict()
cfg.option.make_dict()
#assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)},
# 'val3': {None: (set([]), None)},
@ -573,15 +415,14 @@ def test_cache_master_and_slaves_master():
#interface1.impl_set_group_type(groups.master)
maconfig = OptionDescription('rootconfig', '', [interface1])
cfg = Config(maconfig)
api = getapi(cfg)
api.property.read_write()
api.option.make_dict()
cfg.property.read_write()
cfg.option.make_dict()
global_props = ['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']
val1_props = []
val1_val1_props = ['empty']
val1_val2_props = []
if TIRAMISU_VERSION == 2:
api.property.pop('expire')
cfg.property.pop('expire')
global_props = set(global_props)
val1_props = set(val1_props)
val1_val1_props = set(val1_val1_props)
@ -604,11 +445,11 @@ def test_cache_master_and_slaves_master():
# len is 0 so don't get any value
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val1.val1': {None: ([], None)}})
#
api.option('val1.val1').value.set([undefined])
cfg.option('val1.val1').value.set([undefined])
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'val1': {None: (set([]), None)}})
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
api.option.make_dict()
cfg.option.make_dict()
if TIRAMISU_VERSION == 2:
val_val2 = [None]
val_val2_props = {None: (set(), None), 0: (set(), None)}
@ -623,9 +464,9 @@ def test_cache_master_and_slaves_master():
'val1.val2': val_val2_props})
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val1.val1': {None: ([None], None)},
'val1.val2': {idx_val2: (val_val2, None)}})
api.option('val1.val1').value.set([undefined, undefined])
api.option.make_dict()
api.option('val1.val2', 1).value.set('oui')
cfg.option('val1.val1').value.set([undefined, undefined])
cfg.option.make_dict()
cfg.option('val1.val2', 1).value.set('oui')
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'val1': {None: (set([]), None)}})
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
@ -652,15 +493,14 @@ def test_cache_master_callback():
#interface1.impl_set_group_type(groups.master)
maconfig = OptionDescription('rootconfig', '', [interface1])
cfg = Config(maconfig)
api = getapi(cfg)
api.property.read_write()
api.option.make_dict()
cfg.property.read_write()
cfg.option.make_dict()
global_props = ['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']
val1_props = []
val1_val1_props = ['empty']
val1_val2_props = []
if TIRAMISU_VERSION == 2:
api.property.pop('expire')
cfg.property.pop('expire')
global_props = set(global_props)
val1_props = set(val1_props)
val1_val1_props = set(val1_val1_props)
@ -679,12 +519,12 @@ def test_cache_master_callback():
'val1.val1': {None: (val1_val1_props, None)},
'val1.val2': {None: (val1_val2_props, None)}})
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'val1.val1': {None: ([], None)}})
api.option('val1.val1').value.set([undefined])
cfg.option('val1.val1').value.set([undefined])
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'val1': {None: (set([]), None)}})
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
api.option.make_dict()
cfg.option.make_dict()
#FIXMEassert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'val1': {None: (set([]), None)}}
#FIXMEassert cfg._config.cfgimpl_get_values()._p_.get_cached() == {'val1.val1': {None: ([None], None)},
@ -692,109 +532,55 @@ def test_cache_master_callback():
# }
#def test_cache_master_slave_different():
# b = IntOption('int', 'Test int option', default=[0], multi=True)
# c = StrOption('str', 'Test string option', multi=True)
# d = StrOption('str1', 'Test string option', requires=[{'option': c, 'expected': None, 'action': 'hidden', 'inverse': True}], multi=True)
# descr = MasterSlaves("int", "", [b, c, d])
# #descr.impl_set_group_type(groups.master)
# cfg = Config(descr)
# api = getapi(cfg)
# api.property.read_write()
# api.property.pop('expire')
# api.option.make_dict()
# compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'int': {None: ([0], None)},
# 'str': {None: ([None], None)},
# 'str1': {None: ([None], None)}})
# conver(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'int': {None: (set(['empty']), None)},
# 'str': {None: (set([]), None), 0: (set([]), None)},
# 'str1': {None: (set([]), None), 0: (set([]), None)}})
# api.option('int').value.set([0, 1])
# api.option.make_dict()
# compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'int': {None: ([0, 1], None)},
# 'str': {None: ([None, None], None)},
# 'str1': {None: ([None, None], None)}})
# compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'int': {None: (set(['empty']), None)},
# 'str': {None: (set([]), None), 0: (set([]), None), 1: (set([]), None)},
# 'str1': {None: (set([]), None), 0: (set([]), None), 1: (set([]), None)}})
#
# api.option('str', 1).value.set('1')
# api.option.make_dict()
# assert set(cfg._config.cfgimpl_get_values()._p_.get_cached().keys()) == set(['int', 'str', 'str1'])
# compare(cfg._config.cfgimpl_get_values()._p_.get_cached()['int'], {None: ([0, 1], None)})
# compare(cfg._config.cfgimpl_get_values()._p_.get_cached()['str'], {None: ([None, '1'], None)})
# assert cfg._config.cfgimpl_get_values()._p_.get_cached()['str1'][None][0][0] == None
# raises(PropertiesOptionError, "cfg._config.cfgimpl_get_values()._p_.get_cached()['str1'][None][0][1]")
# assert cfg._config.cfgimpl_get_values()._p_.get_cached()['str1'][None][1] == None
# compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
# 'int': {None: (set(['empty']), None)},
# 'str': {None: (set([]), None), 0: (set([]), None), 1: (set([]), None)},
# 'str1': {None: (set([]), None), 0: (set([]), None), 1: (set(['hidden']), None)}})
# api.property.read_only()
# assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
# assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {}
# api.option.make_dict()
# assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {'int': {None: ([0, 1], None)},
# 'str': {None: ([None, '1'], None)},
# 'str1': {None: ([None, None], None)}}
# assert cfg._config.cfgimpl_get_settings()._p_.get_cached() == {None: {None: (set(['cache', 'disabled', 'frozen', 'everything_frozen', 'validator', 'warnings', 'empty', 'mandatory', ]), None)},
# 'int': {None: (set(['empty']), None)},
# 'str': {None: (set([]), None), 0: (set([]), None), 1: (set([]), None)},
# 'str1': {None: (set([]), None), 0: (set([]), None), 1: (set(['hidden']), None)}}
def test_cache_requires():
a = BoolOption('activate_service', '', True)
b = IPOption('ip_address_service', '',
requires=[{'option': a, 'expected': False, 'action': 'disabled'}])
od = OptionDescription('service', '', [a, b])
c = Config(od)
api = getapi(c)
api.property.read_write()
cfg = Config(od)
cfg.property.read_write()
if TIRAMISU_VERSION == 2:
api.property.pop('expire')
assert c._config.cfgimpl_get_values()._p_.get_cached() == {}
assert api.option('ip_address_service').value.get() == None
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
cfg.property.pop('expire')
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
assert cfg.option('ip_address_service').value.get() == None
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
if TIRAMISU_VERSION == 2:
assert c._config.cfgimpl_get_values()._p_.get_cached() == {'ip_address_service': {None: (None, None)}}
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {'ip_address_service': {None: (None, None)}}
else:
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
'activate_service': {None: (True, None)}})
api.option.make_dict()
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
cfg.option.make_dict()
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
'activate_service': {None: (True, None)}})
api.option('ip_address_service').value.set('1.1.1.1')
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
cfg.option('ip_address_service').value.set('1.1.1.1')
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)}})
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'activate_service': {None: (True, None)}})
api.option.make_dict()
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'activate_service': {None: (True, None)}})
cfg.option.make_dict()
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: ('1.1.1.1', None)},
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: ('1.1.1.1', None)},
'activate_service': {None: (True, None)}})
api.option('activate_service').value.set(False)
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)}})
cfg.option('activate_service').value.set(False)
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)}})
assert c._config.cfgimpl_get_values()._p_.get_cached() == {}
api.option.make_dict()
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
cfg.option.make_dict()
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set(['disabled']), None)}})
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'activate_service': {None: (False, None)}})
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'activate_service': {None: (False, None)}})
def test_cache_global_properties():
@ -802,28 +588,27 @@ def test_cache_global_properties():
b = IPOption('ip_address_service', '',
requires=[{'option': a, 'expected': False, 'action': 'disabled'}])
od = OptionDescription('service', '', [a, b])
c = Config(od)
api = getapi(c)
api.property.read_write()
assert c._config.cfgimpl_get_values()._p_.get_cached() == {}
assert api.option('ip_address_service').value.get() == None
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
cfg = Config(od)
cfg.property.read_write()
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {}
assert cfg.option('ip_address_service').value.get() == None
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'disabled', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
if TIRAMISU_VERSION == 2:
assert c._config.cfgimpl_get_values()._p_.get_cached() == {'ip_address_service': {None: (None, None)}}
assert cfg._config.cfgimpl_get_values()._p_.get_cached() == {'ip_address_service': {None: (None, None)}}
else:
compare(c._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
compare(cfg._config.cfgimpl_get_values()._p_.get_cached(), {'ip_address_service': {None: (None, None)},
'activate_service': {None: (True, None)}})
api.property.pop('disabled')
assert api.option('ip_address_service').value.get() == None
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'frozen', 'hidden', 'validator', 'warnings']), None)},
cfg.property.pop('disabled')
assert cfg.option('ip_address_service').value.get() == None
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'frozen', 'hidden', 'validator', 'warnings']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
api.property.add('test')
assert api.option('ip_address_service').value.get() == None
compare(c._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'frozen', 'hidden', 'validator', 'warnings', 'test']), None)},
cfg.property.add('test')
assert cfg.option('ip_address_service').value.get() == None
compare(cfg._config.cfgimpl_get_settings()._p_.get_cached(), {None: {None: (set(['cache', 'frozen', 'hidden', 'validator', 'warnings', 'test']), None)},
'activate_service': {None: (set([]), None)},
'ip_address_service': {None: (set([]), None)}})
@ -833,16 +618,15 @@ def test_callback_value_incr():
val2 = IntOption('val2', "", callback=return_value, callback_params=Params(kwargs={'value': ParamOption(val1)}))
maconfig = OptionDescription('rootconfig', '', [val1, val2])
cfg = Config(maconfig)
api = getapi(cfg)
api.property.read_write()
assert api.option('val1').value.get() == 1
cfg.property.read_write()
assert cfg.option('val1').value.get() == 1
sleep(1)
assert api.option('val2').value.get() == 1
assert cfg.option('val2').value.get() == 1
sleep(1)
assert api.option('val1').value.get() == 1
assert api.option('val2').value.get() == 1
assert cfg.option('val1').value.get() == 1
assert cfg.option('val2').value.get() == 1
sleep(2)
assert api.option('val1').value.get() == 2
assert api.option('val2').value.get() == 2
assert api.option('val1').value.get() == 2
assert api.option('val2').value.get() == 2
assert cfg.option('val1').value.get() == 2
assert cfg.option('val2').value.get() == 2
assert cfg.option('val1').value.get() == 2
assert cfg.option('val2').value.get() == 2

View File

@ -8,7 +8,7 @@ from tiramisu.setting import owners
from tiramisu.option import ChoiceOption, StrOption, OptionDescription
from tiramisu import Config
from tiramisu.error import ConfigError
from tiramisu import getapi, undefined, Params, ParamValue, ParamOption
from tiramisu import undefined, Params, ParamValue, ParamOption
from tiramisu.api import TIRAMISU_VERSION
@ -32,92 +32,86 @@ def test_choiceoption():
choice = ChoiceOption('choice', '', values=('val1', 'val2'))
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
owner = api.owner.get()
assert api.option('choice').owner.get() == owners.default
assert api.option('choice').owner.isdefault()
cfg.property.read_write()
owner = cfg.owner.get()
assert cfg.option('choice').owner.get() == owners.default
assert cfg.option('choice').owner.isdefault()
#
api.option('choice').value.set('val1')
assert api.option('choice').owner.get() == owner
assert not api.option('choice').owner.isdefault()
cfg.option('choice').value.set('val1')
assert cfg.option('choice').owner.get() == owner
assert not cfg.option('choice').owner.isdefault()
#
api.option('choice').value.reset()
assert api.option('choice').owner.get() == owners.default
assert api.option('choice').owner.isdefault()
cfg.option('choice').value.reset()
assert cfg.option('choice').owner.get() == owners.default
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('choice').value.set('no')")
assert api.option('choice').owner.get() == owners.default
assert api.option('choice').owner.isdefault()
raises(ValueError, "cfg.option('choice').value.set('no')")
assert cfg.option('choice').owner.get() == owners.default
assert cfg.option('choice').owner.isdefault()
#
assert api.option('choice').value.list() == ('val1', 'val2')
assert cfg.option('choice').value.list() == ('val1', 'val2')
def test_choiceoption_function():
choice = ChoiceOption('choice', '', values=return_list)
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
owner = api.owner.get()
assert api.option('choice').owner.isdefault()
cfg.property.read_write()
owner = cfg.owner.get()
assert cfg.option('choice').owner.isdefault()
#
api.option('choice').value.set('val1')
assert api.option('choice').owner.get() == owner
cfg.option('choice').value.set('val1')
assert cfg.option('choice').owner.get() == owner
#
api.option('choice').value.reset()
assert api.option('choice').owner.isdefault()
cfg.option('choice').value.reset()
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('choice').value.set('no')")
assert api.option('choice').owner.isdefault()
raises(ValueError, "cfg.option('choice').value.set('no')")
assert cfg.option('choice').owner.isdefault()
#
assert api.option('choice').value.list() == ['val1', 'val2']
assert cfg.option('choice').value.list() == ['val1', 'val2']
def test_choiceoption_function_error():
choice = ChoiceOption('choice', '', values=return_error)
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
raises(ConfigError, "api.option('choice').value.set('val1')")
cfg.property.read_write()
raises(ConfigError, "cfg.option('choice').value.set('val1')")
def test_choiceoption_function_error_args():
choice = ChoiceOption('choice', '', values=return_error, values_params=Params((ParamValue('val1'),)))
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
raises(ConfigError, "api.option('choice').value.set('val1')")
cfg.property.read_write()
raises(ConfigError, "cfg.option('choice').value.set('val1')")
def test_choiceoption_function_error_kwargs():
choice = ChoiceOption('choice', '', values=return_error, values_params=Params(kwargs={'kwargs': ParamValue('val1')}))
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
raises(ConfigError, "api.option('choice').value.set('val1')")
cfg.property.read_write()
raises(ConfigError, "cfg.option('choice').value.set('val1')")
def test_choiceoption_calc_function():
choice = ChoiceOption('choice', "", values=return_calc_list, values_params=Params((ParamValue('val1'),)))
odesc = OptionDescription('od', '', [choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
owner = api.owner.get()
assert api.option('choice').owner.isdefault()
cfg.property.read_write()
owner = cfg.owner.get()
assert cfg.option('choice').owner.isdefault()
#
api.option('choice').value.set('val1')
assert api.option('choice').owner.get() == owner
cfg.option('choice').value.set('val1')
assert cfg.option('choice').owner.get() == owner
#
api.option('choice').value.reset()
assert api.option('choice').owner.isdefault()
cfg.option('choice').value.reset()
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('choice').value.set('no')")
assert api.option('choice').owner.isdefault()
raises(ValueError, "cfg.option('choice').value.set('no')")
assert cfg.option('choice').owner.isdefault()
def test_choiceoption_calc_opt_function():
@ -128,19 +122,18 @@ def test_choiceoption_calc_opt_function():
values_params=Params((ParamOption(str_),)))
odesc = OptionDescription('od', '', [str_, choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
owner = api.owner.get()
assert api.option('choice').owner.isdefault()
cfg.property.read_write()
owner = cfg.owner.get()
assert cfg.option('choice').owner.isdefault()
#
api.option('choice').value.set('val1')
assert api.option('choice').owner.get() == owner
cfg.option('choice').value.set('val1')
assert cfg.option('choice').owner.get() == owner
#
api.option('choice').value.reset()
assert api.option('choice').owner.isdefault()
cfg.option('choice').value.reset()
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('choice').value.set('no')")
assert api.option('choice').owner.isdefault()
raises(ValueError, "cfg.option('choice').value.set('no')")
assert cfg.option('choice').owner.isdefault()
def test_choiceoption_calc_opt_function_propertyerror():
@ -151,12 +144,11 @@ def test_choiceoption_calc_opt_function_propertyerror():
values_params=Params((ParamOption(str_),)))
odesc = OptionDescription('od', '', [str_, choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
cfg.property.read_write()
if TIRAMISU_VERSION == 2:
raises(ValueError, "api.option('choice').value.set('no')")
raises(ValueError, "cfg.option('choice').value.set('no')")
else:
raises(ConfigError, "api.option('choice').value.set('no')")
raises(ConfigError, "cfg.option('choice').value.set('no')")
def test_choiceoption_calc_opt_multi_function():
@ -175,27 +167,26 @@ def test_choiceoption_calc_opt_multi_function():
multi=True)
odesc = OptionDescription('od', '', [str_, choice, ch2])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
owner = api.owner.get()
assert api.option('choice').owner.isdefault()
assert api.option('choice').value.get() == []
cfg.property.read_write()
owner = cfg.owner.get()
assert cfg.option('choice').owner.isdefault()
assert cfg.option('choice').value.get() == []
#
api.option('choice').value.set(['val1'])
assert api.option('choice').owner.get() == owner
cfg.option('choice').value.set(['val1'])
assert cfg.option('choice').owner.get() == owner
#
raises(ValueError, "api.option('choice').value.set([undefined])")
raises(ValueError, "cfg.option('choice').value.set([undefined])")
#
api.option('choice').value.set(['val1'])
assert api.option('choice').owner.get() == owner
cfg.option('choice').value.set(['val1'])
assert cfg.option('choice').owner.get() == owner
#
api.option('choice').value.reset()
assert api.option('choice').owner.isdefault()
cfg.option('choice').value.reset()
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('choice').value.set('no')")
assert api.option('choice').owner.isdefault()
raises(ValueError, "cfg.option('choice').value.set('no')")
assert cfg.option('choice').owner.isdefault()
#
raises(ValueError, "api.option('ch2').value.get()")
raises(ValueError, "cfg.option('ch2').value.get()")
def test_choiceoption_calc_invalid():
@ -216,6 +207,5 @@ def test_choiceoption_calc_not_list():
multi=True)
odesc = OptionDescription('od', '', [str_, choice])
cfg = Config(odesc)
api = getapi(cfg)
api.property.read_write()
raises(ConfigError, "api.option('choice').value.set(['val1'])")
cfg.property.read_write()
raises(ConfigError, "cfg.option('choice').value.set(['val1'])")

View File

@ -7,7 +7,7 @@ do_autopath()
from tiramisu import Config, IntOption, FloatOption, StrOption, ChoiceOption, \
BoolOption, FilenameOption, UnicodeOption, SymLinkOption, IPOption, \
PortOption, NetworkOption, NetmaskOption, BroadcastOption, \
DomainnameOption, OptionDescription, getapi
DomainnameOption, OptionDescription
from tiramisu.error import PropertiesOptionError
@ -43,37 +43,6 @@ def _is_same_opt(opt1, opt2):
assert opt1 == opt2
#def test_iter_config():
# "iteration on config object"
# s = StrOption("string", "", default="string")
# s2 = StrOption("string2", "", default="string2")
# descr = OptionDescription("options", "", [s, s2])
# config = Config(descr)
# assert [(name, value) for name, value in config] == \
# [('string', 'string'), ('string2', 'string2')]
#
#
#def test_iter_config_property():
# "iteration on config object"
# s = StrOption("string", "", default="string", properties=('disabled',))
# s2 = StrOption("string2", "", default="string2")
# descr = OptionDescription("options", "", [s, s2])
# config = Config(descr)
# config.read_only()
# assert [(name, value) for name, value in config] == \
# [('string2', 'string2')]
#
#
#def test_iter_subconfig():
# "iteration on config sub object"
# descr = make_description()
# conf = Config(descr)
# for (name, value), (gname, gvalue) in \
# zip(conf.gc, [("name", "ref"), ("dummy", False)]):
# assert name == gname
# assert value == gvalue
def test_od_not_list():
b = BoolOption('bool', '', multi=True)
raises(ValueError, "OptionDescription('od', '', b)")
@ -93,19 +62,18 @@ def test_make_dict():
BoolOption("b", "", default=False, properties=('hidden',))]),
IntOption("int", "", default=42)])
config = Config(descr)
api = getapi(config)
api.property.read_write()
api.permissive.set(frozenset(['hidden']))
d = api.option.make_dict()
config.property.read_write()
config.permissive.set(frozenset(['hidden']))
d = config.option.make_dict()
assert d == {"s1.a": False, "int": 42}
api.option('int').value.set(43)
api.option('s1.a').value.set(True)
d = api.option.make_dict()
config.option('int').value.set(43)
config.option('s1.a').value.set(True)
d = config.option.make_dict()
assert d == {"s1.a": True, "int": 43}
d2 = api.option.make_dict(flatten=True)
d2 = config.option.make_dict(flatten=True)
assert d2 == {'a': True, 'int': 43}
raises(ValueError, 'd2 = api.option.make_dict(withvalue="3")')
d = api.forcepermissive.option.make_dict()
raises(ValueError, 'd2 = config.option.make_dict(withvalue="3")')
d = config.forcepermissive.option.make_dict()
assert d == {"s1.a": True, "s1.b": False, "int": 43}
@ -119,11 +87,10 @@ def test_make_dict_with_disabled():
BoolOption("b", "", default=False)], properties=('disabled',)),
IntOption("int", "", default=42)])
config = Config(descr)
api = getapi(config)
api.property.read_only()
assert api.option.make_dict() == {"s1.a": False, "int": 42}
assert api.forcepermissive.option.make_dict() == {"s1.a": False, "int": 42}
assert api.unrestraint.option.make_dict() == {"int": 42, "s1.a": False, "s1.b": False, "s2.a": False, "s2.b": False}
config.property.read_only()
assert config.option.make_dict() == {"s1.a": False, "int": 42}
assert config.forcepermissive.option.make_dict() == {"s1.a": False, "int": 42}
assert config.unrestraint.option.make_dict() == {"int": 42, "s1.a": False, "s1.b": False, "s2.a": False, "s2.b": False}
def test_make_dict_with_disabled_withoption():
@ -136,11 +103,10 @@ def test_make_dict_with_disabled_withoption():
BoolOption("b", "", default=False)], properties=('disabled',)),
IntOption("int", "", default=42)])
config = Config(descr)
api = getapi(config)
api.property.read_only()
assert api.option.make_dict(withoption="a") == {"s1.a": False}
assert api.forcepermissive.option.make_dict(withoption="a") == {"s1.a": False}
assert api.unrestraint.option.make_dict(withoption="a") == {"s1.a": False, "s1.b": False, "s2.a": False, "s2.b": False}
config.property.read_only()
assert config.option.make_dict(withoption="a") == {"s1.a": False}
assert config.forcepermissive.option.make_dict(withoption="a") == {"s1.a": False}
assert config.unrestraint.option.make_dict(withoption="a") == {"s1.a": False, "s1.b": False, "s2.a": False, "s2.b": False}
def test_make_dict_with_disabled_in_callback():
@ -153,9 +119,8 @@ def test_make_dict_with_disabled_in_callback():
BoolOption("b", "", default=False)], properties=('disabled',)),
IntOption("int", "", default=42)])
config = Config(descr)
api = getapi(config)
api.property.read_only()
d = api.option.make_dict()
config.property.read_only()
d = config.option.make_dict()
assert d == {"s1.a": False, "int": 42}
@ -171,37 +136,35 @@ def test_make_dict_fullpath():
IntOption("int", "", default=42)]),
IntOption("introot", "", default=42)])
config = Config(descr)
api = getapi(config)
api.property.read_only()
assert api.option.make_dict() == {"opt.s1.a": False, "opt.int": 42, "introot": 42}
assert api.option('opt').make_dict() == {"s1.a": False, "int": 42}
assert api.option.make_dict(fullpath=True) == {"opt.s1.a": False, "opt.int": 42, "introot": 42}
assert api.option('opt').make_dict(fullpath=True) == {"opt.s1.a": False, "opt.int": 42}
config.property.read_only()
assert config.option.make_dict() == {"opt.s1.a": False, "opt.int": 42, "introot": 42}
assert config.option('opt').make_dict() == {"s1.a": False, "int": 42}
assert config.option.make_dict(fullpath=True) == {"opt.s1.a": False, "opt.int": 42, "introot": 42}
assert config.option('opt').make_dict(fullpath=True) == {"opt.s1.a": False, "opt.int": 42}
def test_find_in_config():
"finds option in config"
descr = make_description()
conf = Config(descr)
api = getapi(conf)
api.property.read_only()
api.permissive.set(frozenset(['hidden']))
ret = api.option.find('dummy')
conf.property.read_only()
conf.permissive.set(frozenset(['hidden']))
ret = conf.option.find('dummy')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.dummy').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.dummy').option.get())
#
ret = api.option.find('dummy', first=True).option.get()
_is_same_opt(ret, api.option('gc.dummy').option.get())
ret = conf.option.find('dummy', first=True).option.get()
_is_same_opt(ret, conf.option('gc.dummy').option.get())
#
ret = api.option.find('float')
ret = conf.option.find('float')
assert len(ret) == 2
_is_same_opt(ret[0].option.get(), api.option('gc.float').option.get())
_is_same_opt(ret[1].option.get(), api.option('float').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.float').option.get())
_is_same_opt(ret[1].option.get(), conf.option('float').option.get())
#
_is_same_opt(api.option.find('bool', first=True).option.get(), api.option('gc.gc2.bool').option.get())
_is_same_opt(api.option.find('bool', value=True, first=True).option.get(), api.option('bool').option.get())
_is_same_opt(api.option.find('dummy', first=True).option.get(), api.option('gc.dummy').option.get())
_is_same_opt(api.option.find('float', first=True).option.get(), api.option('gc.float').option.get())
_is_same_opt(conf.option.find('bool', first=True).option.get(), conf.option('gc.gc2.bool').option.get())
_is_same_opt(conf.option.find('bool', value=True, first=True).option.get(), conf.option('bool').option.get())
_is_same_opt(conf.option.find('dummy', first=True).option.get(), conf.option('gc.dummy').option.get())
_is_same_opt(conf.option.find('float', first=True).option.get(), conf.option('gc.float').option.get())
#FIXME cannot find an option without name
#ret = conf.find(bytype=ChoiceOption)
#assert len(ret) == 2
@ -214,165 +177,109 @@ def test_find_in_config():
#_is_same_opt(ret[0], conf.unwrap_from_path('gc.name'))
#_is_same_opt(conf.find_first(byvalue='ref'), conf.unwrap_from_path('gc.name'))
#
ret = api.option.find('prop')
ret = conf.option.find('prop')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.prop').option.get())
#
ret = api.option.find('prop', value=None)
ret = api.option.find('prop')
ret = conf.option.find('prop', value=None)
ret = conf.option.find('prop')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.prop').option.get())
#
api.property.read_write()
raises(AttributeError, "assert api.option.find('prop').option.get()")
ret = api.unrestraint.option.find(name='prop')
conf.property.read_write()
raises(AttributeError, "assert conf.option.find('prop').option.get()")
ret = conf.unrestraint.option.find(name='prop')
assert len(ret) == 2
_is_same_opt(ret[0].option.get(), api.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(ret[1].option.get(), api.forcepermissive.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(ret[1].option.get(), conf.forcepermissive.option('gc.prop').option.get())
#
ret = api.forcepermissive.option.find('prop')
ret = conf.forcepermissive.option.find('prop')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.forcepermissive.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.forcepermissive.option('gc.prop').option.get())
#
_is_same_opt(api.forcepermissive.option.find('prop', first=True).option.get(), api.forcepermissive.option('gc.prop').option.get())
_is_same_opt(conf.forcepermissive.option.find('prop', first=True).option.get(), conf.forcepermissive.option('gc.prop').option.get())
# combinaison of filters
ret = api.unrestraint.option.find('prop', type=BoolOption)
ret = conf.unrestraint.option.find('prop', type=BoolOption)
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(api.unrestraint.option.find('prop', type=BoolOption, first=True).option.get(), api.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(conf.unrestraint.option.find('prop', type=BoolOption, first=True).option.get(), conf.unrestraint.option('gc.gc2.prop').option.get())
#
ret = api.option.find('dummy', value=False)
ret = conf.option.find('dummy', value=False)
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.dummy').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.dummy').option.get())
#
_is_same_opt(api.option.find('dummy', value=False, first=True).option.get(), api.option('gc.dummy').option.get())
_is_same_opt(conf.option.find('dummy', value=False, first=True).option.get(), conf.option('gc.dummy').option.get())
#subconfig
ret = api.option('gc').find('dummy')
ret = conf.option('gc').find('dummy')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.dummy').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.dummy').option.get())
#
ret = api.option('gc').find('float')
ret = conf.option('gc').find('float')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.float').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.float').option.get())
#
ret = api.option('gc').find('bool')
ret = conf.option('gc').find('bool')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.gc2.bool').option.get())
_is_same_opt(api.option('gc').find('bool', value=False, first=True).option.get(), api.option('gc.gc2.bool').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.gc2.bool').option.get())
_is_same_opt(conf.option('gc').find('bool', value=False, first=True).option.get(), conf.option('gc.gc2.bool').option.get())
#
raises(AttributeError, "assert api.option('gc').find('bool', value=True, first=True).option.get()")
raises(AttributeError, "assert conf.option('gc').find('bool', value=True, first=True).option.get()")
#
raises(AttributeError, "api.option('gc').find('wantref').option.get()")
raises(AttributeError, "conf.option('gc').find('wantref').option.get()")
#
ret = api.unrestraint.option('gc').find('prop')
ret = conf.unrestraint.option('gc').find('prop')
assert len(ret) == 2
_is_same_opt(ret[0].option.get(), api.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(ret[1].option.get(), api.forcepermissive.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.unrestraint.option('gc.gc2.prop').option.get())
_is_same_opt(ret[1].option.get(), conf.forcepermissive.option('gc.prop').option.get())
#
api.property.read_only()
ret = api.option('gc').find('prop')
conf.property.read_only()
ret = conf.option('gc').find('prop')
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), api.option('gc.prop').option.get())
_is_same_opt(ret[0].option.get(), conf.option('gc.prop').option.get())
# not OptionDescription
raises(AttributeError, "api.option.find('gc', first=True)")
raises(AttributeError, "api.option.find('gc2', first=True)")
raises(AttributeError, "conf.option.find('gc', first=True)")
raises(AttributeError, "conf.option.find('gc2', first=True)")
def test_find_multi():
b = BoolOption('bool', '', multi=True)
o = OptionDescription('od', '', [b])
conf = Config(o)
api = getapi(conf)
#
raises(AttributeError, "api.option.find('bool', value=True)")
raises(AttributeError, "api.option.find('bool', value=True, first=True)")
api.option('bool').value.set([False])
raises(AttributeError, "api.option.find('bool', value=True)")
raises(AttributeError, "api.option.find('bool', value=True, first=True)")
api.option('bool').value.set([False, False])
raises(AttributeError, "api.option.find('bool', value=True)")
raises(AttributeError, "api.option.find('bool', value=True, first=True)")
api.option('bool').value.set([False, False, True])
ret = api.option.find('bool', value=True)
raises(AttributeError, "conf.option.find('bool', value=True)")
raises(AttributeError, "conf.option.find('bool', value=True, first=True)")
conf.option('bool').value.set([False])
raises(AttributeError, "conf.option.find('bool', value=True)")
raises(AttributeError, "conf.option.find('bool', value=True, first=True)")
conf.option('bool').value.set([False, False])
raises(AttributeError, "conf.option.find('bool', value=True)")
raises(AttributeError, "conf.option.find('bool', value=True, first=True)")
conf.option('bool').value.set([False, False, True])
ret = conf.option.find('bool', value=True)
assert len(ret) == 1
_is_same_opt(ret[0].option.get(), b)
_is_same_opt(api.option.find('bool', value=True, first=True).option.get(), b)
_is_same_opt(conf.option.find('bool', value=True, first=True).option.get(), b)
def test_does_not_find_in_config():
descr = make_description()
conf = Config(descr)
api = getapi(conf)
api
raises(AttributeError, "api.option.find('IDontExist')")
raises(AttributeError, "conf.option.find('IDontExist')")
def test_filename():
a = FilenameOption('a', '')
o = OptionDescription('o', '', [a])
cfg = Config(o)
api = getapi(cfg)
api.option('a').value.set('/')
api.option('a').value.set('/tmp')
api.option('a').value.set('/tmp/')
api.option('a').value.set('/tmp/text.txt')
api.option('a').value.set('tmp')
api.option('a').value.set('tmp/')
api.option('a').value.set('tmp/text.txt')
raises(ValueError, "api.option('a').value.set('/tmp/with space.txt')")
raises(ValueError, "api.option('a').value.set('/tmp/with$.txt')")
#def test_iter_all():
# s = StrOption("string", "", default="string")
# s2 = StrOption("string2", "", default="string2")
# descr = OptionDescription("options", "", [s, s2])
# config = Config(descr)
# assert list(config.iter_all()) == [('string', 'string'), ('string2', 'string2')]
# for i in config.iter_all():
# #test StopIteration
# break
#
#
#def test_iter_all_force_permissive():
# s = StrOption("string", "", default="string")
# s2 = StrOption("string2", "", default="string2")
# s3 = StrOption("string3", "", default="string3", properties=('hidden',))
# descr = OptionDescription("options", "", [s, s2, s3])
# config = Config(descr)
# api = getapi(config)
# api.property.read_write()
# api.permissive.set(('hidden',))
# assert list(config.iter_all()) == [('string', 'string'), ('string2', 'string2')]
# assert list(config.iter_all(force_permissive=True)) == [('string', 'string'),
# ('string2', 'string2'),
# ('string3', 'string3')]
#
#
#def test_iter_all_prop():
# s = StrOption("string", "", default="string", properties=('disabled',))
# s2 = StrOption("string2", "", default="string2")
# descr = OptionDescription("options", "", [s, s2])
# config = Config(descr)
# api = getapi(config)
# api.property.read_only()
# assert list(config.iter_all()) == [('string2', 'string2')]
#def test_impl_getpaths():
# s = StrOption("string", "", default="string", properties=('disabled',))
# s2 = StrOption("string2", "", default="string2")
# s3 = StrOption("string3", "", default="string3")
# s4 = StrOption("string4", "", default="string4", properties=('hidden',))
# od = OptionDescription('od', '', [s3, s4])
# descr = OptionDescription("options", "", [s, s2, od])
# config = Config(descr)
# assert ['string', 'string2', 'od.string3', 'od.string4'] == config.cfgimpl_get_description().impl_getpaths()
# assert ['string', 'string2', 'od', 'od.string3', 'od.string4'] == config.cfgimpl_get_description().impl_getpaths(include_groups=True)
# config.read_write()
# raises(PropertiesOptionError, "config.od.string4")
# assert ['string', 'string2', 'od.string3', 'od.string4'] == config.cfgimpl_get_description().impl_getpaths()
# assert ['string', 'string2', 'od', 'od.string3', 'od.string4'] == config.cfgimpl_get_description().impl_getpaths(include_groups=True)
cfg.option('a').value.set('/')
cfg.option('a').value.set('/tmp')
cfg.option('a').value.set('/tmp/')
cfg.option('a').value.set('/tmp/text.txt')
cfg.option('a').value.set('tmp')
cfg.option('a').value.set('tmp/')
cfg.option('a').value.set('tmp/text.txt')
raises(ValueError, "cfg.option('a').value.set('/tmp/with space.txt')")
raises(ValueError, "cfg.option('a').value.set('/tmp/with$.txt')")
def test_invalid_option():
@ -429,10 +336,9 @@ def test_invalid_option():
raises(ValueError, "DomainnameOption('a', '', multi=True, default_multi=1)")
#def test_help():
# stro = StrOption('s', '', multi=True)
# od1 = OptionDescription('o', '', [stro])
# od2 = OptionDescription('o', '', [od1])
# cfg = Config(od2)
# api = getapi(cfg)
# api.help(_display=False, _valid=True)
def test_help():
stro = StrOption('s', '', multi=True)
od1 = OptionDescription('o', '', [stro])
od2 = OptionDescription('o', '', [od1])
cfg = Config(od2)
cfg.help(_display=False, _valid=True)

View File

@ -6,7 +6,7 @@ from py.test import raises
from tiramisu.setting import groups, owners
from tiramisu import IntOption, StrOption, NetworkOption, NetmaskOption, \
OptionDescription, MasterSlaves, Config, GroupConfig, MetaConfig, \
getapi, Params, ParamOption, ParamValue
Params, ParamOption, ParamValue
from tiramisu.error import ConfigError, ConflictError, PropertiesOptionError, SlaveError
owners.addowner('meta1')
@ -38,150 +38,143 @@ def make_metaconfig(double=False):
conf1 = Config(od2, session_id='conf1')
conf2 = Config(od2, session_id='conf2')
meta = MetaConfig([conf1, conf2], session_id='meta')
api = getapi(meta)
if double:
api.owner.set(owners.meta2)
meta.owner.set(owners.meta2)
meta = MetaConfig([meta])
api = getapi(meta)
api.property.read_write()
api.owner.set(owners.meta1)
return api
meta.property.read_write()
meta.owner.set(owners.meta1)
return meta
def test_unknown_config():
api = make_metaconfig()
raises(ConfigError, "api.config('unknown')")
meta = make_metaconfig()
raises(ConfigError, "meta.config('unknown')")
#FIXME ne pas mettre 2 meta dans une config
#FIXME ne pas mettre 2 OD differents dans un meta
def test_none():
api = make_metaconfig()
assert api.option('od1.i3').value.get() is api.config('conf1').option('od1.i3').value.get() is api.config('conf2').option('od1.i3').value.get() is None
assert api.option('od1.i3').owner.get() is api.config('conf1').option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.default
meta = make_metaconfig()
assert meta.option('od1.i3').value.get() is meta.config('conf1').option('od1.i3').value.get() is meta.config('conf2').option('od1.i3').value.get() is None
assert meta.option('od1.i3').owner.get() is meta.config('conf1').option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.default
#
api.option('od1.i3').value.set(3)
assert api.option('od1.i3').value.get() == api.config('conf1').option('od1.i3').value.get() == api.config('conf2').option('od1.i3').value.get() == 3
assert api.option('od1.i3').owner.get() is api.config('conf1').option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.meta1
meta.option('od1.i3').value.set(3)
assert meta.option('od1.i3').value.get() == meta.config('conf1').option('od1.i3').value.get() == meta.config('conf2').option('od1.i3').value.get() == 3
assert meta.option('od1.i3').owner.get() is meta.config('conf1').option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.meta1
#
api.config('conf1').option('od1.i3').value.set(2)
assert api.option('od1.i3').value.get() == api.config('conf2').option('od1.i3').value.get() == 3
assert api.config('conf1').option('od1.i3').value.get() == 2
assert api.option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.meta1
assert api.config('conf1').option('od1.i3').owner.get() is owners.user
meta.config('conf1').option('od1.i3').value.set(2)
assert meta.option('od1.i3').value.get() == meta.config('conf2').option('od1.i3').value.get() == 3
assert meta.config('conf1').option('od1.i3').value.get() == 2
assert meta.option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.meta1
assert meta.config('conf1').option('od1.i3').owner.get() is owners.user
#
api.option('od1.i3').value.set(4)
assert api.option('od1.i3').value.get() == api.config('conf2').option('od1.i3').value.get() == 4
assert api.config('conf1').option('od1.i3').value.get() == 2
assert api.option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.meta1
assert api.config('conf1').option('od1.i3').owner.get() is owners.user
meta.option('od1.i3').value.set(4)
assert meta.option('od1.i3').value.get() == meta.config('conf2').option('od1.i3').value.get() == 4
assert meta.config('conf1').option('od1.i3').value.get() == 2
assert meta.option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.meta1
assert meta.config('conf1').option('od1.i3').owner.get() is owners.user
#
api.option('od1.i3').value.reset()
assert api.option('od1.i3').value.get() is api.config('conf2').option('od1.i3').value.get() is None
assert api.config('conf1').option('od1.i3').value.get() == 2
assert api.option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.default
assert api.config('conf1').option('od1.i3').owner.get() is owners.user
meta.option('od1.i3').value.reset()
assert meta.option('od1.i3').value.get() is meta.config('conf2').option('od1.i3').value.get() is None
assert meta.config('conf1').option('od1.i3').value.get() == 2
assert meta.option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.default
assert meta.config('conf1').option('od1.i3').owner.get() is owners.user
#
api.config('conf1').option('od1.i3').value.reset()
assert api.option('od1.i3').value.get() is api.config('conf1').option('od1.i3').value.get() is api.config('conf2').option('od1.i3').value.get() is None
assert api.option('od1.i3').owner.get() is api.config('conf1').option('od1.i3').owner.get() is api.config('conf2').option('od1.i3').owner.get() is owners.default
meta.config('conf1').option('od1.i3').value.reset()
assert meta.option('od1.i3').value.get() is meta.config('conf1').option('od1.i3').value.get() is meta.config('conf2').option('od1.i3').value.get() is None
assert meta.option('od1.i3').owner.get() is meta.config('conf1').option('od1.i3').owner.get() is meta.config('conf2').option('od1.i3').owner.get() is owners.default
def test_default():
api = make_metaconfig()
assert api.option('od1.i2').value.get() == api.config('conf1').option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 1
assert api.option('od1.i2').owner.get() is api.config('conf1').option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.default
meta = make_metaconfig()
assert meta.option('od1.i2').value.get() == meta.config('conf1').option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 1
assert meta.option('od1.i2').owner.get() is meta.config('conf1').option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.default
#
api.option('od1.i2').value.set(3)
assert api.option('od1.i2').value.get() == api.config('conf1').option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 3
assert api.option('od1.i2').owner.get() is api.config('conf1').option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.meta1
meta.option('od1.i2').value.set(3)
assert meta.option('od1.i2').value.get() == meta.config('conf1').option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 3
assert meta.option('od1.i2').owner.get() is meta.config('conf1').option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.meta1
#
api.config('conf1').option('od1.i2').value.set(2)
assert api.option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 3
assert api.config('conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.meta1
assert api.config('conf1').option('od1.i2').owner.get() is owners.user
meta.config('conf1').option('od1.i2').value.set(2)
assert meta.option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 3
assert meta.config('conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.meta1
assert meta.config('conf1').option('od1.i2').owner.get() is owners.user
#
api.option('od1.i2').value.set(4)
assert api.option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 4
assert api.config('conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.meta1
assert api.config('conf1').option('od1.i2').owner.get() is owners.user
meta.option('od1.i2').value.set(4)
assert meta.option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 4
assert meta.config('conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.meta1
assert meta.config('conf1').option('od1.i2').owner.get() is owners.user
#
api.option('od1.i2').value.reset()
assert api.option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 1
assert api.config('conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.default
assert api.config('conf1').option('od1.i2').owner.get() is owners.user
meta.option('od1.i2').value.reset()
assert meta.option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 1
assert meta.config('conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.default
assert meta.config('conf1').option('od1.i2').owner.get() is owners.user
#
api.config('conf1').option('od1.i2').value.reset()
assert api.option('od1.i2').value.get() == api.config('conf1').option('od1.i2').value.get() == api.config('conf2').option('od1.i2').value.get() == 1
assert api.option('od1.i2').owner.get() is api.config('conf1').option('od1.i2').owner.get() is api.config('conf2').option('od1.i2').owner.get() is owners.default
meta.config('conf1').option('od1.i2').value.reset()
assert meta.option('od1.i2').value.get() == meta.config('conf1').option('od1.i2').value.get() == meta.config('conf2').option('od1.i2').value.get() == 1
assert meta.option('od1.i2').owner.get() is meta.config('conf1').option('od1.i2').owner.get() is meta.config('conf2').option('od1.i2').owner.get() is owners.default
def test_contexts():
api = make_metaconfig()
errors = api.value.set('od1.i2', 6, only_config=True)
assert api.option('od1.i2').value.get() == 1
assert api.option('od1.i2').owner.get() == owners.default
assert api.config('conf1').option('od1.i2').value.get() == api.config('conf1').option('od1.i2').value.get() == 6
assert api.config('conf1').option('od1.i2').owner.get() == api.config('conf1').option('od1.i2').owner.get() is owners.user
meta = make_metaconfig()
errors = meta.value.set('od1.i2', 6, only_config=True)
assert meta.option('od1.i2').value.get() == 1
assert meta.option('od1.i2').owner.get() == owners.default
assert meta.config('conf1').option('od1.i2').value.get() == meta.config('conf1').option('od1.i2').value.get() == 6
assert meta.config('conf1').option('od1.i2').owner.get() == meta.config('conf1').option('od1.i2').owner.get() is owners.user
assert len(errors) == 0
def test_find():
api = make_metaconfig()
ret = api.option.find('i2')
meta = make_metaconfig()
ret = meta.option.find('i2')
assert len(ret) == 1
assert 1 == ret[0].value.get()
assert 1 == api.option.find('i2', first=True).value.get()
assert api.option.make_dict() == {'od1.i4': 2, 'od1.i1': None, 'od1.i3': None,
assert 1 == meta.option.find('i2', first=True).value.get()
assert meta.option.make_dict() == {'od1.i4': 2, 'od1.i1': None, 'od1.i3': None,
'od1.i2': 1, 'od1.i5': [2]}
#def test_group_error():
# raises(ValueError, "GroupConfig('str')")
# raises(ValueError, "GroupConfig(['str'])")
def test_meta_meta():
api = make_metaconfig(double=True)
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf1').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 1
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf1').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.default
meta = make_metaconfig(double=True)
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf1').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 1
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf1').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.default
#
api.option('od1.i2').value.set(3)
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf1').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 3
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf1').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
meta.option('od1.i2').value.set(3)
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf1').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 3
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf1').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
#
api.config('meta.conf1').option('od1.i2').value.set(2)
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 3
assert api.config('meta.conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
assert api.config('meta.conf1').option('od1.i2').owner.get() is owners.user
meta.config('meta.conf1').option('od1.i2').value.set(2)
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 3
assert meta.config('meta.conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
assert meta.config('meta.conf1').option('od1.i2').owner.get() is owners.user
#
api.config('meta').option('od1.i2').value.set(4)
assert api.option('od1.i2').value.get() == 3
assert api.config('meta').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 4
assert api.config('meta.conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is owners.meta1
assert api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.meta2
assert api.config('meta.conf1').option('od1.i2').owner.get() is owners.user
meta.config('meta').option('od1.i2').value.set(4)
assert meta.option('od1.i2').value.get() == 3
assert meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 4
assert meta.config('meta.conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is owners.meta1
assert meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.meta2
assert meta.config('meta.conf1').option('od1.i2').owner.get() is owners.user
#
api.config('meta').option('od1.i2').value.reset()
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 3
assert api.config('meta.conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
assert api.config('meta.conf1').option('od1.i2').owner.get() is owners.user
meta.config('meta').option('od1.i2').value.reset()
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 3
assert meta.config('meta.conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.meta1
assert meta.config('meta.conf1').option('od1.i2').owner.get() is owners.user
#
api.option('od1.i2').value.reset()
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 1
assert api.config('meta.conf1').option('od1.i2').value.get() == 2
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.default
assert api.config('meta.conf1').option('od1.i2').owner.get() is owners.user
meta.option('od1.i2').value.reset()
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 1
assert meta.config('meta.conf1').option('od1.i2').value.get() == 2
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.default
assert meta.config('meta.conf1').option('od1.i2').owner.get() is owners.user
#
api.config('meta.conf1').option('od1.i2').value.reset()
assert api.option('od1.i2').value.get() == api.config('meta').option('od1.i2').value.get() == api.config('meta.conf1').option('od1.i2').value.get() == api.config('meta.conf2').option('od1.i2').value.get() == 1
assert api.option('od1.i2').owner.get() is api.config('meta').option('od1.i2').owner.get() is api.config('meta.conf1').option('od1.i2').owner.get() is api.config('meta.conf2').option('od1.i2').owner.get() is owners.default
meta.config('meta.conf1').option('od1.i2').value.reset()
assert meta.option('od1.i2').value.get() == meta.config('meta').option('od1.i2').value.get() == meta.config('meta.conf1').option('od1.i2').value.get() == meta.config('meta.conf2').option('od1.i2').value.get() == 1
assert meta.option('od1.i2').owner.get() is meta.config('meta').option('od1.i2').owner.get() is meta.config('meta.conf1').option('od1.i2').owner.get() is meta.config('meta.conf2').option('od1.i2').owner.get() is owners.default
def test_meta_new_config():
@ -201,27 +194,27 @@ def test_meta_new_config_wrong_name():
def test_meta_meta_set():
api = make_metaconfig(double=True)
errors1 = api.value.set('od1.i1', 7, only_config=True)
errors2 = api.value.set('od1.i6', 7, only_config=True)
meta = make_metaconfig(double=True)
errors1 = meta.value.set('od1.i1', 7, only_config=True)
errors2 = meta.value.set('od1.i6', 7, only_config=True)
assert len(errors1) == 0
assert len(errors2) == 2
meta = api._config.getconfig('meta')
meta = meta._config.getconfig('meta')
conf1 = meta.getconfig('conf1')
conf2 = meta.getconfig('conf2')
assert api.config('meta.conf1').option('od1.i1').value.get() == api.config('meta.conf2').option('od1.i1').value.get() == 7
assert [conf1, conf2] == api.config.find('i1', value=7, first=True).cfgimpl_get_children()
api.config('meta.conf1').option('od1.i1').value.set(8)
assert [conf1, conf2] == api.config.find('i1', first=True).cfgimpl_get_children()
assert [conf2] == api.config.find('i1', value=7, first=True).cfgimpl_get_children()
assert [conf1] == api.config.find('i1', value=8, first=True).cfgimpl_get_children()
assert [conf1, conf2] == api.config.find('i5', value=2, first=True).cfgimpl_get_children()
raises(AttributeError, "api.config.find('i1', value=10, first=True)")
raises(AttributeError, "api.config.find('not', value=10, first=True)")
raises(AttributeError, "api.config.find('i6', first=True)")
raises(ValueError, "api.value.set('od1.i6', 7, only_config=True, force_default=True)")
raises(ValueError, "api.value.set('od1.i6', 7, only_config=True, force_default_if_same=True)")
raises(ValueError, "api.value.set('od1.i6', 7, only_config=True, force_dont_change_value=True)")
assert meta.config('meta.conf1').option('od1.i1').value.get() == meta.config('meta.conf2').option('od1.i1').value.get() == 7
assert [conf1, conf2] == meta.config.find('i1', value=7, first=True).cfgimpl_get_children()
meta.config('meta.conf1').option('od1.i1').value.set(8)
assert [conf1, conf2] == meta.config.find('i1', first=True).cfgimpl_get_children()
assert [conf2] == meta.config.find('i1', value=7, first=True).cfgimpl_get_children()
assert [conf1] == meta.config.find('i1', value=8, first=True).cfgimpl_get_children()
assert [conf1, conf2] == meta.config.find('i5', value=2, first=True).cfgimpl_get_children()
raises(AttributeError, "meta.config.find('i1', value=10, first=True)")
raises(AttributeError, "meta.config.find('not', value=10, first=True)")
raises(AttributeError, "meta.config.find('i6', first=True)")
raises(ValueError, "meta.value.set('od1.i6', 7, only_config=True, force_default=True)")
raises(ValueError, "meta.value.set('od1.i6', 7, only_config=True, force_default_if_same=True)")
raises(ValueError, "meta.value.set('od1.i6', 7, only_config=True, force_dont_change_value=True)")
def test_not_meta():
@ -237,13 +230,12 @@ def test_not_meta():
raises(ConflictError, "GroupConfig([conf2, conf4], session_id='conf2')")
raises(ConflictError, "GroupConfig([conf2, conf2], session_id='conf8')")
grp = GroupConfig([conf1, conf2])
api = getapi(grp)
raises(ConfigError, "api.option('od1.i1').value.get()")
raises(ConfigError, "grp.option('od1.i1').value.get()")
conf1, conf2 = grp.config.list()
errors = api.value.set('od1.i1', 7)
errors = grp.value.set('od1.i1', 7)
assert len(errors) == 0
assert api.config('conf1').option('od1.i1').value.get() == api.config('conf2').option('od1.i1').value.get() == 7
assert api.config('conf1').option('od1.i1').owner.get() is api.config('conf2').option('od1.i1').owner.get() is owners.user
assert grp.config('conf1').option('od1.i1').value.get() == grp.config('conf2').option('od1.i1').value.get() == 7
assert grp.config('conf1').option('od1.i1').owner.get() is grp.config('conf2').option('od1.i1').owner.get() is owners.user
def test_group_find_firsts():
@ -253,8 +245,7 @@ def test_group_find_firsts():
conf1 = Config(od2, session_id='conf1')
conf2 = Config(od2, session_id='conf2')
grp = GroupConfig([conf1, conf2])
api = getapi(grp)
assert [conf1._config, conf2._config] == api.config.find('i1', first=True).cfgimpl_get_children()
assert [conf1._config, conf2._config] == grp.config.find('i1', first=True).cfgimpl_get_children()
def test_group_group():
@ -265,11 +256,10 @@ def test_group_group():
conf2 = Config(od2, session_id='conf10')
grp = GroupConfig([conf1, conf2], 'grp')
grp2 = GroupConfig([grp])
api = getapi(grp2)
errors = api.value.set('od1.i1', 2)
errors = grp2.value.set('od1.i1', 2)
assert len(errors) == 0
assert api.config('grp.conf9').option('od1.i1').value.get() == 2
assert api.config('grp.conf9').option('od1.i1').owner.get() is owners.user
assert grp2.config('grp.conf9').option('od1.i1').value.get() == 2
assert grp2.config('grp.conf9').option('od1.i1').owner.get() is owners.user
def test_meta_unconsistent():
@ -284,14 +274,14 @@ def test_meta_unconsistent():
conf2 = Config(od2, session_id='conf2')
conf3 = Config(od2, session_id='conf3')
conf4 = Config(od3, session_id='conf4')
api = getapi(MetaConfig([conf1, conf2]))
api.owner.set(owners.meta1)
meta = MetaConfig([conf1, conf2])
meta.owner.set(owners.meta1)
raises(TypeError, 'MetaConfig("string")')
#same descr but conf1 already in meta
raises(ValueError, "MetaConfig([conf1, conf3])")
#not same descr
raises(ValueError, "MetaConfig([conf3, conf4])")
raises(ConfigError, "api.config('conf1').property.read_only()")
raises(ConfigError, "meta.config('conf1').property.read_only()")
def test_meta_master_slaves():
@ -301,15 +291,15 @@ def test_meta_master_slaves():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_only()
assert [conf1._config, conf2._config] == api.config.find('ip_admin_eth0', first=True).cfgimpl_get_children()
assert [conf1._config, conf2._config] == api.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
api.property.read_write()
raises(AttributeError, "api.config.find('netmask_admin_eth0', first=True)")
assert [conf1._config, conf2._config] == api.unrestraint.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
api.property.read_only()
assert [conf1._config, conf2._config] == api.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
meta = MetaConfig([conf1, conf2])
meta.property.read_only()
assert [conf1._config, conf2._config] == meta.config.find('ip_admin_eth0', first=True).cfgimpl_get_children()
assert [conf1._config, conf2._config] == meta.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
meta.property.read_write()
raises(AttributeError, "meta.config.find('netmask_admin_eth0', first=True)")
assert [conf1._config, conf2._config] == meta.unrestraint.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
meta.property.read_only()
assert [conf1._config, conf2._config] == meta.config.find('netmask_admin_eth0', first=True).cfgimpl_get_children()
def test_meta_master_slaves_value2():
@ -320,22 +310,21 @@ def test_meta_master_slaves_value2():
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
meta = MetaConfig([conf1, conf2], session_id="meta")
api = getapi(meta)
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.8'])
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
#FIXME devrait raise ! assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0', 0).value.get() == None
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.8'])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
#FIXME devrait raise ! assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0', 0).value.get() == None
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.reset()
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.reset()
#
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.255.0'
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
meta.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.255.0'
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
def test_meta_master_slaves_value_default():
@ -345,20 +334,20 @@ def test_meta_master_slaves_value_default():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
meta = MetaConfig([conf1, conf2])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
#
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
meta.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
#
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.255.0'
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.255.0'
#
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == '255.255.0.0'
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None
def test_meta_master_slaves_owners():
@ -368,33 +357,33 @@ def test_meta_master_slaves_owners():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.owner.set(owners.meta1)
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
raises(SlaveError, "api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()")
meta = MetaConfig([conf1, conf2])
meta.owner.set(owners.meta1)
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
raises(SlaveError, "meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()")
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.user
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.user
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.reset()
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.reset()
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
#
api.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()
meta.option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.isdefault()
#
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.meta1
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.255.0')
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.meta1
#
api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.meta1
meta.option('ip_admin_eth0.netmask_admin_eth0', 0).value.set('255.255.0.0')
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.meta1
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.meta1
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.user
assert api.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.default
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.1'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() == owners.user
assert meta.config('conf1').option('ip_admin_eth0.netmask_admin_eth0', 0).owner.get() == owners.default
def test_meta_force_default():
@ -404,35 +393,35 @@ def test_meta_force_default():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
#
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.1'])
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.1'])
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
#
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.3'])
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.3'])
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
#
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default=True)
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
def test_meta_force_dont_change_value():
@ -442,24 +431,24 @@ def test_meta_force_dont_change_value():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_dont_change_value=True)
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_dont_change_value=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
def test_meta_force_default_if_same():
@ -469,39 +458,39 @@ def test_meta_force_default_if_same():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
#
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default_if_same=True)
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default_if_same=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.3'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.5'], force_default_if_same=True)
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.3'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.5'], force_default_if_same=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
def test_meta_force_default_if_same_and_dont_change():
@ -511,39 +500,39 @@ def test_meta_force_default_if_same_and_dont_change():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
#
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default_if_same=True, force_dont_change_value=True)
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.4'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.isdefault()
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default_if_same=True, force_dont_change_value=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.4']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.meta1
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
#
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.3'])
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.5'], force_default_if_same=True, force_dont_change_value=True)
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.3'])
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.5'], force_default_if_same=True, force_dont_change_value=True)
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.5']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.3']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').owner.get() is owners.user
def test_meta_force_default_and_dont_change():
@ -553,10 +542,10 @@ def test_meta_force_default_and_dont_change():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='rconf1')
conf2 = Config(od, session_id='rconf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
raises(ValueError, "api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default=True, force_dont_change_value=True)")
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
raises(ValueError, "meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.4'], force_default=True, force_dont_change_value=True)")
def test_meta_properties_meta():
@ -567,9 +556,9 @@ def test_meta_properties_meta():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
assert api.config('conf1').option.make_dict() == {}
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
assert meta.config('conf1').option.make_dict() == {}
def test_meta_exception_meta():
@ -580,8 +569,8 @@ def test_meta_exception_meta():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
raises(Exception, "conf1.make_dict()")
@ -593,20 +582,20 @@ def test_meta_callback():
val5 = StrOption('val5', "", callback=return_value, callback_params=Params(kwargs={'value': ParamValue('yes')}))
maconfig = OptionDescription('rootconfig', '', [val1, val2, val3, val4, val5])
cfg = Config(maconfig, session_id='cfg')
api = getapi(MetaConfig([cfg]))
api.property.read_write()
assert api.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'val', 'val1': 'val', 'val5': 'yes', 'val4': 'val'}
api.config('cfg').option('val1').value.set('new')
#assert api.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new'}
#api.config('cfg').option('val1').value.reset()
#api.option('val1').value.set('new')
#assert api.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new'}
#api.config('cfg').option('val4').value.set('new1')
#assert api.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new1'}
#api.config('cfg').option('val4').value.reset()
#api.option('val4').value.set('new1')
#assert api.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new1'}
#api.option('val4').value.reset()
meta = MetaConfig([cfg])
meta.property.read_write()
assert meta.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'val', 'val1': 'val', 'val5': 'yes', 'val4': 'val'}
meta.config('cfg').option('val1').value.set('new')
#assert meta.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new'}
#meta.config('cfg').option('val1').value.reset()
#meta.option('val1').value.set('new')
#assert meta.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new'}
#meta.config('cfg').option('val4').value.set('new1')
#assert meta.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new1'}
#meta.config('cfg').option('val4').value.reset()
#meta.option('val4').value.set('new1')
#assert meta.config('cfg').option.make_dict() == {'val3': 'yes', 'val2': 'new', 'val1': 'new', 'val5': 'yes', 'val4': 'new1'}
#meta.option('val4').value.reset()
def test_meta_callback_slave():
@ -618,38 +607,38 @@ def test_meta_callback_slave():
od = OptionDescription('root', '', [interface1])
maconfig = OptionDescription('rootconfig', '', [val, interface1])
cfg = Config(maconfig, session_id='cfg1')
api = getapi(MetaConfig([cfg]))
api.property.read_write()
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
api.config('cfg1').option('val').value.set('val1')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val1'], 'val1.val1': ['val1'], 'val1.val3': ['val1'], 'val': 'val1'}
api.config('cfg1').option('val').value.reset()
api.option('val').value.set('val1')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val1'], 'val1.val1': ['val1'], 'val1.val3': ['val1'], 'val': 'val1'}
api.option('val').value.reset()
api.config('cfg1').option('val1.val2', 0).value.set('val2')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
api.config('cfg1').option('val1.val2', 0).value.reset()
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
api.option('val1.val2', 0).value.set('val2')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
api.config('cfg1').option('val1.val3', 0).value.set('val6')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val6'], 'val': 'val'}
api.option('val1.val2', 0).value.reset()
api.config('cfg1').option('val1.val3', 0).value.reset()
api.config('cfg1').option('val1.val1').value.set(['val3'])
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val3'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
api.config('cfg1').option('val1.val1').value.reset()
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
api.option('val1.val1').value.set(['val3'])
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val3'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
api.config('cfg1').option('val1.val2', 0).value.set('val2')
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
api.option('val1.val1').value.set(['val3', 'rah'])
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2', 'rah'], 'val1.val1': ['val3', 'rah'], 'val1.val3': ['val3', 'rah'], 'val': 'val'}
api.option('val1.val1').value.pop(1)
api.option('val1.val1').value.set(['val4'])
assert api.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val4'], 'val1.val3': ['val4'], 'val': 'val'}
meta = MetaConfig([cfg])
meta.property.read_write()
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
meta.config('cfg1').option('val').value.set('val1')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val1'], 'val1.val1': ['val1'], 'val1.val3': ['val1'], 'val': 'val1'}
meta.config('cfg1').option('val').value.reset()
meta.option('val').value.set('val1')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val1'], 'val1.val1': ['val1'], 'val1.val3': ['val1'], 'val': 'val1'}
meta.option('val').value.reset()
meta.config('cfg1').option('val1.val2', 0).value.set('val2')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
meta.config('cfg1').option('val1.val2', 0).value.reset()
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
meta.option('val1.val2', 0).value.set('val2')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
meta.config('cfg1').option('val1.val3', 0).value.set('val6')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val'], 'val1.val3': ['val6'], 'val': 'val'}
meta.option('val1.val2', 0).value.reset()
meta.config('cfg1').option('val1.val3', 0).value.reset()
meta.config('cfg1').option('val1.val1').value.set(['val3'])
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val3'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
meta.config('cfg1').option('val1.val1').value.reset()
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val'], 'val1.val1': ['val'], 'val1.val3': ['val'], 'val': 'val'}
meta.option('val1.val1').value.set(['val3'])
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val3'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
meta.config('cfg1').option('val1.val2', 0).value.set('val2')
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val3'], 'val1.val3': ['val3'], 'val': 'val'}
meta.option('val1.val1').value.set(['val3', 'rah'])
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2', 'rah'], 'val1.val1': ['val3', 'rah'], 'val1.val3': ['val3', 'rah'], 'val': 'val'}
meta.option('val1.val1').value.pop(1)
meta.option('val1.val1').value.set(['val4'])
assert meta.config('cfg1').option.make_dict() == {'val1.val2': ['val2'], 'val1.val1': ['val4'], 'val1.val3': ['val4'], 'val': 'val'}
def test_meta_reset():
@ -659,25 +648,25 @@ def test_meta_reset():
od = OptionDescription('root', '', [interface1])
conf1 = Config(od, session_id='conf1')
conf2 = Config(od, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
api.owner.set('meta1')
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
errors = api.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.1'])
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
meta.owner.set('meta1')
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
errors = meta.value.set('ip_admin_eth0.ip_admin_eth0', ['192.168.1.1'])
assert len(errors) == 0
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
api.value.reset('ip_admin_eth0.ip_admin_eth0')
assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert api.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.set(['192.168.1.2'])
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.2']
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == ['192.168.1.1']
meta.value.reset('ip_admin_eth0.ip_admin_eth0')
assert meta.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf1').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
assert meta.config('conf2').option('ip_admin_eth0.ip_admin_eth0').value.get() == []
def test_meta_properties_meta_set_value():
@ -686,42 +675,42 @@ def test_meta_properties_meta_set_value():
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
conf1 = Config(interface1, session_id='conf1')
conf2 = Config(interface1, session_id='conf2')
api = getapi(MetaConfig([conf1, conf2]))
api.property.read_write()
assert api.config('conf1').option.make_dict() == {'ip_admin_eth0': ['192.168.1.1']}
ret = api.value.set('netmask_admin_eth0', ['255.255.255.255'], only_config=True)
meta = MetaConfig([conf1, conf2])
meta.property.read_write()
assert meta.config('conf1').option.make_dict() == {'ip_admin_eth0': ['192.168.1.1']}
ret = meta.value.set('netmask_admin_eth0', ['255.255.255.255'], only_config=True)
assert len(ret) == 2
assert isinstance(ret[0], PropertiesOptionError)
assert isinstance(ret[1], PropertiesOptionError)
del(ret)
ret = api.value.set('netmask_admin_eth0', ['255.255.255.255'], force_default=True)
ret = meta.value.set('netmask_admin_eth0', ['255.255.255.255'], force_default=True)
assert len(ret) == 1
assert isinstance(ret[0], PropertiesOptionError)
del(ret)
ret = api.value.set('netmask_admin_eth0', ['255.255.255.255'], force_dont_change_value=True)
ret = meta.value.set('netmask_admin_eth0', ['255.255.255.255'], force_dont_change_value=True)
assert len(ret) == 3
assert isinstance(ret[0], PropertiesOptionError)
assert isinstance(ret[1], PropertiesOptionError)
assert isinstance(ret[2], PropertiesOptionError)
del(ret)
ret = api.value.set('netmask_admin_eth0', ['255.255.255.255'], force_default_if_same=True)
ret = meta.value.set('netmask_admin_eth0', ['255.255.255.255'], force_default_if_same=True)
assert len(ret) == 1
assert isinstance(ret[0], PropertiesOptionError)
del(ret)
ret = api.value.set('ip_admin_eth0', '255.255.255.255', only_config=True)
ret = meta.value.set('ip_admin_eth0', '255.255.255.255', only_config=True)
assert len(ret) == 2
assert isinstance(ret[0], ValueError)
assert isinstance(ret[1], ValueError)
del(ret)
ret = api.value.set('ip_admin_eth0', '255.255.255.255', force_default=True)
ret = meta.value.set('ip_admin_eth0', '255.255.255.255', force_default=True)
assert len(ret) == 1
assert isinstance(ret[0], ValueError)
del(ret)
ret = api.value.set('ip_admin_eth0', '255.255.255.255', force_dont_change_value=True)
ret = meta.value.set('ip_admin_eth0', '255.255.255.255', force_dont_change_value=True)
assert len(ret) == 1
assert isinstance(ret[0], ValueError)
del(ret)
ret = api.value.set('ip_admin_eth0', '255.255.255.255', force_default_if_same=True)
ret = meta.value.set('ip_admin_eth0', '255.255.255.255', force_default_if_same=True)
assert len(ret) == 1
assert isinstance(ret[0], ValueError)
del(ret)

View File

@ -53,7 +53,10 @@ class TiramisuHelp:
modules.sort()
for module_name in modules:
module = self.registers[module_name]
instance_module = module(None)
try:
instance_module = module(None)
except TypeError:
instance_module = module(None, None, None)
if isinstance(instance_module, TiramisuDispatcher):
if _valid and not getdoc(module.__call__): # pragma: no cover
raise Exception('unknown doc for {}'.format('__call__'))
@ -143,9 +146,11 @@ class CommonTiramisuOption(CommonTiramisu):
self.option_bag = option_bag
self._name = name
self.subconfig = subconfig
self._get_option()
if option_bag.config_bag is not None and self.slave_need_index:
self._test_slave_index()
if option_bag is not None:
# for help()
self._get_option()
if option_bag.config_bag is not None and self.slave_need_index:
self._test_slave_index()
def _test_slave_index(self) -> None:
option = self.option_bag.option
@ -262,7 +267,9 @@ class TiramisuOptionOwner(CommonTiramisuOption):
super().__init__(name,
subconfig,
option_bag)
self.values = self.option_bag.config_bag.context.cfgimpl_get_values()
if option_bag is not None:
# for help()
self.values = self.option_bag.config_bag.context.cfgimpl_get_values()
def get(self):
"""get owner for a specified option"""
@ -298,7 +305,7 @@ class TiramisuOptionProperty(CommonTiramisuOption):
super().__init__(name,
subconfig,
option_bag)
if option_bag.config_bag:
if option_bag and option_bag.config_bag:
self.settings = option_bag.config_bag.context.cfgimpl_get_settings()
def get(self, apply_requires=True):
@ -350,7 +357,7 @@ class TiramisuOptionPermissive(CommonTiramisuOption):
super().__init__(name,
subconfig,
option_bag)
if option_bag.config_bag:
if option_bag and option_bag.config_bag:
self.settings = option_bag.config_bag.context.cfgimpl_get_settings()
def get(self):