tiramisu/test/test_storage.py

303 lines
9.7 KiB
Python
Raw Normal View History

# coding: utf-8
2017-07-09 09:49:03 +02:00
from .autopath import do_autopath
2015-07-24 17:54:10 +02:00
do_autopath()
2017-07-21 22:34:41 +02:00
from py.test import raises
2013-08-27 09:46:52 +02:00
2017-07-21 22:34:41 +02:00
from tiramisu.error import ConfigError
2013-08-27 09:46:52 +02:00
from tiramisu.config import Config
from tiramisu.option import BoolOption, OptionDescription
2017-07-04 19:59:42 +02:00
from tiramisu.setting import groups, owners
from tiramisu.storage import list_sessions, delete_session
2013-08-27 09:46:52 +02:00
def test_non_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
Config(o, session_id='test_non_persistent')
def test_list():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
c = Config(o, session_id='test_non_persistent')
2013-09-07 17:25:22 +02:00
c.cfgimpl_get_settings().remove('cache')
2017-07-04 19:59:42 +02:00
c.b = True
2014-04-12 22:47:52 +02:00
assert 'test_non_persistent' in list_sessions('config')
2013-08-27 09:46:52 +02:00
del(c)
2014-04-12 22:47:52 +02:00
assert 'test_non_persistent' not in list_sessions('config')
2013-08-27 09:46:52 +02:00
def test_create_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
2017-07-21 22:34:41 +02:00
def test_create_delete_not_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
Config(o, session_id='test_persistent', persistent=True)
except ValueError:
2017-07-22 16:26:06 +02:00
raises(ValueError, "delete_session('option', 'test_persistent')")
2017-07-21 22:34:41 +02:00
2013-08-27 09:46:52 +02:00
def test_list_sessions_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
2017-07-04 19:59:42 +02:00
c = Config(o, session_id='test_persistent', persistent=True)
c.b = True
2013-08-27 09:46:52 +02:00
except ValueError:
# storage is not persistent
pass
else:
2014-04-12 22:47:52 +02:00
assert 'test_persistent' in list_sessions('config')
2013-08-27 09:46:52 +02:00
def test_delete_session_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
2014-04-12 22:47:52 +02:00
assert 'test_persistent' in list_sessions('config')
delete_session('config', 'test_persistent')
2014-04-12 22:47:52 +02:00
assert 'test_persistent' not in list_sessions('config')
2013-08-27 09:46:52 +02:00
def test_create_persistent_retrieve():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
assert c.b is None
2013-08-27 09:46:52 +02:00
c.b = True
assert c.b is True
del(c)
c = Config(o, session_id='test_persistent', persistent=True)
assert c.b is True
2014-04-12 22:47:52 +02:00
assert 'test_persistent' in list_sessions('config')
delete_session('config', c.impl_getsessionid())
del(c)
2013-08-27 09:46:52 +02:00
c = Config(o, session_id='test_persistent', persistent=True)
assert c.b is None
delete_session('config', c.impl_getsessionid())
del(c)
2013-08-27 22:08:35 +02:00
2013-08-27 22:08:35 +02:00
def test_two_persistent():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
c.cfgimpl_get_settings().remove('cache')
2013-08-27 22:08:35 +02:00
c2 = Config(o, session_id='test_persistent', persistent=True)
2013-09-07 17:25:22 +02:00
c2.cfgimpl_get_settings().remove('cache')
2013-08-27 22:08:35 +02:00
assert c.b is None
assert c2.b is None
c.b = False
assert c.b is False
assert c2.b is False
c2.b = True
2013-08-27 22:08:35 +02:00
assert c.b is True
assert c2.b is True
delete_session('config', 'test_persistent')
def test_create_persistent_retrieve_owner():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
assert c.getowner(b) == owners.default
c.b = True
assert c.b is True
assert c.getowner(b) == owners.user
owners.addowner('persistentowner')
c.cfgimpl_get_values().setowner(b, owners.persistentowner)
assert c.getowner(b) == owners.persistentowner
del(c)
#
c = Config(o, session_id='test_persistent', persistent=True)
c.cfgimpl_get_values().setowner(b, owners.persistentowner)
delete_session('config', c.impl_getsessionid())
del(c)
#
c = Config(o, session_id='test_persistent', persistent=True)
assert c.b is None
assert c.getowner(b) == owners.default
delete_session('config', c.impl_getsessionid())
del(c)
2013-08-27 22:08:35 +02:00
2017-07-04 19:59:42 +02:00
def test_create_persistent_retrieve_owner_masterslaves():
a = BoolOption('a', '', multi=True)
b = BoolOption('b', '', multi=True)
o = OptionDescription('a', '', [a, b])
o.impl_set_group_type(groups.master)
o1 = OptionDescription('a', '', [o])
try:
c = Config(o1, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
assert c.getowner(a) == owners.default
assert c.getowner(b) == owners.default
c.a.a = [True]
c.a.a.append(False)
c.a.b[1] = True
assert c.getowner(a) == owners.user
assert c.getowner(b, 0) == owners.default
assert c.getowner(b, 1) == owners.user
owners.addowner('persistentowner2')
c.cfgimpl_get_values().setowner(b, owners.persistentowner2, 1)
c.a.b[0] = True
assert c.getowner(b, 0) == owners.user
assert c.getowner(b, 1) == owners.persistentowner2
del(c)
#
c = Config(o1, session_id='test_persistent', persistent=True)
assert c.getowner(b, 0) == owners.user
assert c.getowner(b, 1) == owners.persistentowner2
delete_session('config', c.impl_getsessionid())
del(c)
#
c = Config(o1, session_id='test_persistent', persistent=True)
assert c.a.b == []
assert c.getowner(b) == owners.default
delete_session('config', c.impl_getsessionid())
del(c)
2013-08-27 22:08:35 +02:00
def test_two_persistent_owner():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
2013-09-07 17:25:22 +02:00
c.cfgimpl_get_settings().remove('cache')
2013-08-27 22:08:35 +02:00
except ValueError:
# storage is not persistent
pass
else:
c2 = Config(o, session_id='test_persistent', persistent=True)
2013-09-07 17:25:22 +02:00
c2.cfgimpl_get_settings().remove('cache')
2013-08-27 22:08:35 +02:00
assert c.getowner(b) == owners.default
assert c2.getowner(b) == owners.default
c.b = False
assert c.getowner(b) == owners.user
assert c2.getowner(b) == owners.user
owners.addowner('persistent')
2013-08-27 22:08:35 +02:00
c.cfgimpl_get_values().setowner(b, owners.persistent)
assert c.getowner(b) == owners.persistent
assert c2.getowner(b) == owners.persistent
delete_session('config', 'test_persistent')
def test_create_persistent_retrieve_information():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
except ValueError:
# storage is not persistent
pass
else:
c.impl_set_information('info', 'string')
assert c.impl_get_information('info') == 'string'
del(c)
#
c = Config(o, session_id='test_persistent', persistent=True)
assert c.impl_get_information('info') == 'string'
delete_session('config', c.impl_getsessionid())
del(c)
#
c = Config(o, session_id='test_persistent', persistent=True)
assert c.impl_get_information('info', None) == None
delete_session('config', c.impl_getsessionid())
del(c)
def test_two_persistent_information():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
2013-09-07 17:25:22 +02:00
c.cfgimpl_get_settings().remove('cache')
except ValueError:
# storage is not persistent
pass
else:
c.impl_set_information('info', 'string')
assert c.impl_get_information('info') == 'string'
c2 = Config(o, session_id='test_persistent', persistent=True)
2013-09-07 17:25:22 +02:00
c2.cfgimpl_get_settings().remove('cache')
c2.cfgimpl_get_settings().remove('cache')
assert c2.impl_get_information('info') == 'string'
delete_session('config', 'test_persistent')
2017-07-04 19:59:42 +02:00
def test_two_different_persistents():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
c.cfgimpl_get_settings().remove('cache')
d = Config(o, session_id='test_persistent2', persistent=True)
d.cfgimpl_get_settings().remove('cache')
except ValueError:
# storage is not persistent
pass
else:
c.cfgimpl_get_settings()[b].append('test')
assert str(c.cfgimpl_get_settings()[b]) in ["['test']", "[u'test']"]
assert str(d.cfgimpl_get_settings()[b]) == "[]"
assert c.b is None
assert d.b is None
c.b = True
assert c.b == True
assert d.b is None
delete_session('config', 'test_persistent')
delete_session('config', 'test_persistent2')
2017-07-11 22:31:58 +02:00
def test_two_different_information():
b = BoolOption('b', '')
o = OptionDescription('od', '', [b])
try:
c = Config(o, session_id='test_persistent', persistent=True)
c.impl_set_information('a', 'a')
d = Config(o, session_id='test_persistent2', persistent=True)
d.impl_set_information('a', 'b')
except ValueError:
# storage is not persistent
pass
else:
assert c.impl_get_information('a') == 'a'
assert d.impl_get_information('a') == 'b'
delete_session('config', 'test_persistent')
delete_session('config', 'test_persistent2')