Admin Panel
import pytest
from amitools.vamos.libmgr import LibCfg, LibMgrCfg
from amitools.vamos.cfgcore import ConfigDict
def libmgr_cfg_lib_default_test():
lc = LibCfg()
assert lc.get_create_mode() == LibCfg.CREATE_MODE_AUTO
assert lc.get_force_version() is None
assert lc.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert lc.get_num_fake_funcs() == 0
txt = str(lc)
assert txt == "LibCfg(create_mode=auto, force_version=None, expunge_mode=last_close, num_fake_funcs=0)"
def libmgr_cfg_lib_custom_test():
lc = LibCfg(LibCfg.CREATE_MODE_OFF,
1, LibCfg.EXPUNGE_MODE_NO_MEM, 42)
assert lc.get_create_mode() == LibCfg.CREATE_MODE_OFF
assert lc.get_force_version() is 1
assert lc.get_expunge_mode() == LibCfg.EXPUNGE_MODE_NO_MEM
assert lc.get_num_fake_funcs() == 42
txt = str(lc)
assert txt == "LibCfg(create_mode=off, force_version=1, expunge_mode=no_mem, num_fake_funcs=42)"
def libmgr_cfg_lib_fail_test():
with pytest.raises(ValueError):
lc = LibCfg(create_mode="bla")
with pytest.raises(ValueError):
lc = LibCfg(expunge_mode="foo")
def libmgr_cfg_lib_eq_test():
lc1 = LibCfg()
lc2 = LibCfg()
assert lc1 == lc2
lc3 = LibCfg(force_version=1)
assert lc1 != lc3
def libmgr_cfg_mgr_lib_test():
lmc = LibMgrCfg()
lc = LibCfg(LibCfg.CREATE_MODE_OFF,
1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_lib_cfg('bla.library', lc)
assert lmc.get_lib_cfg("bla.library") == lc
assert lmc.get_lib_cfg("foo.library") == LibCfg()
lc2 = LibCfg(LibCfg.CREATE_MODE_AMIGA,
11, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_lib_cfg("foo.library", lc2)
assert lmc.get_lib_cfg("foo.library") == lc2
def libmgr_cfg_mgr_dev_test():
lmc = LibMgrCfg()
lc = LibCfg(LibCfg.CREATE_MODE_OFF,
1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_dev_cfg('bla.device', lc)
assert lmc.get_dev_cfg("bla.device") == lc
assert lmc.get_dev_cfg("foo.device") == LibCfg()
lc2 = LibCfg(LibCfg.CREATE_MODE_AMIGA,
11, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_dev_cfg("foo.device", lc2)
assert lmc.get_dev_cfg("foo.device") == lc2
def libmgr_cfg_mgr_lib_default_test():
lcd = LibCfg(LibCfg.CREATE_MODE_OFF, 1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc = LibMgrCfg(lib_default=lcd)
assert lmc.get_lib_cfg("bla.library") == lcd
lc = LibCfg(LibCfg.CREATE_MODE_OFF, 1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_lib_cfg("bla.library", lc)
assert lmc.get_lib_cfg("bla.library") == lc
def libmgr_cfg_mgr_dev_default_test():
lcd = LibCfg(LibCfg.CREATE_MODE_OFF, 1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc = LibMgrCfg(dev_default=lcd)
assert lmc.get_dev_cfg("bla.device") == lcd
lc = LibCfg(LibCfg.CREATE_MODE_OFF, 1, LibCfg.EXPUNGE_MODE_NO_MEM)
lmc.add_dev_cfg("bla.device", lc)
assert lmc.get_dev_cfg("bla.device") == lc
def libmgr_cfg_mgr_from_dict_default_test():
cfg = ConfigDict({
'libs': ConfigDict({
'*.library': ConfigDict({
'mode': 'fake',
'version': 23,
'expunge': 'shutdown',
'num_fake_funcs': 1
})
}),
'devs': ConfigDict({
'*.device': ConfigDict({
'mode': 'amiga',
'version': 42,
'expunge': 'last_close',
'num_fake_funcs': 2
})
})
})
mgr = LibMgrCfg.from_dict(cfg)
assert mgr
lib_default = mgr.get_lib_default()
assert lib_default
assert lib_default.get_create_mode() == LibCfg.CREATE_MODE_FAKE
assert lib_default.get_force_version() == 23
assert lib_default.get_expunge_mode() == LibCfg.EXPUNGE_MODE_SHUTDOWN
assert lib_default.get_num_fake_funcs() == 1
dev_default = mgr.get_dev_default()
assert dev_default
assert dev_default.get_create_mode() == LibCfg.CREATE_MODE_AMIGA
assert dev_default.get_force_version() == 42
assert dev_default.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert dev_default.get_num_fake_funcs() == 2
def get_custom_cfg():
return ConfigDict({
'libs': ConfigDict({
'*.library': ConfigDict({
'mode': 'fake',
'version': 23,
'expunge': 'shutdown',
'num_fake_funcs': 1
}),
'foo.library': ConfigDict({
'mode': 'amiga',
'version': 42,
'expunge': 'last_close',
'num_fake_funcs': 2
}),
'libs/foo.library': ConfigDict({
'mode': 'vamos',
'version': 43,
'expunge': 'last_close',
'num_fake_funcs': 10
})
}),
'devs': ConfigDict({
'*.device': ConfigDict({
'mode': 'amiga',
'version': 42,
'expunge': 'last_close',
'num_fake_funcs': 3
}),
'bar.device': ConfigDict({
'mode': 'fake',
'version': 23,
'expunge': 'shutdown',
'num_fake_funcs': 4
}),
'devs/bar.device': ConfigDict({
'mode': 'vamos',
'version': 43,
'expunge': 'last_close',
'num_fake_funcs': 11
})
})
})
def libmgr_cfg_mgr_from_dict_custom_test():
cfg = get_custom_cfg()
mgr = LibMgrCfg.from_dict(cfg)
assert mgr
lib_cfg = mgr.get_lib_cfg('foo.library')
assert lib_cfg
assert lib_cfg.get_create_mode() == LibCfg.CREATE_MODE_AMIGA
assert lib_cfg.get_force_version() == 42
assert lib_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert lib_cfg.get_num_fake_funcs() == 2
dev_cfg = mgr.get_dev_cfg('bar.device')
assert dev_cfg
assert dev_cfg.get_create_mode() == LibCfg.CREATE_MODE_FAKE
assert dev_cfg.get_force_version() == 23
assert dev_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_SHUTDOWN
assert dev_cfg.get_num_fake_funcs() == 4
def libmgr_cfg_mgr_auto_test():
cfg = get_custom_cfg()
mgr = LibMgrCfg.from_dict(cfg)
assert mgr
lib_cfg = mgr.get_cfg('foo.library')
assert lib_cfg
assert lib_cfg.get_create_mode() == LibCfg.CREATE_MODE_AMIGA
assert lib_cfg.get_force_version() == 42
assert lib_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert lib_cfg.get_num_fake_funcs() == 2
lib_default = mgr.get_cfg(['bla.library'])
assert lib_default
assert lib_default.get_create_mode() == LibCfg.CREATE_MODE_FAKE
assert lib_default.get_force_version() == 23
assert lib_default.get_expunge_mode() == LibCfg.EXPUNGE_MODE_SHUTDOWN
assert lib_default.get_num_fake_funcs() == 1
dev_cfg = mgr.get_cfg('bar.device')
assert dev_cfg
assert dev_cfg.get_create_mode() == LibCfg.CREATE_MODE_FAKE
assert dev_cfg.get_force_version() == 23
assert dev_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_SHUTDOWN
assert dev_cfg.get_num_fake_funcs() == 4
dev_default = mgr.get_cfg(['bla.device'])
assert dev_default
assert dev_default.get_create_mode() == LibCfg.CREATE_MODE_AMIGA
assert dev_default.get_force_version() == 42
assert dev_default.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert dev_default.get_num_fake_funcs() == 3
def libmgr_cfg_mgr_base_name_test():
cfg = get_custom_cfg()
mgr = LibMgrCfg.from_dict(cfg)
assert mgr
# fall back to 'foo.library' not the default
lib_cfg = mgr.get_cfg('bla/foo.library')
assert lib_cfg
assert lib_cfg.get_create_mode() == LibCfg.CREATE_MODE_AMIGA
assert lib_cfg.get_force_version() == 42
assert lib_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert lib_cfg.get_num_fake_funcs() == 2
# use exact match
lib_cfg = mgr.get_cfg('libs/foo.library')
assert lib_cfg
assert lib_cfg.get_create_mode() == LibCfg.CREATE_MODE_VAMOS
assert lib_cfg.get_force_version() == 43
assert lib_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert lib_cfg.get_num_fake_funcs() == 10
# fall back to 'bar.device' not the default
dev_cfg = mgr.get_cfg('baz/bar.device')
assert dev_cfg
assert dev_cfg.get_create_mode() == LibCfg.CREATE_MODE_FAKE
assert dev_cfg.get_force_version() == 23
assert dev_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_SHUTDOWN
assert dev_cfg.get_num_fake_funcs() == 4
# use exact match
dev_cfg = mgr.get_cfg('devs/bar.device')
assert dev_cfg
assert dev_cfg.get_create_mode() == LibCfg.CREATE_MODE_VAMOS
assert dev_cfg.get_force_version() == 43
assert dev_cfg.get_expunge_mode() == LibCfg.EXPUNGE_MODE_LAST_CLOSE
assert dev_cfg.get_num_fake_funcs() == 11
def libmgr_cfg_dump_test(capsys):
cfg = get_custom_cfg()
mgr = LibMgrCfg.from_dict(cfg)
mgr.dump()
captured = capsys.readouterr()
assert captured.out.splitlines() == [
"libs config:",
" default: LibCfg(create_mode=fake, force_version=23, expunge_mode=shutdown, num_fake_funcs=1)",
" lib 'foo.library': LibCfg(create_mode=amiga, force_version=42, expunge_mode=last_close, num_fake_funcs=2)",
" lib 'libs/foo.library': LibCfg(create_mode=vamos, force_version=43, expunge_mode=last_close, num_fake_funcs=10)",
"devs config:",
" default: LibCfg(create_mode=amiga, force_version=42, expunge_mode=last_close, num_fake_funcs=3)",
" dev 'bar.device': LibCfg(create_mode=fake, force_version=23, expunge_mode=shutdown, num_fake_funcs=4)",
" dev 'devs/bar.device': LibCfg(create_mode=vamos, force_version=43, expunge_mode=last_close, num_fake_funcs=11)"
]